在看深度学习的绝对位置编码和相对位置编码部分,知乎上解析文章倒是不少,但是看的云里雾里。
我理解绝对位置编码提出来是为了解决 transformer 不擅长读取顺序的问题,如果不加位置编码的话,那一个元素出现在任意位置,对计算结果的权重都是一样的,所以就加了个位置编码。
绝对位置编码实际操作上就是加个绝对数,比如规定矩阵输入长度为 10 的 1 维数据:
[0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9]
然后用三角函数给各个位置单独算个数,比如:
[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
然后直接一加得到
[0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9]
后面的注意力就能捕捉到输入的位置信息了。
如果上面说的没错的话相对位置编码到底是干啥的,看不懂。。。