网络资料整理个人学习,感谢各位大神!(若侵则删)
问题12:位置编码有哪些
参考:一文通透位置编码:从标准位置编码、旋转位置编码RoPE到ALiBi、LLaMA 2 Long(含NTK-aware简介)-CSDN博客
https://zhuanlan.zhihu.com/p/674133494
RNN的结构包含了序列的时序信息,而Transformer却完全把时序信息给丢掉了,故为了解决时序的问题,Transformer的作者用了一个绝妙的办法:位置编码(Positional Encoding)。
位置编码从实现方式上大致可以分为2类:
- 绝对位置编码: 将位置信息融入到输入中
- 相对位置编码: 微调Attention结构,使其可以分辨不同位置的Token
绝对位置编码:
- 如果简单粗暴的话,直接给每个向量分配一个数字,比如1到1000之间
- 也可以用one-hot编码表示位置
- transformer论文中作者通过sin函数和cos函数交替来创建 positional encoding,其计算positional encoding的公式如下
其中,pos相当于是每个token在整个序列中的位置,相当于是0, 1, 2, 3...(看序列长度是多大,比如10,比如100),代表位置向量的维度(也是词embedding的维度,transformer论文中设置的512维)
至于i是embedding向量的位置下标对2求商并取整(可用双斜杠//表示整数除法,即求商并取整),它的取值范围是</