ShortGPT:揭示大型语言模型的层冗余与高效压缩

ShortGPT:揭示大型语言模型的层冗余与高效压缩

作为一名研究Transformer架构的学者,你可能已经注意到大型语言模型(LLMs)在性能提升的同时,参数规模也急剧膨胀,动辄达到数十亿甚至万亿级别。这不仅对计算资源提出了巨大挑战,也推动了模型压缩技术的发展。近期,来自Baichuan Inc.和ISCAS的研究团队发表了一篇题为《ShortGPT: Layers in Large Language Models are More Redundant Than You Expect》的论文,提出了一个新颖的视角:LLMs的层级冗余远超预期,并基于此开发了一种简单而高效的层剪枝方法——ShortGPT。本文将为熟悉Transformer的研究者介绍这篇论文的核心贡献,并深入解释其关键数学公式。

在这里插入图片描述

论文核心贡献

  1. 揭示层级冗余的现象
    论文通过实验和理论分析,揭示了LLMs(尤其是基于预归一化pre-norm的Transformer架构)在层级上存在显著冗余。研究发现,某些层的输入与输出高度相似,对模型整体功能贡献较小。特别是在预归一化配置下,深层变换的作用被进一步弱化。这种冗余不仅限于Transformer架构,还在非Transformer模型(如Mamba和RWKV)中得到了验证,表明层级冗余可能是现代LLMs的普遍特性。

  2. 提出Block Influence(BI)指标
    为了量化每层的贡献,论文引入了一个新颖的指标——Block Influence(BI)。BI通过计算层输入与输出的余弦相似度,衡量层对隐藏状态的变换程度。BI得分低的层被认为是冗余层,可以被移除。实验表明,BI指标与层的重要性高度相关,优于其他指标(如顺序、反序或相对幅度)。

  3. 开发ShortGPT剪枝方法
    基于BI指标,论文提出了一种简单直接的剪枝方法——ShortGPT,通过移除BI得分较低的层来压缩模型。实验表明,ShortGPT能够在减少约25%参数的同时,保留约90%的性能。例如,在LLaMA 2-13B模型上,移除10层(占总层数的25%)后,MMLU基准性能仅从55.0降至52.2,优于其他复杂剪枝方法(如LLM-Pruner和SliceGPT)。

在这里插入图片描述

  1. 与量化方法的正交性
    ShortGPT不仅在性能上表现出色,还与量化方法(如GPTQ)正交,可以结合使用进一步降低计算开销。实验显示,在量化后的LLaMA 2-7B模型上应用ShortGPT,模型性能和吞吐量均得到显著优化。

  2. 后训练恢复性能
    为缓解层移除带来的性能损失,论文探索了后训练策略,包括用轻量级多层感知机(MLP)替换被移除的层并进行重新训练。这种方法有效恢复了部分性能,进一步提升了ShortGPT的实用性。

数学公式解析

论文的核心理论分析围绕预归一化(pre-norm)如何导致层输入与输出高相似度展开,并通过数学推导解释了层冗余的成因。以下是关键公式的详细解析:

Block Influence(BI)公式

BI指标用于衡量第 ( i i i) 层的重要性,定义如下:

