找回密码
 立即注册
首页 业界区 安全 [07.25学习笔记] LLM常见的位置编码-1

[07.25学习笔记] LLM常见的位置编码-1

劳欣笑 2025-7-25 21:47:12
为什么需要位置编码?



  • 大模型在处理序列数据时,其内部的注意力机制是内容驱动的,只关注token的相似度,无法感知到token的位置信息,因此需要引入额外的信息来表达token所在的空间信息



sinusoidal位置编码

1.png



  • 基于embedding的维度d和其维度中具体的索引i以及token的位置pos进行编码
  • 同时使用sin和cos的值,这样能够避免周期导致的值相等混淆了模型对于位置的理解
  • 编码反映了token之间的相对关系而不是绝对关系,编码的差值与token位置的差值有关,且相邻的token编码值也相差较小:
2.png



  • 这里由公式可以得知,对于不同索引的维度,维度索引越大,频率越大,周期越短。对于低频情况,周期较长,同一个句子中的首尾token位置编码可能在这种周期下呈现较小的位置差异,这能够体现偏全局的位置信息,如这两个token处于同一个句子的信息;而高频周期较短的情况下,变化更为剧烈,值变化相对较大,对于相邻位置之间的微小差异更为敏感非常适合捕捉“token紧邻的顺序信息”



旋转位置编码(RoPE,Rotary Position Embedding)



  • sinusoidal编码对于相对位置的建模比较间接,而RoPE则是一种更为直接的相对位置建模方法
  • 传统的方式是将编码直接加到token embedding上,这样在计算注意力分数时仍然是依赖于两个token各自的位置, 并不会引入两个位置的差值
3.png



  • 而RoPE则是将位置信息编码进注意力机制中Query和Key向量的角度中,用复数旋转或2D旋转的方式,引入“相对位移”信息,最后的注意力分数与位置的差值相关:
4.png



  • RoPE相比于传统的正余弦编码,具有更强的外推能力。传统的正余弦编码每个词都有一个基于「第几位」的编码,比如第 1 位、第 99999 位,如果模型只见过最多第 1000 位,那么遇到第 99999 位时就会很懵逼,注意力分数变得不稳定,其他token“不知道”是不是该关注这个位置的内容。而RoPE只关注位置差值,一定程度上增加了模型的外推泛化能力

  • PS:个人疑问,如果说正余弦编码中,模型是因为无法看到没有出现的位置的token而导致注意力分数计算出现偏移,那使用RoPE也会出现差值范围的不一致,是否也会导致模型出现一定的分数计算偏移呢?(当然整体来说RoPE外推能力肯定更强)




ALiBi(Attention with Linear Biases)



  • 上述也提到了,正余弦编码方式下外推能力比较弱。即使旋转位置编码比正弦方法有所改进,但仍未达到令人满意的结果
  • ALiBi不显式修改embedding,而是直接在Attention Score上加「线性偏置」,让模型天然关注距离近的token,同时根据m每一个注意力的head会乘上一个预设好的斜率项(Slope)
5.png

6.png



  • 也就是说这种编码方法不像之前两种方法一样涉及模型的理解问题,而是简单在已有的分数上进行惩罚

来源:豆瓜网用户自行投稿发布,如果侵权,请联系站长删除

相关推荐

您需要登录后才可以回帖 登录 | 立即注册