有谁能用大白话简单解释一下相对位置编码是什么意思吗?

297 天前
 FlyingBackscratc

在看深度学习的绝对位置编码和相对位置编码部分,知乎上解析文章倒是不少,但是看的云里雾里。

我理解绝对位置编码提出来是为了解决 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]

后面的注意力就能捕捉到输入的位置信息了。

如果上面说的没错的话相对位置编码到底是干啥的,看不懂。。。

1368 次点击
所在节点    程序员
7 条回复
Vanderick
296 天前
"""在 transformer 中,位置信息是去服务于“attention”去区分序列中不同位置 token:即不同 token ij 之间的前后次序以及间距"""
绝对位置编码是能缓解位置信息不足的问题,但是问题也不少啊,以你举的这个绝对位置编码之三角式为例(算是理论较优雅的了,比如一定的外推能力,一定的相对次序表达能力):
1. 这个三角 embedding 过完 attention 后,变成 cos 的形式,无法区分 token 前后次序
2. 而且这个 cos 形式的距离表达,在过 w 、q 的 project 后也会变形冲散,无法很好的区分 token 的间距
3. 这个三角式是预定义的,非可训练参数,不够灵活
FlyingBackscratc
296 天前
@Vanderick 外推性在有时在限制输入长度以后好像也不是那么重要。PE 理论有什么总结性的文章吗,现在业界普遍使用的是基于相对位置编码的技术?还是基于可训练位置编码的技术??
liangzhh25
296 天前
苏神博客里面 Transformer 升级之路系列里面有好些关于位置编码的文章,推荐看看,我也是刚学的小白。
按我的理解,绝对位置编码是给序列位置相关项,而相对位置编码是在绝对位置编码的推导下使 位置相关项 转化为 相对位置相关项。具体可以看 https://www.kexue.fm/archives/8130 的(3)式和(4)式
FlyingBackscratc
296 天前
@liangzhh25 说实话看不懂,需要一些工程角度的直观解释
baka009
295 天前
对一一个语言模型,假设预训练时最多见过长度为 4 的语句,且包含“三楼你好”和“你好四楼”,那么

使用绝对位置编码时,对于词语“你好”:
楼主你好:这词我认识,“你好”在 3 、4 位置,1 、2 位置是一个对象,意思是在和楼主问好
你好楼主:这词我认识,“你好”在 1 、2 位置,3 、4 位置是一个对象,意思是在和楼主问好
二楼你好:这词我认识,“你好”在 3 、4 位置,1 、2 位置是一个对象,意思是在和二楼问好
xx 楼主你好: 啥玩意?这词我认识,但是“你好”在 5 、6 位置代表什么意思啊?

使用相对位置编码训练后:
二楼你好:这词我认识,“你好”在某个两 token 对象的后面,意思是在和二楼问好
楼主你好: 这词我认识,“你好”在某个两 token 对象的后面,意思是在和楼主问好
今天楼主出门和小红约会,两人在地铁口见面后,小红说:“你好楼主。”:这词我认识,“你好”在某个两 token 对象的前面,意思是在和楼主问好。

如上所述,相对位置指的是 token 与 token 之间的相对位置,模型通过学习相对位置,能更好的捕捉局部的语义。而不会出现,“没见过,这词在这个位置是啥意思?”的情况。同时增强了模型的外推性。只用四长度语句训练后,能外推到更长的情景下。

PS ,这论坛注册完还要等好久才能回复,不然昨天就回复你了。。。
FlyingBackscratc
295 天前
@baka009 感谢,效果很直观,确实有外推性,而且应对输入的鲁棒性更强了。不过具体工程上对数值的操作是怎样的,比如有 1234 ,四个 token 的序列输入,难道是对于所有 attention ,分别生成不同的权重?然后最后还是通过加法的方法加起来?
baka009
232 天前
@FlyingBackscratc 吃到两个月的回复
可以看看这个文章
https://www.kexue.fm/archives/8130
相对编码 RoPE 的作者。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1009096

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX