LLM笔记(三)位置编码(1)

news2025/5/16 10:36:14

位置编码理论与应用

1. 位置编码如何解决置换不变性及其数学表现

在Transformer模型中,自注意力机制(Self-Attention)具有置换不变性(permutation invariance),这意味着对输入序列的词元(token)进行任意重排,输出的内容本质上保持不变(或仅是行的重排),导致模型无法感知词元的顺序。为了解决这一问题,**位置编码(Positional Encoding)**通过将位置信息融入输入序列,打破这种不变性,使模型能够区分词元的相对或绝对位置。


1.1 置换不变性的数学表现

置换不变性是自注意力机制无法捕捉位置信息的核心原因。让我们从数学角度分析:

  • 自注意力机制的计算

    • 输入序列为 X = [ x 1 , x 2 , … , x n ] X = [x_1, x_2, \dots, x_n] X=[x1,x2,,xn],其中 x i ∈ R d x_i \in \mathbb{R}^d xiRd 是第 i i i 个词元的嵌入向量。
    • 通过线性变换生成查询(Query)、键(Key)和值(Value): Q = X W Q , K = X W K , V = X W V Q = X W_Q, \quad K = X W_K, \quad V = X W_V Q=XWQ,K=XWK,V=XWV 其中 W Q , W K , W V W_Q, W_K, W_V WQ,WK,WV 是可学习的权重矩阵。
    • 注意力权重为: A = softmax ( Q K T d k ) A = \text{softmax}\left( \frac{Q K^T}{\sqrt{d_k}} \right) A=softmax(dk QKT) 输出为: Attention ( Q , K , V ) = A V \text{Attention}(Q, K, V) = A V Attention(Q,K,V)=AV
  • 置换操作的影响

    • 假设对输入 X X X 应用置换矩阵 P P P(一个重排行的矩阵),置换后的输入为 X ′ = P X X' = P X X=PX
    • 置换后的查询、键和值变为: Q ′ = P Q , K ′ = P K , V ′ = P V Q' = P Q, \quad K' = P K, \quad V' = P V Q=PQ,K=PK,V=PV
    • 注意力权重变为: A ′ = softmax ( Q ′ ( K ′ ) T d k ) = softmax ( P Q K T P T d k ) = P A P T A' = \text{softmax}\left( \frac{Q' (K')^T}{\sqrt{d_k}} \right) = \text{softmax}\left( \frac{P Q K^T P^T}{\sqrt{d_k}} \right) = P A P^T A=softmax(dk Q(K)T)=softmax(dk PQKTPT)=PAPT
    • 输出为: Attention ( Q ′ , K ′ , V ′ ) = A ′ V ′ = P A P T P V = P A V \text{Attention}(Q', K', V') = A' V' = P A P^T P V = P A V Attention(Q,K,V)=AV=PAPTPV=PAV
    • 结果表明,置换后的输出 P A V P A V PAV 是原始输出 A V A V AV 的行重排,内容本质不变(即集合意义上等价)。这意味着自注意力机制无法区分 X X X X ′ X' X 的顺序,仅依赖词元的内容。

1.2 位置编码如何解决置换不变性

位置编码通过将位置信息融入输入序列,打破置换不变性,使模型能够感知词元的位置。常见的实现方式有两种:绝对位置编码相对位置编码

1.2.1 绝对位置编码
  • 原理
    • 为每个位置 m m m 分配一个独特的位置编码向量 p m p_m pm,将其加到对应的词元嵌入 x m x_m xm 上: x m ′ = x m + p m x_m' = x_m + p_m xm=xm+pm 输入序列变为: X new = [ x 1 + p 1 , x 2 + p 2 , … , x n + p n ] X_{\text{new}} = [x_1 + p_1, x_2 + p_2, \dots, x_n + p_n] Xnew=[x1+p1,x2+p2,,xn+pn]
  • 数学表现
    • 若对 X new X_{\text{new}} Xnew 应用置换矩阵 P P P,置换后的输入为: X new ′ = P X new = P ( X + P pos ) X_{\text{new}}' = P X_{\text{new}} = P (X + P_{\text{pos}}) Xnew=PXnew=P(X+Ppos) 其中 P pos = [ p 1 , p 2 , … , p n ] P_{\text{pos}} = [p_1, p_2, \dots, p_n] Ppos=[p1,p2,,pn]
    • 因为 p m p_m pm 与位置绑定,置换后位置编码也会重排(如 P P pos P P_{\text{pos}} PPpos),导致 X new ′ ≠ X new X_{\text{new}}' \neq X_{\text{new}} Xnew=Xnew。这使得注意力计算的结果不再仅仅是行的重排,模型能够感知位置差异。
  • 例子
    • 三角函数位置编码(原Transformer): P E ( pos , 2 i ) = sin ⁡ ( pos 1000 0 2 i / d ) , P E ( pos , 2 i + 1 ) = cos ⁡ ( pos 1000 0 2 i / d ) PE(\text{pos}, 2i) = \sin\left(\frac{\text{pos}}{10000^{2i / d}}\right), \quad PE(\text{pos}, 2i+1) = \cos\left(\frac{\text{pos}}{10000^{2i / d}}\right) PE(pos,2i)=sin(100002i/dpos),PE(pos,2i+1)=cos(100002i/dpos) 不同位置的编码向量具有独特的频率模式。
  • 效果
    • 通过为每个词元添加位置标识,打破了置换不变性,模型可以区分不同位置的词元。
1.2.2 相对位置编码
  • 原理
    • 直接在注意力机制中引入词元间的相对位置信息,通常通过修改注意力权重的计算方式。例如,在注意力分数中加入与相对位置 i − j i - j ij 相关的偏置项。
  • 数学表现
    • 修改注意力分数计算: a i j = q i T k j + q i T R i − j a_{ij} = q_i^T k_j + q_i^T R_{i-j} aij=qiTkj+qiTRij 其中 R i − j R_{i-j} Rij 是相对位置 i − j i - j ij 的编码向量。
    • 置换输入后,相对位置 i − j i - j ij 会随之改变,导致注意力权重 A A A 的计算结果不同,输出不再是简单重排。
  • 例子
    • Transformer-XL a i j = q i T k j + q i T R i − j + u T k j + v T R i − j a_{ij} = q_i^T k_j + q_i^T R_{i-j} + u^T k_j + v^T R_{i-j} aij=qiTkj+qiTRij+uTkj+vTRij R i − j R_{i-j} Rij 使用正弦余弦函数生成,依赖相对距离。
  • 效果
    • 相对位置编码直接捕捉词元间的相对距离或顺序,使模型对位置变化敏感。

1.3 数学分析:Taylor展开的视角

在Transformer模型中,位置编码(Positional Encoding)是解决自注意力机制无法捕捉词元顺序的关键机制。通过将模型输出函数 f ( X ) f(X) f(X) 在加入位置编码后的输入 X + P pos X+P_{\text{pos}} X+Ppos 处进行Taylor展开,我们可以从数学视角深入理解位置编码如何引入绝对位置信息相对位置信息

f ~ ( X + P pos ) ≈ f ( X ) + p m T ∂ f ∂ x m + p n T ∂ f ∂ x n + p m T ∂ 2 f ∂ x m 2 p m + p n T ∂ 2 f ∂ x n 2 p n + p m T ∂ 2 f ∂ x m ∂ x n p n \tilde{f}(X + P_{\text{pos}}) \approx f(X) + p_m^T \frac{\partial f}{\partial x_m} + p_n^T \frac{\partial f}{\partial x_n} + p_m^T \frac{\partial^2 f}{\partial x_m^2} p_m + p_n^T \frac{\partial^2 f}{\partial x_n^2} p_n + p_m^T \frac{\partial^2 f}{\partial x_m \partial x_n} p_n f~(X+Ppos)f(X)+pmTxmf+pnTxnf+pmTxm22fpm+pnTxn22fpn+pmTxmxn2fpn

其中:

  • X X X 是输入序列的词元嵌入矩阵, x m x_m xm x n x_n xn 是位置 m m m n n n 的词元嵌入向量。

  • P pos P_{\text{pos}} Ppos 是位置编码矩阵, p m p_m pm p n p_n pn 是位置 m m m n n n 的位置编码向量。

  • f ( X ) f(X) f(X) 是模型输出函数, f ~ ( X + P pos ) \tilde{f}(X + P_{\text{pos}}) f~(X+Ppos) 是加入位置编码后的输出。

展开式中的项可以分为两类:绝对位置信息(前四项)和相对位置信息(最后一项)。下面,我们将更深入地分析这些项的含义,并通过具体例子阐释其作用。

1.3.1 绝对位置信息

绝对位置信息由以下四项表示:

  • p m T ∂ f ∂ x m p_m^T \frac{\partial f}{\partial x_m} pmTxmf p n T ∂ f ∂ x n p_n^T \frac{\partial f}{\partial x_n} pnTxnf(一阶项)

  • p m T ∂ 2 f ∂ x m 2 p m p_m^T \frac{\partial^2 f}{\partial x_m^2} p_m pmTxm22fpm p n T ∂ 2 f ∂ x n 2 p n p_n^T \frac{\partial^2 f}{\partial x_n^2} p_n pnTxn22fpn(二阶单位置项)

数学含义
  • 一阶项

    • ∂ f ∂ x m \frac{\partial f}{\partial x_m} xmf 是模型输出 f f f 对位置 m m m 的词元嵌入 x m x_m xm 的梯度,表示输出对该词元的线性敏感度。

    • p m T ∂ f ∂ x m p_m^T \frac{\partial f}{\partial x_m} pmTxmf 是位置编码向量 p m p_m pm 与梯度的点积,反映了位置 m m m 的编码对输出的直接调整。

    • 这类似于为每个位置的词元添加一个独立的"位置偏移",使模型感知到"这个词元在位置 m m m"。

  • 二阶单位置项

    • ∂ 2 f ∂ x m 2 \frac{\partial^2 f}{\partial x_m^2} xm22f 是模型输出的二阶导数,表示输出对 x m x_m xm 的非线性影响(曲率)。

    • p m T ∂ 2 f ∂ x m 2 p m p_m^T \frac{\partial^2 f}{\partial x_m^2} p_m pmTxm22fpm 是位置编码 p m p_m pm 通过二阶导数对输出的调整,增强了对单一位置的建模。

    • 这可以看作是对位置 m m m 的"深度调整",进一步强调其绝对位置特性。

特点
  • 这些项仅依赖单一位置的编码( p m p_m pm p n p_n pn),不涉及其他位置的交互,因此反映了绝对位置信息

  • 它们为每个词元提供了一个独立的位置标识,使模型能够区分不同位置的词元。

例子
  • 场景:考虑一个简单的语言模型,输入序列为"猫追狗"(位置 m = 1 , n = 2 , k = 3 m=1, n=2, k=3 m=1,n=2,k=3),词嵌入分别为 x 1 , x 2 , x 3 x_1, x_2, x_3 x1,x2,x3,位置编码为 p 1 , p 2 , p 3 p_1, p_2, p_3 p1,p2,p3(如三角函数编码)。

  • 绝对位置作用

    • p 1 T ∂ f ∂ x 1 p_1^T \frac{\partial f}{\partial x_1} p1Tx1f 调整"猫"(位置1)的输出贡献,可能使模型更关注句首词。

    • p 2 T ∂ 2 f ∂ x 2 2 p 2 p_2^T \frac{\partial^2 f}{\partial x_2^2} p_2 p2Tx222fp2 增强"追"(位置2)的非线性影响,强调动词的独立作用。

  • 实际效果:模型通过这些项区分"猫"在位置1和"狗"在位置3,即使内容相同,也能感知顺序差异。

与绝对位置编码的关系
  • 绝对位置编码(如三角函数编码或可训练编码)主要通过这些单位置项起作用。它们为每个位置赋予独特标识(如 p m p_m pm),使模型在输入层感知绝对位置。
1.3.2 相对位置信息

相对位置信息由最后一项表示:

  • p m T ∂ 2 f ∂ x m ∂ x n p n p_m^T \frac{\partial^2 f}{\partial x_m \partial x_n} p_n pmTxmxn2fpn(二阶交互项)
数学含义
  • ∂ 2 f ∂ x m ∂ x n \frac{\partial^2 f}{\partial x_m \partial x_n} xmxn2f 是模型输出对位置 m m m n n n 的词元嵌入 x m x_m xm x n x_n xn 的混合二阶导数,表示两位置之间的相互影响。

  • p m T ∂ 2 f ∂ x m ∂ x n p n p_m^T \frac{\partial^2 f}{\partial x_m \partial x_n} p_n pmTxmxn2fpn 是位置编码 p m p_m pm p n p_n pn 与混合导数的交互,反映了位置 m m m n n n 的联合效应。

  • 这项捕捉了相对位置信息,因为它依赖于 p m p_m pm p n p_n pn 之间的关系,通常与两位置的相对距离或顺序相关。

特点
  • 与绝对位置项不同,这一项涉及两个位置的交互,体现了位置之间的相对关系。

  • 在自注意力机制中,这对应于词元对(如 m m m n n n)的注意力权重如何受相对位置影响。

例子
  • 场景:继续使用"猫追狗",假设 m = 1 m=1 m=1(“猫”), n = 2 n=2 n=2(“追”)。

  • 相对位置作用

    • p 1 T ∂ 2 f ∂ x 1 ∂ x 2 p 2 p_1^T \frac{\partial^2 f}{\partial x_1 \partial x_2} p_2 p1Tx1x22fp2 表示"猫"和"追"之间的交互效应。

    • 在自注意力中,这可能影响注意力权重 a 12 = softmax ( q 1 T k 2 d k ) a_{12} = \text{softmax}\left( \frac{q_1^T k_2}{\sqrt{d_k}} \right) a12=softmax(dk q1Tk2),使模型更关注主语和动词的邻近关系。

  • 实际效果

    • 如果序列变为"狗追猫",位置 m = 1 m=1 m=1(“狗”)和 n = 2 n=2 n=2(“追”)的相对关系不变,但具体编码 p m p_m pm p n p_n pn 的值不同,交互项随之调整,反映新的顺序。
与相对位置编码的关系
  • 相对位置编码(如Transformer-XL、RoPE)直接通过这种交互项建模位置关系。例如:

    • 在注意力分数中加入相对位置偏置 R m − n R_{m-n} Rmn,使 a m n a_{mn} amn 依赖 m m m n n n 的距离。

    • 这与 p m T ∂ 2 f ∂ x m ∂ x n p n p_m^T \frac{\partial^2 f}{\partial x_m \partial x_n} p_n pmTxmxn2fpn 的形式一致,明确捕捉相对位置效应。

1.3.3 更深入的解释
绝对位置信息的作用机制
  • 独立性:单位置项(如 p m T ∂ f ∂ x m p_m^T \frac{\partial f}{\partial x_m} pmTxmf)为每个词元提供独立调整,使模型感知"这是第 m m m 个位置"。

  • Transformer中的体现

    • 输入变为 x m + p m x_m + p_m xm+pm,自注意力计算 q m = ( x m + p m ) W Q q_m = (x_m + p_m) W_Q qm=(xm+pm)WQ,键和值类似。

    • 注意力分数 q m T k n q_m^T k_n qmTkn 包含 p m T W Q W K T x n p_m^T W_Q W_K^T x_n pmTWQWKTxn,独立调整每个位置的贡献。

  • 局限:绝对位置编码需通过模型学习间接推断相对关系,效率较低。

相对位置信息的作用机制
  • 交互性:交互项(如 p m T ∂ 2 f ∂ x m ∂ x n p n p_m^T \frac{\partial^2 f}{\partial x_m \partial x_n} p_n pmTxmxn2fpn)直接建模位置 m m m n n n 的关系。

  • Transformer中的体现

    • 在自注意力中, q m T k n = ( x m + p m ) T W Q W K T ( x n + p n ) q_m^T k_n = (x_m + p_m)^T W_Q W_K^T (x_n + p_n) qmTkn=(xm+pm)TWQWKT(xn+pn),展开后包含 p m T W Q W K T p n p_m^T W_Q W_K^T p_n pmTWQWKTpn

    • 这一项依赖 p m p_m pm p n p_n pn 的交互,与相对距离相关,直接影响 a m n a_{mn} amn

  • 优势:相对位置编码更自然地捕捉语言中的相对顺序,如动词和宾语的距离。

结合实例
  • 绝对位置编码

    • 三角函数编码为位置1(“猫”)生成 p 1 = [ sin ⁡ ( 1 / 1000 0 2 i / d ) , cos ⁡ ( 1 / 1000 0 2 i / d ) ] p_1 = [\sin(1/10000^{2i/d}), \cos(1/10000^{2i/d})] p1=[sin(1/100002i/d),cos(1/100002i/d)],独立标识其位置。

    • 模型通过 p 1 T ∂ f ∂ x 1 p_1^T \frac{\partial f}{\partial x_1} p1Tx1f 调整"猫"的权重。

  • 相对位置编码

    • Transformer-XL中, p 1 T W Q W K T p 2 p_1^T W_Q W_K^T p_2 p1TWQWKTp2 表示"猫"和"追"的相对位置效应,调整注意力权重。

    • 若距离为1(如邻近),交互项增强关联;若距离变大,效应减弱。

1.3.4 总结与意义
  • 绝对位置信息

    • 通过单位置项(如 p m T ∂ f ∂ x m p_m^T \frac{\partial f}{\partial x_m} pmTxmf)为每个词元提供独立标识。

    • 对应绝对位置编码(如三角函数编码),在输入层打破置换不变性。

    • 示例:区分"猫"在位置1和"狗"在位置3。

  • 相对位置信息

    • 通过交互项(如 p m T ∂ 2 f ∂ x m ∂ x n p n p_m^T \frac{\partial^2 f}{\partial x_m \partial x_n} p_n pmTxmxn2fpn)捕捉位置间关系。

    • 对应相对位置编码(如RoPE),直接调整注意力权重。

    • 示例:增强"猫"和"追"的邻近关系。

  • 综合效果

    • 绝对位置编码奠定基础,相对位置编码优化关系建模,二者共同使Transformer感知顺序,适应复杂语言任务。

1.4 所有位置编码都是为了解决置换不变性吗?

位置编码的主要目的是解决置换不变性,但并非其唯一作用。不同的位置编码方法在实现这一目标的同时,还可能带来其他效果或改变模型行为:

  • 是的,解决置换不变性是核心目标

    • 无论是绝对位置编码还是相对位置编码,其根本目的是让模型感知词元顺序,打破自注意力的对称性。
    • 例如,三角函数编码、可训练编码、RoPE等都旨在引入位置依赖性。
  • 除此之外的额外作用

    1. 外推性(Extrapolation)
      • 定义:外推性是指模型在处理比训练时见过的序列更长的输入时,依然能够保持良好性能的能力。也就是说,模型能够"外推"到训练数据分布之外的序列长度。
      • 某些位置编码(如三角函数编码、相对位置编码)具有良好的外推性,能处理比训练时更长的序列。可训练位置编码则受限于预定义长度。
    2. 计算效率
      • 绝对位置编码(如可训练编码)增加存储需求,相对位置编码(如RoPE)可能增加注意力计算的开销。
    3. 任务适应性
      • 相对位置编码更适合自然语言处理任务,因为语言中相对顺序通常比绝对位置更重要(如句法关系)。
    4. 模型表达能力
      • 相对位置编码(如Transformer-XL)增强了对长距离依赖的捕捉能力;RoPE结合绝对和相对位置优势,提升线性注意力的性能。
    5. 创新性设计
      • 一些新型位置编码(如递归位置编码FLOATER)不仅解决顺序问题,还通过动态系统建模增强长序列处理能力。

1.5 总结

  • 如何解决置换不变性
    • 位置编码通过引入位置信息打破自注意力的对称性。绝对位置编码为每个词元添加独特标识,相对位置编码直接建模词元间关系。
  • 数学表现
    • 置换不变性体现为 Attention ( P X ) = P ⋅ Attention ( X ) \text{Attention}(P X) = P \cdot \text{Attention}(X) Attention(PX)=PAttention(X)。位置编码使输入或注意力计算依赖位置,置换后结果不再等价。
    • Taylor展开显示其包含绝对位置项和相对位置项。
  • 是否只为置换不变性
    • 核心目标是解决置换不变性,但也带来外推性、效率、适应性等额外改变。

2. 注意力机制的查询与位置向量:理解它们的关系与作用过程

2.1 基础概念回顾

2.1.1 注意力机制的核心组件

注意力机制基于三种向量:查询(Query)向量、键(Key)向量和值(Value)向量。这些向量通过以下方式生成:

  1. 输入嵌入:每个词元首先被转换为嵌入向量 x i x_i xi
  2. 线性变换:通过权重矩阵将嵌入向量投影为查询、键和值
    • 查询向量: q i = x i W Q q_i = x_i W_Q qi=xiWQ
    • 键向量: k i = x i W K k_i = x_i W_K ki=xiWK
    • 值向量: v i = x i W V v_i = x_i W_V vi=xiWV
2.1.2 位置编码的角色

位置编码为每个位置生成一个向量表示,使模型能够理解序列中词元的顺序。基本形式是:

  • 对于位置 p p p,生成位置编码向量 P E ( p ) PE(p) PE(p)
  • 将位置编码加到输入嵌入: x i + P E ( i ) x_i + PE(i) xi+PE(i)

2.2 位置向量与查询向量的关系

现在,让我解释位置向量如何影响查询向量,以及整个注意力计算过程。这里我将采用旋转位置编码(RoPE)作为例子,因为它最直接地展示了位置信息与查询/键向量的交互。

2.2.1 标准注意力机制中的作用过程

在标准的Transformer中(使用加性位置编码,如正弦位置编码),过程如下:

  1. 位置信息融入

    • 将位置编码加到输入嵌入: x ~ i = x i + P E ( i ) \tilde{x}_i = x_i + PE(i) x~i=xi+PE(i)
    • 生成查询向量: q i = x ~ i W Q = ( x i + P E ( i ) ) W Q q_i = \tilde{x}_i W_Q = (x_i + PE(i)) W_Q qi=x~iWQ=(xi+PE(i))WQ
    • 生成键向量: k j = x ~ j W K = ( x j + P E ( j ) ) W K k_j = \tilde{x}_j W_K = (x_j + PE(j)) W_K kj=x~jWK=(xj+PE(j))WK
  2. 注意力计算

    • 计算注意力分数: a i j = q i ⋅ k j d k a_{ij} = \frac{q_i \cdot k_j}{\sqrt{d_k}} aij=dk qikj
    • 应用softmax归一化: α i j = softmax ( a i j ) \alpha_{ij} = \text{softmax}(a_{ij}) αij=softmax(aij)
    • 加权求和值向量: o i = ∑ j α i j v j o_i = \sum_j \alpha_{ij} v_j oi=jαijvj

在这个过程中,位置信息间接地影响了查询和键向量,从而影响注意力分数的计算。

2.2.2 RoPE中的作用过程

在旋转位置编码中,位置信息与查询和键向量的交互更加直接和明确:

  1. 位置旋转应用

    • 生成基础查询向量: q i = x i W Q q_i = x_i W_Q qi=xiWQ
    • 应用位置旋转: q ^ i = R θ , i q i \hat{q}_i = R_{\theta, i} q_i q^i=Rθ,iqi
    • 同样地,对键向量: k ^ j = R θ , j k j \hat{k}_j = R_{\theta, j} k_j k^j=Rθ,jkj

    其中 R θ , p R_{\theta, p} Rθ,p 是基于位置 p p p 的旋转矩阵。

  2. 注意力计算

    • 计算旋转后的注意力分数: a i j = q ^ i ⋅ k ^ j = q i ⋅ R θ , i − j k j a_{ij} = \hat{q}_i \cdot \hat{k}_j = q_i \cdot R_{\theta, i-j} k_j aij=q^ik^j=qiRθ,ijkj
    • 应用softmax归一化: α i j = softmax ( a i j ) \alpha_{ij} = \text{softmax}(a_{ij}) αij=softmax(aij)
    • 加权求和值向量: o i = ∑ j α i j v j o_i = \sum_j \alpha_{ij} v_j oi=jαijvj

注意关键的数学性质: q ^ i ⋅ k ^ j = q i ⋅ R θ , i − j k j \hat{q}_i \cdot \hat{k}_j = q_i \cdot R_{\theta, i-j} k_j q^ik^j=qiRθ,ijkj。这表明旋转后的点积直接编码了相对位置 i − j i-j ij,使模型能够明确感知词元间的相对位置关系。

2.3 详细的作用过程示例

让我通过一个具体例子来说明位置向量和查询向量如何协同工作。假设我们处理一个简单的句子:“人工智能正在快速发展”。

2.3.1 步骤1: 输入处理与位置融合

以RoPE为例,处理流程如下:

  1. 词元嵌入:每个词元转换为嵌入向量

    • “人工” → x 0 x_0 x0
    • “智能” → x 1 x_1 x1
    • “正在” → x 2 x_2 x2
    • “快速” → x 3 x_3 x3
    • “发展” → x 4 x_4 x4
  2. 生成查询和键向量

    • q 0 = x 0 W Q q_0 = x_0 W_Q q0=x0WQ, k 0 = x 0 W K k_0 = x_0 W_K k0=x0WK (位置0)
    • q 1 = x 1 W Q q_1 = x_1 W_Q q1=x1WQ, k 1 = x 1 W K k_1 = x_1 W_K k1=x1WK (位置1)
    • … 以此类推
  3. 应用位置旋转

    • q ^ 0 = R θ , 0 q 0 \hat{q}_0 = R_{\theta, 0} q_0 q^0=Rθ,0q0, k ^ 0 = R θ , 0 k 0 \hat{k}_0 = R_{\theta, 0} k_0 k^0=Rθ,0k0
    • q ^ 1 = R θ , 1 q 1 \hat{q}_1 = R_{\theta, 1} q_1 q^1=Rθ,1q1, k ^ 1 = R θ , 1 k 1 \hat{k}_1 = R_{\theta, 1} k_1 k^1=Rθ,1k1
    • … 以此类推

在这个过程中,每个查询和键向量都通过位置特定的旋转变换,将位置信息编入向量表示中。

2.3.2 步骤2: 注意力计算

考虑位置2的词元"正在"如何与其他词元交互:

  1. 计算注意力分数:对于每个位置 j j j,计算 a 2 j = q ^ 2 ⋅ k ^ j a_{2j} = \hat{q}_2 \cdot \hat{k}_j a2j=q^2k^j

    • 与"人工"的注意力: a 20 = q ^ 2 ⋅ k ^ 0 = q 2 ⋅ R θ , 2 − 0 k 0 = q 2 ⋅ R θ , 2 k 0 a_{20} = \hat{q}_2 \cdot \hat{k}_0 = q_2 \cdot R_{\theta, 2-0} k_0 = q_2 \cdot R_{\theta, 2} k_0 a20=q^2k^0=q2Rθ,20k0=q2Rθ,2k0
    • 与"智能"的注意力: a 21 = q ^ 2 ⋅ k ^ 1 = q 2 ⋅ R θ , 2 − 1 k 1 = q 2 ⋅ R θ , 1 k 1 a_{21} = \hat{q}_2 \cdot \hat{k}_1 = q_2 \cdot R_{\theta, 2-1} k_1 = q_2 \cdot R_{\theta, 1} k_1 a21=q^2k^1=q2Rθ,21k1=q2Rθ,1k1
    • 与自身的注意力: a 22 = q ^ 2 ⋅ k ^ 2 = q 2 ⋅ R θ , 2 − 2 k 2 = q 2 ⋅ R θ , 0 k 2 = q 2 ⋅ k 2 a_{22} = \hat{q}_2 \cdot \hat{k}_2 = q_2 \cdot R_{\theta, 2-2} k_2 = q_2 \cdot R_{\theta, 0} k_2 = q_2 \cdot k_2 a22=q^2k^2=q2Rθ,22k2=q2Rθ,0k2=q2k2
    • 与"快速"的注意力: a 23 = q ^ 2 ⋅ k ^ 3 = q 2 ⋅ R θ , 2 − 3 k 3 = q 2 ⋅ R θ , − 1 k 3 a_{23} = \hat{q}_2 \cdot \hat{k}_3 = q_2 \cdot R_{\theta, 2-3} k_3 = q_2 \cdot R_{\theta, -1} k_3 a23=q^2k^3=q2Rθ,23k3=q2Rθ,1k3
    • 与"发展"的注意力: a 24 = q ^ 2 ⋅ k ^ 4 = q 2 ⋅ R θ , 2 − 4 k 4 = q 2 ⋅ R θ , − 2 k 4 a_{24} = \hat{q}_2 \cdot \hat{k}_4 = q_2 \cdot R_{\theta, 2-4} k_4 = q_2 \cdot R_{\theta, -2} k_4 a24=q^2k^4=q2Rθ,24k4=q2Rθ,2k4
  2. 应用softmax α 2 j = softmax ( a 2 j ) \alpha_{2j} = \text{softmax}(a_{2j}) α2j=softmax(a2j)

    这将注意力分数归一化为概率分布,表示"正在"对每个位置的关注程度。

  3. 加权聚合值向量 o 2 = ∑ j α 2 j v j o_2 = \sum_j \alpha_{2j} v_j o2=jα2jvj

    这一步合成了与"正在"相关联的信息,同时考虑了位置关系。

2.3.3 关键观察

在上面的例子中,我们可以观察到几个重要特点:

  1. 相对位置的直接编码:注意力分数 a 2 j a_{2j} a2j 直接依赖于相对位置 2 − j 2-j 2j,通过 R θ , 2 − j R_{\theta, 2-j} Rθ,2j 编码。

  2. 自注意力的特殊性:当 i = j i=j i=j 时(词元与自身的注意力),旋转矩阵变为单位矩阵 R θ , 0 R_{\theta, 0} Rθ,0,使得 a i i = q i ⋅ k i a_{ii} = q_i \cdot k_i aii=qiki,这是标准内积。

  3. 前后关系的区分

    • 前面的词元(如"人工"和"智能")通过正相对位置 ( + 2 , + 1 ) (+2, +1) (+2,+1) 编码
    • 后面的词元(如"快速"和"发展")通过负相对位置 ( − 1 , − 2 ) (-1, -2) (1,2) 编码

    这使模型能够区分前后文关系。

2.4 位置向量如何影响注意力分布

位置编码对注意力分布的影响是多方面的,这种影响通过以下机制实现:

2.4.1 相对距离敏感性

在RoPE中,旋转矩阵 R θ , i − j R_{\theta, i-j} Rθ,ij 编码相对距离 i − j i-j ij,这使得模型能够学习距离敏感的注意力模式:

  • 近距离偏好:模型可以学习给予临近词元更高的注意力
  • 语法依赖:捕捉如主谓关系等可能跨越多个位置的结构
  • 长距离关联:识别远距离的相关信息,如代词与其指代对象
2.4.2 方向感知

RoPE的一个关键特性是它能区分正负相对位置,即前文和后文:

  • i > j i > j i>j 时(关注前面的内容),旋转矩阵是 R θ , + ( i − j ) R_{\theta, +(i-j)} Rθ,+(ij)
  • i < j i < j i<j 时(关注后面的内容),旋转矩阵是 R θ , − ( j − i ) R_{\theta, -(j-i)} Rθ,(ji)

这使模型能够学习方向敏感的注意力模式,例如在英语中,形容词通常在名词前面,而在汉语中,形容词的位置可能更灵活。

2.4.3 频率差异化

RoPE使用不同频率的旋转,对应于向量的不同维度:

  • 高频组件(向量的前几对维度)对小的位置变化敏感,有助于捕捉局部结构
  • 低频组件(向量的后几对维度)对大的位置变化敏感,有助于捕捉全局结构

这种多尺度表示使模型能够同时关注局部语法关系和全局文档结构。

2.5 注意力查询和位置向量的共同演化

在训练过程中,注意力机制的查询向量和位置编码不是静态的,而是通过反向传播共同演化:

  1. 查询投影学习:权重矩阵 W Q W_Q WQ 学习如何从输入嵌入生成有效的查询向量

  2. 位置解释学习:模型学习如何解释位置编码提供的位置信息

  3. 位置敏感的内容识别:模型逐渐发展出位置感知的表示,使相同词在不同位置可以有不同的解释

这种共同演化使模型能够形成复杂的注意力模式,例如:

  • 在句子开头关注主语
  • 在动词后关注宾语
  • 在代词处回溯寻找指代对象

2.6 实际应用中的表现

在实际应用中,位置编码与注意力查询的交互表现出丰富的模式:

2.6.1 例子:情感分析任务

考虑句子:“这部电影很无聊,但演员表演精彩”。

在没有位置编码的情况下,模型可能无法区分"无聊"和"精彩"分别修饰什么,导致情感判断混淆。

有了位置编码,注意力查询能够正确关联:

  • “无聊"与"电影”
  • “精彩"与"演员表演”
  • "但"作为转折关系的信号

这种正确的关联是通过位置编码与查询向量的交互实现的。

2.6.2 例子:翻译任务

在翻译英语到中文时,位置编码帮助模型处理两种语言不同的语法结构:

英语:“The red car is parked outside the building.” 中文:“红色的汽车停在建筑物外面。”

位置编码使模型能够学习:

  • 英语中形容词在名词前(“red car”)
  • 英语中使用被动语态的位置结构
  • 中文中表达位置关系的不同方式

这种跨语言的结构映射依赖于位置编码与注意力机制的紧密协作。

参考

更详细的分类和介绍

  1. 苏神科学空间
  2. https://0809zheng.github.io/2022/07/01/posencode.html
  3. Rope解析

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2376781.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Git-学习笔记(粗略版)

前言 很多人都听过git&#xff0c;github这些名词,但是它们是什么&#xff0c;怎么使用&#xff1f;git和github是一个东西吗&#xff1f;本文将详细解答这些问题&#xff0c;彻底弄懂git。 1.Git是啥❓ 有一天&#xff0c;我们的插画师小王接到一个绘画订单&#xff0c;但奈…

专项智能练习(定义判断)

1. 单选题 热传导是介质内无宏观运动时的传热现象&#xff0c;其在固体、液体和气体中均可发生。但严格而言&#xff0c;只有在固体中才是纯粹的热传导&#xff0c;在流体&#xff08;泛指液体和气体&#xff09;中又是另外一种情况&#xff0c;流体即使处于静止状态&#xff…

【iOS安全】Dopamine越狱 iPhone X iOS 16.6 (20G75) | 解决Jailbreak failed with error

Dopamine越狱 iPhone X iOS 16.6 (20G75) Dopamine兼容设备 参考&#xff1a;https://www.bilibili.com/opus/977469285985157129 A9 - A11&#xff08;iPhone6s&#xff0d;X&#xff09;&#xff1a;iOS15.0-16.6.1 A12-A14&#xff08;iPhoneXR&#xff0d;12PM&#xf…

对心理幸福感含义的探索 | 幸福就是一切吗?

注&#xff1a;机翻&#xff0c;未校。 Happiness Is Everything, or Is It? Explorations on the Meaning of Psychological Well-Being 幸福就是一切吗&#xff1f;对心理幸福感含义的探索 Journal of Personality and Social Psychology 1989, Vol. 57, No. 6,1069-1081 …

【高频面试题】LRU缓存

文章目录 1 相关前置知识&#xff08;OS&#xff09;2 面试题 16.25. LRU 缓存2.1 题面2.2 示例2.3 解法1 &#xff08;双端队列哈希表&#xff09;思路 2.4 解法2思路 3 参考 1 相关前置知识&#xff08;OS&#xff09; 为什么需要页面置换算法&#xff1a;当进程运行时&…

讯联云库项目开发日志(二)AOP参数拦截

目录 利用AOP实现参数拦截: 一、​​HTTP请求进入Controller​&#xff08;发送邮件验证码&#xff09; 二、AOP切面触发 1. 切面拦截&#xff08;GlobalOperactionAspect.class&#xff09; method.getAnnotation()​​ null interceptor 判断​​ 2.参数校验注解 3. 参…

龙虎榜——20250515

上证指数缩量收阴线&#xff0c;个股跌多涨少&#xff0c;上涨波段4月9日以来已有24个交易日&#xff0c;时间周期上处于上涨末端&#xff0c;注意风险。 深证指数缩量收阴线&#xff0c;日线上涨结束的概率在增大&#xff0c;注意风险。 2025年5月15日龙虎榜行业方向分析 一…

卡洛诗,将高端西餐的冗余价值转化为普惠体验

西餐市场正经历一场结构性变革&#xff0c;一二线城市的高端西餐陷入内卷&#xff0c;而下沉市场却因品质与价格断层陷入选择困境——消费者既不愿为高价西餐的面子溢价买单&#xff0c;又难以忍受快餐式西餐的粗糙体验。这一矛盾催生了万亿级的市场真空地带&#xff0c;萨莉亚…

Flutter在键盘的上方加一个完成按钮

有些情况下&#xff0c;输入框在输入键盘弹出后&#xff0c; 需要在键盘的上方显示一个toolbar &#xff0c; 然后 toolbar 上面一个完成按钮&#xff0c;点完成按钮把键盘关闭。 如图&#xff1a; 直接上代码&#xff0c;这样写的好处是&#xff0c;把 TextField 给封装了&…

SQL注入---05--跨站注入

1 权限说明 select * from mysql.user; 这里的Y表示我前面的命令权限为root&#xff0c;n表示不支持root权限 导致结果&#xff1a; 如果为root的话&#xff0c;我就可操作这些命令并且可以进行跨数据库攻击&#xff0c;但是如果不是高权限root就无法执行这些操作 2 root权限…

【免费分享】虚拟机VM(适用于 Windows)17.6.3

—————【下 载 地 址】——————— 【​本章下载一】&#xff1a;https://drive.uc.cn/s/7c4da5cd2af64 【​本章下载二】&#xff1a;https://pan.xunlei.com/s/VOQDkRRKc5OUVTauZezaiDEHA1?pwdpybg# 【百款黑科技】&#xff1a;https://ucnygalh6wle.feishu.cn/wiki/…

2025 后端自学UNIAPP【项目实战:旅游项目】5、个人中心页面:微信登录,同意授权,获取用户信息

一、框架以及准备工作 1、前端项目文件结构展示 2、后端项目文件结构展示 3、登录微信公众平台&#xff0c;注册一个个人的程序&#xff0c;获取大appid&#xff08;前端后端都需要&#xff09;和密钥&#xff08;后端需要&#xff09; 微信公众平台微信公众平台&…

蓝桥杯算法题 -蛇形矩阵(方向向量)

&#x1f381;个人主页&#xff1a;工藤新一 &#x1f50d;系列专栏&#xff1a;C面向对象&#xff08;类和对象篇&#xff09; &#x1f31f;心中的天空之城&#xff0c;终会照亮我前方的路 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 文章目录 P…

配置VScodePython环境Python was not found;

Python was not found; run without arguments to install from the Microsoft Store, or disable this shortcut from Settings > Manage App Execution Aliases. 候试试重启电脑。 在卸载重装python后会出现难以解决的局面&#xff0c;系统变量&#xff0c;命令行&#…

ollama 重命名模型

ollama 重命名模型 ollama list# 查看列表 ollama list # 生成原模型的Modelfile文件 ollama show --modelfile qwen3:32b > Modelfile # 从Modelfile文件创建新的模型 ollama create qwen3 -f Modelfile # 删除原模型 ollama rm qwen3:32b

Qt信号槽机制与UI设计完全指南:从基础原理到实战应用

目录 前言一、信号槽1.1 传参1.2 Qt信号与槽的对应关系1.2.1一对多关系1.2.2 多对一关系 二、Designer三、Layout 布局3.1 基础用法3.2 打破布局3.3 贴合窗口3.4 伸展器&#xff08;Spacer&#xff09;3.5 嵌套布局 四、ui指针五、QWidget六、QLabel 标签使用指南总结 前言 本…

XBL6501/02/03在POE设备上的应用方案

前言&#xff1a; 在当今数字化时代&#xff0c;POE&#xff08;Power over Ethernet&#xff09;设备因其能够通过以太网线同时传输数据和电力而被广泛应用。为了满足这些设备日益增长的电源需求&#xff0c;芯伯乐推出了XBL6501/02/03系列DC-DC电源芯片&#xff0c;为POE设备…

编程题 03-树2 List Leaves【PAT】

文章目录 题目输入格式输出格式输入样例输出样例 题解解题思路完整代码 编程练习题目集目录 题目 Given a tree, you are supposed to list all the leaves in the order of top down, and left to right. 输入格式 Each input file contains one test case. For each case, …

生信小白学Rust-03

语句和表达式 举个栗子&#x1f330; fn add_with_extra(x: i32, y: i32) -> i32 {let x x 1; // 语句let y y 5; // 语句x y // 表达式 } // 语句执行操作 // 表达式会返回一个值 怎么区分呢&#xff0c;目前我的理解是只要返回了值&#xff0c;那它就是表达式 fn…

缺乏需求优先级划分时,如何合理分配资源?

当需求优先级不明确时&#xff0c;合理分配资源的关键在于建立统一评估标准、实施敏捷资源管理、提升团队协作效率、加强跨部门沟通机制。尤其是建立统一评估标准至关重要&#xff0c;它能帮助组织快速判断各项需求的重要性与紧迫性&#xff0c;从而实现资源的动态匹配与有效利…