近期,笔者深入研究了大模型中的位置编码工作。其中,Sinusoidal位置编码作为一篇基石性的研究,在"Attention Is All You Need"中首次被提出,为深度学习领域带来了革命性的Transformer架构。这种编码方法旨在解决Transformer在自然捕捉序列位置信息上的挑战。深入了解Sinusoidal位置编码不仅有助于领会其核心思想,还为我们理解其他如RoPE等位置编码算法提供了坚实的基础。
1. Sinusoidal位置编码的推导
在深度学习中,Transformer模型因其纯Attention机制而著称。由于这种机制的全对称性,模型天然满足恒等式katex is not defined ,导致Transformer无法有效识别输入序列的位置。这种对称性意味着,无论如何调换输入顺序,输出都保持不变。
为解决这一问题,研究者引入了位置编码,为每个输入位置加入一个独特的向量。当每个位置的编码向量都不同,这种对称性便被打破。
katex is not defined
为了深入探讨位置编码的性质,我们进一步将其简化为katex is not defined和katex is not defined两个位置上的编码,并采用泰勒展开到二阶进行近似。
katex is not defined
可以看到,最后一项是交互项,我们将它记为katex is not defined,希望它能表达一定的相对位置信息。
我们先假设katex is not defined是单位矩阵,此时katex is not defined是两个位置编码的内积,我们希望在这个简单的例子中该项表达的是相对位置信息,即存在某个函数katex is not defined使得
katex is not defined
这里的katex is not defined, katex is not defined是katex is not defined维向量,这里我们从最简单katex is not defined入手。对于2维向量,我们借助复数来推导,即将向量katex is not defined视为复数katex is not defined,根据复数乘法的运算法则,我们不难得到:
katex is not defined其中katex is not defined是katex is not defined的共轭复数,katex is not defined代表复数的实部。
为了满足式子 katex is not defined,我们假设存在复数 katex is not defined 使得 katex is not defined。进一步使用复数的指数形式,我们设
katex is not defined katex is not defined katex is not defined从这些等式中,我们得到 katex is not defined。这给出了两个结论:katex is not defined 和 katex is not defined。
对于等式katex is not defined ,当 katex is not defined 时,我们得到 katex is not defined。为了简化,假设 katex is not defined 为 1,这使得所有的位置编码都位于复平面的单位圆上。这样的选择使得位置编码仅由其相位角 katex is not defined 确定,而不是其长度或模。
对于等式katex is not defined,我们从中可以看到,当 katex is not defined 增加 1 时,katex is not defined 的差值是常数,即 katex is not defined。为了简化,我们可以设置一个常数 katex is not defined 使得 katex is not defined。因此,对于任何整数 katex is not defined,我们有:
katex is not defined这意味着 katex is not defined 是一个等差数列,其通解为 katex is not defined。
所以,结合上述推导和Euler's formula,我们可以表示2维的位置编码为:
katex is not defined这样,我们得到了位置编码 katex is not defined 的形式。
katex is not defined于是函数katex is not defined 的形式为
katex is not defined
向量的内积满足线性叠加,所以可以将任意偶数维的向量用多个二维向量来表示:
katex is not defined2. 远程衰减
Sinusoidal位置编码使用了katex is not defined,这个形式有一个良好的性质:它使得随着katex is not defined的增大,katex is not defined有着趋于零的趋势。
3. 一般情况
上述的推导是基于假设katex is not defined是单位矩阵,对于一般情况,katex is not defined由模型学习得到,也就是说至于具体需要什么位置信息,则由模型的训练自行决定。本编码只是提供了一种可能的相对位置编码的实现。
参考资料
- Transformer升级之路:1、Sinusoidal位置编码追根溯源
- https://www.zhihu.com/question/307293465/answer/1028613658