B I i = 1 − E X , t X i , t T X i + 1 , t ∥ X i , t ∥ 2 ∥ X i + 1 , t ∥ 2 \mathrm{BI}_i = 1 - \mathbb{E}_{X, t} \frac{X_{i, t}^T X_{i+1, t}}{\|X_{i, t}\|_2 \|X_{i+1, t}\|_2} BIi=1EX,tXi,t2Xi+1,t2Xi,tTXi+1,t

  • 解释

    • ( X i , t X_{i, t} Xi,t) 表示第 ( i i i) 层在时间步 ( t t t) 的隐藏状态(即层的输入)。
    • ( X i + 1 , t X_{i+1, t} Xi+1,t) 表示第 ( i i i) 层输出(即第 ( i + 1 i+1 i+1) 层的输入)。
    • ( X i , t T X i + 1 , t ∥ X i , t ∥ 2 ∥ X i + 1 , t ∥ 2 \frac{X_{i, t}^T X_{i+1, t}}{\|X_{i, t}\|_2 \|X_{i+1, t}\|_2} Xi,t2Xi+1,t2Xi,tTXi+1,t) 计算输入与输出的余弦相似度,值越接近1,表示两者越相似,层的变换作用越小。
    • ( E X , t \mathbb{E}_{X, t} EX,t) 表示对输入样本 ( X X X) 和时间步 ( t t t) 的期望,考虑了多个样本的平均表现。
    • ( 1 − 相似度 1 - \text{相似度} 1相似度) 将相似度转化为“变换程度”,因此BI值越低,说明层的作用越小,越可能是冗余层。
  • 意义
    BI通过量化隐藏状态的变换程度,提供了一个直观的层重要性评估标准。实验表明,BI得分与移除层后模型性能下降(PPL升高)的程度呈正相关,验证了其有效性。

在这里插入图片描述

预归一化导致高相似度的理论推导

论文在附录A中通过数学推导解释了预归一化(以RMSNorm为例)为何导致深层输入与输出高相似度。核心推导如下:

  1. 隐藏状态的模增长
    根据Xiong等人(2020)的引理,在预归一化Transformer初始化时,第 ( L L L) 层隐藏状态 ( x L x_L xL) 的模满足:

    ( 1 + L 2 ) d ≤ E ( ∥ x L ∥ 2 2 ) ≤ ( 1 + M 2 ) d \left(1 + \frac{L}{2}\right)d \leq \mathbb{E}(\|x_L\|_2^2) \leq \left(1 + \frac{M}{2}\right)d (1+2L)dE(xL22)(1+2M)d

    其中 ( d d d) 是隐藏状态维度,( M M M) 是模型参数的某一常数。假设 ( x L x_L xL) 的每个分量均值为0,可得:

    ∥ x L ∥ = Θ ( L ) \|x_L\| = \Theta(\sqrt{L}) xL=Θ(L )

    这表明随着层数 ( L L L) 增加,隐藏状态的模逐渐增大。

  2. 层变换的相对贡献
    假设第 ( L + 1 L+1 L+1) 层的隐藏状态为:

    x L + 1 = x L + f L ( x L , θ L ) x_{L+1} = x_L + f_L(x_L, \theta_L) xL+1=xL+fL(xL,θL)

    其中 ( f L ( x L , θ L ) f_L(x_L, \theta_L) fL(xL,θL)) 表示注意力或MLP操作,( θ L \theta_L θL) 为可学习参数。论文证明,对于注意力机制,( f L f_L fL) 的模为常数级别:

    ∥ f L ( x L , θ L ) ∥ = O ( 1 ) \|f_L(x_L, \theta_L)\| = O(1) fL(xL,θL)=O(1)

    以注意力为例:

    f L ( x L , θ L ) = ( softmax ( Q T K ) X L ∥ X L ∥ ⋅ v rms ) W v W q f_L(x_L, \theta_L) = \left(\text{softmax}(Q^T K) \frac{X_L}{\|X_L\|} \cdot v_{\text{rms}}\right) W_v W_q fL(xL,θL)=(softmax(QTK)XLXLvrms)WvWq

    其模为:

    ∥ f L ∥ = O ( ∥ v rms ∥ ∥ W v ∥ ∥ W q ∥ ) = O ( 1 ) \|f_L\| = O(\|v_{\text{rms}}\| \|W_v\| \|W_q\|) = O(1) fL=O(vrms∥∥Wv∥∥Wq)=O(1)

    表明 ( f L f_L fL) 的贡献不随层数 ( L L L) 增长。

  3. 余弦相似度计算
    计算第 ( L L L) 层输入与输出的余弦相似度:

    cos ⁡ similarity ( x L + 1 , x L ) = x L + 1 ⋅ x L ∥ x L + 1 ∥ ∥ x L ∥ = ∥ x L ∥ 2 + f L ( x L , θ L ) ⋅ x L ∥ x L + 1 ∥ ∥ x L ∥ \cos \text{similarity}(x_{L+1}, x_L) = \frac{x_{L+1} \cdot x_L}{\|x_{L+1}\| \|x_L\|} = \frac{\|x_L\|^2 + f_L(x_L, \theta_L) \cdot x_L}{\|x_{L+1}\| \|x_L\|} cossimilarity(xL+1,xL)=xL+1∥∥xLxL+1xL=xL+1∥∥xLxL2+fL(xL,θL)xL

    分母近似为:

    ∥ x L + 1 ∥ = ∥ x L + f L ∥ ≈ ∥ x L ∥ ( 因 ∥ f L ∥ ≪ ∥ x L ∥ ) \|x_{L+1}\| = \|x_L + f_L\| \approx \|x_L\| \quad (\text{因} \|f_L\| \ll \|x_L\|) xL+1=xL+fLxL(fLxL)

    因此:

    cos ⁡ similarity ≥ ∥ x L ∥ 2 ∥ x L + 1 ∥ ∥ x L ∥ − ∥ f L ∥ ∥ x L ∥ ∥ x L + 1 ∥ ∥ x L ∥ = ∥ x L ∥ ∥ x L + 1 ∥ − ∥ f L ∥ ∥ x L + 1 ∥ \cos \text{similarity} \geq \frac{\|x_L\|^2}{\|x_{L+1}\| \|x_L\|} - \frac{\|f_L\| \|x_L\|}{\|x_{L+1}\| \|x_L\|} = \frac{\|x_L\|}{\|x_{L+1}\|} - \frac{\|f_L\|}{\|x_{L+1}\|} cossimilarityxL+1∥∥xLxL2xL+1∥∥xLfL∥∥xL=xL+1xLxL+1fL

    代入 ( ∥ x L ∥ = Θ ( L ) \|x_L\| = \Theta(\sqrt{L}) xL=Θ(L )) 和 ( ∥ f L ∥ = O ( 1 ) \|f_L\| = O(1) fL=O(1)),得到:

    cos ⁡ similarity = Θ ( L L + 1 ) − O ( 1 L + 1 ) \cos \text{similarity} = \Theta\left(\sqrt{\frac{L}{L+1}}\right) - O\left(\sqrt{\frac{1}{L+1}}\right) cossimilarity=Θ(L+1L )O(L+11 )

    当 ( L L L) 很大时,( L L + 1 → 1 \sqrt{\frac{L}{L+1}} \to 1 L+1L 1),第二项趋于0,说明深层的输入与输出余弦相似度接近1,变换作用微弱。

  • 意义
    该推导表明,预归一化使深层变换的作用被“稀释”,导致层输出与输入高度相似。这种高相似度是层冗余的理论基础,支持了移除深层的可行性。

