在看深度学习的绝对位置编码和相对位置编码部分,知乎上解析文章倒是不少,但是看的云里雾里。
我理解绝对位置编码提出来是为了解决 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]
后面的注意力就能捕捉到输入的位置信息了。
如果上面说的没错的话相对位置编码到底是干啥的,看不懂。。。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.