http://pytorch123.com/FifthSection/Translation_S2S_Network/
https://zhuanlan.zhihu.com/p/44121378
1.3 Positional Encoding
除了主要的Encoder和Decoder,还有数据预处理的部分。Transformer抛弃了RNN,而RNN最大的优点就是在时间序列上对数据的抽象,所以文章中作者提出两种Positional Encoding的方法,将encoding后的数据与embedding数据求和,加入了相对位置信息。
这里作者提到了两种方法:
- 用不同频率的sine和cosine函数直接计算
- 学习出一份positional embedding(参考文献)
经过实验发现两者的结果一样,所以最后选择了第一种方法,公式如下:
![[å¬å¼]](https://i-blog.csdnimg.cn/blog_migrate/1dc060f5942fc9819ab32b2950270756.png)
![[公式]](https://i-blog.csdnimg.cn/blog_migrate/1dc060f5942fc9819ab32b2950270756.png)
作者提到,方法1的好处有两点:
- 任意位置的
都可以被
的线性函数表示,三角函数特性复习下:
![[公式]](https://i-blog.csdnimg.cn/blog_migrate/1dc060f5942fc9819ab32b2950270756.png)
![[公式]](https://i-blog.csdnimg.cn/blog_migrate/1dc060f5942fc9819ab32b2950270756.png)
2. 如果是学习到的positional embedding,(个人认为,没看论文)会像词向量一样受限于词典大小。也就是只能学习到“位置2对应的向量是(1,1,1,2)”这样的表示。所以用三角公式明显不受序列长度的限制,也就是可以对 比所遇到序列的更长的序列 进行表示。
本文深入探讨Transformer模型中的位置编码机制,解释其如何弥补RNN在处理时间序列数据上的优势,通过使用sine和cosine函数直接计算或学习position embedding来加入相对位置信息,最终选择三角函数方法并阐述其两大优点。
6313

被折叠的 条评论
为什么被折叠?