实验亮点

  • 跨模型验证:ShortGPT在LLaMA 2(7B和13B)、Baichuan2(7B和13B)以及非Transformer模型(Mamba-2.8B和RWKV-7B)上均表现出色,证明了方法的通用性。
  • 性能与效率兼得:在LLaMA 2-7B-GPTQ模型上,移除27.1%的层后,MMLU性能仅下降约2%,而吞吐量提升19%。
  • 后训练优化:通过替换为轻量级MLP并重新训练,ShortGPT在保持低参数量的同时,进一步缩小了性能差距。

局限性与未来方向

尽管ShortGPT表现优异,但论文指出其对多选任务的泛化能力影响较大,具体原因尚未完全阐明。此外,RWKV模型的冗余程度低于Mamba和Transformer,提示不同架构的冗余特性需要进一步探索。未来研究可以结合ShortGPT与其他压缩技术(如稀疏化)或优化训练流程,设计更高效的LLMs。

总结

《ShortGPT》通过揭示LLMs的层级冗余,提出了一种简单而强大的剪枝方法,为Transformer研究者提供了新的压缩视角。其BI指标和数学推导清晰地解释了冗余的来源,而实验结果则展示了方法的高效性和普适性。对于关注模型压缩和高效推理的研究者来说,这篇论文无疑值得深入阅读和实践。

