大模型学习中的旋转位置编码和SwiGLU,你了解多少?🔍
- 内容介绍
- 文章标签
- 相关推荐
得了吧... 哎呀,最近读到的那篇关于大模型学习中旋转位置编码和SwiGLU的文章,我简直要把脑子炸开了!先说说我自己的感受:这两项技术像是给 Transformer 的穿上了一双“神秘的鞋”, 让它们在长序列里跑得更快、更稳。别看我平时写代码都能把公式敲得一清二楚,但这两套技术还是让我眼花缭乱。
旋转位置编码的神奇之处
传统的绝对位置编码用 sin/cos 给每个 token 加上一个固定向量,感觉就像给每个点贴了一个身份证号。可它有两个大缺点:

- 只能记住固定长度序列,外推性差。
- 不直接体现相对位置信息,只是把“编号”塞进去。
而 RoPE 的核心思想是:直接在 Q/K 上做旋转把不同的位置对应不同的旋转角度。 精神内耗。 这样做后注意力点积只会依赖于角度差,即相对位置。公式很简单:
Q' = Rθ_m Q
K' = Rθ_n K
Q' · K' = Q^T Rθ_m^T Rθ_n K = Q^T R K
一句话:RoPE 让模型本能地学到“离多远比较重要”, 切记... 而不是死记某个编号对应什么向量。
为什么叫“旋转”?
我明白了。 你可以想象成把二维坐标系里的点 按角度 θ 旋转:
=
RoPE 就把 Q/K 的每两个维度当成一个二维坐标,然后应用这个旋转矩阵。主要原因 试着... 是 Transformer 的 embedding 通常维度是偶数,所以可以一一配对。
得了吧... 哎呀,最近读到的那篇关于大模型学习中旋转位置编码和SwiGLU的文章,我简直要把脑子炸开了!先说说我自己的感受:这两项技术像是给 Transformer 的穿上了一双“神秘的鞋”, 让它们在长序列里跑得更快、更稳。别看我平时写代码都能把公式敲得一清二楚,但这两套技术还是让我眼花缭乱。
旋转位置编码的神奇之处
传统的绝对位置编码用 sin/cos 给每个 token 加上一个固定向量,感觉就像给每个点贴了一个身份证号。可它有两个大缺点:

- 只能记住固定长度序列,外推性差。
- 不直接体现相对位置信息,只是把“编号”塞进去。
而 RoPE 的核心思想是:直接在 Q/K 上做旋转把不同的位置对应不同的旋转角度。 精神内耗。 这样做后注意力点积只会依赖于角度差,即相对位置。公式很简单:
Q' = Rθ_m Q
K' = Rθ_n K
Q' · K' = Q^T Rθ_m^T Rθ_n K = Q^T R K
一句话:RoPE 让模型本能地学到“离多远比较重要”, 切记... 而不是死记某个编号对应什么向量。
为什么叫“旋转”?
我明白了。 你可以想象成把二维坐标系里的点 按角度 θ 旋转:
=
RoPE 就把 Q/K 的每两个维度当成一个二维坐标,然后应用这个旋转矩阵。主要原因 试着... 是 Transformer 的 embedding 通常维度是偶数,所以可以一一配对。