BI解释


为什么 ( X i , t X_{i, t} Xi,t) 是矩阵,而不是向量?

在论文中,( X i , t X_{i, t} Xi,t) 被描述为“第 ( i i i) 层在时间步 ( t t t) 的隐藏状态(即层的输入)”,并且公式中提到 ( X i , t T X i + 1 , t X_{i, t}^T X_{i+1, t} Xi,tTXi+1,t)。你可能会疑惑:语言模型的输入通常是一个序列,每个时间步的隐藏状态不应该是一个向量吗?为什么这里看起来像是矩阵操作?

解答:

在实际的 Transformer 模型实现中,隐藏状态 ( X i , t X_{i, t} Xi,t) 并不是单个时间步的向量,而是整个序列在第 ( i i i) 层的隐藏状态矩阵。让我逐步解释:

  1. Transformer 的输入和隐藏状态表示

    • 在 Transformer 模型中,输入是一个序列(例如一个句子),假设序列长度为 ( T T T)(即有 ( T T T) 个 token),每个 token 的嵌入维度为 ( d d d)。因此,输入层的输出(经过嵌入和位置编码后)是一个矩阵 ( X ∈ R T × d X \in \mathbb{R}^{T \times d} XRT×d),其中每一行 ( X t ∈ R d X_t \in \mathbb{R}^d XtRd) 是第 ( t t t) 个 token 的嵌入向量。
    • 每一层 Transformer 的输入和输出也是一个矩阵,形状同样为 ( T × d T \times d T×d)。第 ( I I I) 层的输入是 ( X i ∈ R T × d X_i \in \mathbb{R}^{T \times d} XiRT×d),输出是 ( X i + 1 ∈ R T × d X_{i+1} \in \mathbb{R}^{T \times d} Xi+1RT×d)。这里的 ( X i , t X_{i, t} Xi,t) 表示矩阵 ( X i X_i Xi) 的第 ( t t t) 行,也就是第 ( i i i) 层、第 ( t t t) 个 token 的隐藏状态向量,形状为 ( 1 × d 1 \times d 1×d)。
  2. 为什么公式中 ( X i , t X_{i, t} Xi,t) 是向量,但计算时涉及矩阵?

    • 公式中的 ( X i , t X_{i, t} Xi,t) 确实是第 ( t t t) 个 token 的隐藏状态向量(维度为 ( d d d)),但为了高效计算,实际操作中通常会一次性处理整个序列的隐藏状态矩阵 ( X i X_i Xi)。因此,论文中提到的“( X i , t T X i + 1 , t X_{i, t}^T X_{i+1, t} Xi,tTXi+1,t)”实际上是对每一行(每个 token)计算余弦相似度,然后通过期望 ( E X , t \mathbb{E}_{X, t} EX,t) 取平均。
    • 具体来说,( X i , t T X i + 1 , t ∥ X i , t ∥ 2 ∥ X i + 1 , t ∥ 2 \frac{X_{i, t}^T X_{i+1, t}}{\|X_{i, t}\|_2 \|X_{i+1, t}\|_2} Xi,t2Xi+1,t2Xi,tTXi+1,t) 是第 ( t t t) 个 token 在第 ( i i i) 层输入和输出之间的余弦相似度。( E X , t \mathbb{E}_{X, t} EX,t) 表示对所有样本 ( X X X) 和所有时间步 ( t t t)(即序列中的所有 token)取平均。
  3. 矩阵化的计算

    • 在实际实现中,为了高效计算 BI,我们通常不会单独对每个 ( X i , t X_{i, t} Xi,t) 和 ( X i + 1 , t X_{i+1, t} Xi+1,t) 计算余弦相似度,而是对整个矩阵 ( X i X_i Xi) 和 ( X i + 1 X_{i+1} Xi+1) 进行批量操作:
      • ( X i T X i + 1 ∈ R T × T X_i^T X_{i+1} \in \mathbb{R}^{T \times T} XiTXi+1RT×T) 计算的是所有 token 对之间的点积。
      • 但我们只关心同一 token 的相似度(即 ( X i , t X_{i, t} Xi,t) 和 ( X i + 1 , t X_{i+1, t} Xi+1,t)),所以只取对角线的值。
      • 归一化项 ( ∥ X i , t ∥ 2 ∥ X i + 1 , t ∥ 2 \|X_{i, t}\|_2 \|X_{i+1, t}\|_2 Xi,t2Xi+1,t2) 也是对每一行分别计算模长后相乘。
    • 最后,通过平均操作(( E X , t \mathbb{E}_{X, t} EX,t)),得到整个序列的平均余弦相似度。
总结:

( X i , t X_{i, t} Xi,t) 在公式中表示第 ( t t t) 个 token 的隐藏状态向量(维度为 ( d d d)),但实际计算时,( X i X_i Xi) 是一个 ( T × d T \times d T×d) 的矩阵,包含整个序列的隐藏状态。公式中的操作是对每个 token 的隐藏状态计算余弦相似度后取平均。


通过一个例子解释 BI 公式的计算

假设我们有一个小型 Transformer 模型,序列长度 ( T = 3 T = 3 T=3)(3 个 token),隐藏状态维度 ( d = 2 d = 2 d=2),我们来计算第 ( i i i) 层的 BI 得分。

假设数据:
  • 第 ( i i i) 层的输入矩阵 ( X i X_i Xi)(形状 ( T × d = 3 × 2 T \times d = 3 \times 2 T×d=3×2)):
    X i = [ 1 0 0 1 1 1 ] X_i = \begin{bmatrix} 1 & 0 \\ 0 & 1 \\ 1 & 1 \end{bmatrix} Xi= 101011

    • 第 1 个 token 的隐藏状态 ( X i , 1 = [ 1 , 0 ] X_{i, 1} = [1, 0] Xi,1=[1,0])
    • 第 2 个 token 的隐藏状态 ( X i , 2 = [ 0 , 1 ] X_{i, 2} = [0, 1] Xi,2=[0,1])
    • 第 3 个 token 的隐藏状态 ( X i , 3 = [ 1 , 1 ] X_{i, 3} = [1, 1] Xi,3=[1,1])
  • 第 ( i i i) 层的输出矩阵 ( X i + 1 X_{i+1} Xi+1)(形状 ( 3 × 2 3 \times 2 3×2)):
    X i + 1 = [ 0.9 0.1 0.1 0.9 0.95 0.95 ] X_{i+1} = \begin{bmatrix} 0.9 & 0.1 \\ 0.1 & 0.9 \\ 0.95 & 0.95 \end{bmatrix} Xi+1= 0.90.10.950.10.90.95

    • 第 1 个 token 的隐藏状态 ( X i + 1 , 1 = [ 0.9 , 0.1 ] X_{i+1, 1} = [0.9, 0.1] Xi+1,1=[0.9,0.1])
    • 第 2 个 token 的隐藏状态 ( X i + 1 , 2 = [ 0.1 , 0.9 ] X_{i+1, 2} = [0.1, 0.9] Xi+1,2=[0.1,0.9])
    • 第 3 个 token 的隐藏状态 ( X i + 1 , 3 = [ 0.95 , 0.95 ] X_{i+1, 3} = [0.95, 0.95] Xi+1,3=[0.95,0.95])
步骤 1:计算每个 token 的余弦相似度

余弦相似度的公式为:
CosSim ( X i , t , X i + 1 , t ) = X i , t T X i + 1 , t ∥ X i , t ∥ 2 ∥ X i + 1 , t ∥ 2 \text{CosSim}(X_{i, t}, X_{i+1, t}) = \frac{X_{i, t}^T X_{i+1, t}}{\|X_{i, t}\|_2 \|X_{i+1, t}\|_2} CosSim(Xi,t,Xi+1,t)=Xi,t2Xi+1,t2Xi,tTXi+1,t

  • 对于第 1 个 token (( t = 1 t = 1 t=1))

    • ( X i , 1 = [ 1 , 0 ] X_{i, 1} = [1, 0] Xi,1=[1,0]), ( X i + 1 , 1 = [ 0.9 , 0.1 ] X_{i+1, 1} = [0.9, 0.1] Xi+1,1=[0.9,0.1])
    • 点积:( X i , 1 T X i + 1 , 1 = ( 1 ⋅ 0.9 ) + ( 0 ⋅ 0.1 ) = 0.9 X_{i, 1}^T X_{i+1, 1} = (1 \cdot 0.9) + (0 \cdot 0.1) = 0.9 Xi,1TXi+1,1=(10.9)+(00.1)=0.9)
    • 模长:( ∥ X i , 1 ∥ 2 = 1 2 + 0 2 = 1 \|X_{i, 1}\|_2 = \sqrt{1^2 + 0^2} = 1 Xi,12=12+02 =1), ( ∥ X i + 1 , 1 ∥ 2 = 0. 9 2 + 0. 1 2 = 0.81 + 0.01 = 0.82 ≈ 0.905 \|X_{i+1, 1}\|_2 = \sqrt{0.9^2 + 0.1^2} = \sqrt{0.81 + 0.01} = \sqrt{0.82} \approx 0.905 Xi+1,12=0.92+0.12 =0.81+0.01 =0.82 0.905)
    • 余弦相似度:( 0.9 1 ⋅ 0.905 ≈ 0.995 \frac{0.9}{1 \cdot 0.905} \approx 0.995 10.9050.90.995)
  • 对于第 2 个 token (( t = 2 t = 2 t=2))

    • ( X i , 2 = [ 0 , 1 ] X_{i, 2} = [0, 1] Xi,2=[0,1]), ( X i + 1 , 2 = [ 0.1 , 0.9 ] X_{i+1, 2} = [0.1, 0.9] Xi+1,2=[0.1,0.9])
    • 点积:( X i , 2 T X i + 1 , 2 = ( 0 ⋅ 0.1 ) + ( 1 ⋅ 0.9 ) = 0.9 X_{i, 2}^T X_{i+1, 2} = (0 \cdot 0.1) + (1 \cdot 0.9) = 0.9 Xi,2TXi+1,2=(00.1)+(10.9)=0.9)
    • 模长:( ∥ X i , 2 ∥ 2 = 0 2 + 1 2 = 1 \|X_{i, 2}\|_2 = \sqrt{0^2 + 1^2} = 1 Xi,22=02+12 =1), ( ∥ X i + 1 , 2 ∥ 2 = 0. 1 2 + 0. 9 2 = 0.01 + 0.81 = 0.82 ≈ 0.905 \|X_{i+1, 2}\|_2 = \sqrt{0.1^2 + 0.9^2} = \sqrt{0.01 + 0.81} = \sqrt{0.82} \approx 0.905 Xi+1,22=0.12+0.92 =0.01+0.81 =0.82 0.905)
    • 余弦相似度:( 0.9 1 ⋅ 0.905 ≈ 0.995 \frac{0.9}{1 \cdot 0.905} \approx 0.995 10.9050.90.995)
  • 对于第 3 个 token (( t = 3 t = 3 t=3))

    • ( X i , 3 = [ 1 , 1 ] X_{i, 3} = [1, 1] Xi,3=[1,1]), ( X i + 1 , 3 = [ 0.95 , 0.95 ] X_{i+1, 3} = [0.95, 0.95] Xi+1,3=[0.95,0.95])
    • 点积:( X i , 3 T X i + 1 , 3 = ( 1 ⋅ 0.95 ) + ( 1 ⋅ 0.95 ) = 0.95 + 0.95 = 1.9 X_{i, 3}^T X_{i+1, 3} = (1 \cdot 0.95) + (1 \cdot 0.95) = 0.95 + 0.95 = 1.9 Xi,3TXi+1,3=(10.95)+(10.95)=0.95+0.95=1.9)
    • 模长:( ∥ X i , 3 ∥ 2 = 1 2 + 1 2 = 2 ≈ 1.414 \|X_{i, 3}\|_2 = \sqrt{1^2 + 1^2} = \sqrt{2} \approx 1.414 Xi,32=12+12 =2 1.414), ( ∥ X i + 1 , 3 ∥ 2 = 0.9 5 2 + 0.9 5 2 = 2 ⋅ 0.9 5 2 = 2 ⋅ 0.9025 ≈ 1.805 ≈ 1.343 \|X_{i+1, 3}\|_2 = \sqrt{0.95^2 + 0.95^2} = \sqrt{2 \cdot 0.95^2} = \sqrt{2 \cdot 0.9025} \approx \sqrt{1.805} \approx 1.343 Xi+1,32=0.952+0.952 =20.952 =20.9025 1.805 1.343)
    • 余弦相似度:( 1.9 1.414 ⋅ 1.343 ≈ 1.9 1.899 ≈ 1.0 \frac{1.9}{1.414 \cdot 1.343} \approx \frac{1.9}{1.899} \approx 1.0 1.4141.3431.91.8991.91.0)
步骤 2:计算平均余弦相似度 ( E X , t \mathbb{E}_{X, t} EX,t)

假设我们只有这一个样本 ( X X X)(在实际中会遍历多个样本),对所有时间步 ( t t t) 取平均:
E X , t ( X i , t T X i + 1 , t ∥ X i , t ∥ 2 ∥ X i + 1 , t ∥ 2 ) = 0.995 + 0.995 + 1.0 3 ≈ 0.9967 \mathbb{E}_{X, t} \left( \frac{X_{i, t}^T X_{i+1, t}}{\|X_{i, t}\|_2 \|X_{i+1, t}\|_2} \right) = \frac{0.995 + 0.995 + 1.0}{3} \approx 0.9967 EX,t(Xi,t2Xi+1,t2Xi,tTXi+1,t)=30.995+0.995+1.00.9967

步骤 3:计算 BI 值

B I i = 1 − E X , t ( X i , t T X i + 1 , t ∥ X i , t ∥ 2 ∥ X i + 1 , t ∥ 2 ) = 1 − 0.9967 = 0.0033 \mathrm{BI}_i = 1 - \mathbb{E}_{X, t} \left( \frac{X_{i, t}^T X_{i+1, t}}{\|X_{i, t}\|_2 \|X_{i+1, t}\|_2} \right) = 1 - 0.9967 = 0.0033 BIi=1EX,t(Xi,t2Xi+1,t2Xi,tTXi+1,t)=10.9967=0.0033

解释 BI 值:
  • BI 值为 0.0033,非常低,说明第 ( i i i) 层的输入和输出余弦相似度非常高(接近 1),也就是说这一层对隐藏状态的变换很小,几乎没有改变输入。
  • 根据论文的假设,BI 值越低,说明该层越可能是冗余的,可以考虑移除。

BI 公式的意义

  • 直观理解:BI 衡量的是每一层对隐藏状态的“改造程度”。如果 ( X i , t X_{i, t} Xi,t) 和 ( X i + 1 , t X_{i+1, t} Xi+1,t) 几乎相同(余弦相似度接近 1),那么这一层的作用很小,可能是冗余的。
  • 实际应用:论文通过 BI 排序所有层,移除 BI 得分最低的层(即最冗余的层),从而实现模型压缩。

总结

  • ( X i , t X_{i, t} Xi,t) 是第 ( i i i) 层、第 ( t t t) 个 token 的隐藏状态向量,但实际计算时 ( X i X_i Xi) 是一个矩阵,包含整个序列的隐藏状态。
  • BI 公式的核心是计算每一层输入和输出的平均余弦相似度,BI 值越低,说明该层越冗余。
  • 通过例子,我们看到 BI 的计算过程:对每个 token 计算余弦相似度,取平均后用 1 减去,得到层的“变换程度”。

后记

2025年5月12日于上海,在grok 3大模型辅助下完成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值