相关博客
【自然语言处理】【大模型】语言模型物理学 第3.3部分:知识容量Scaling Laws
【自然语言处理】Transformer中的一种线性特征
【自然语言处理】【大模型】DeepSeek-V2论文解析
【自然语言处理】【大模型】BitNet:用1-bit Transformer训练LLM
【自然语言处理】BitNet b1.58:1bit LLM时代
【自然语言处理】【长文本处理】RMT:能处理长度超过一百万token的Transformer
【自然语言处理】【大模型】MPT模型结构源码解析(单机版)
【自然语言处理】【大模型】ChatGLM-6B模型结构代码解析(单机版)
【自然语言处理】【大模型】BLOOM模型结构源码解析(单机版)
论文名称:Your Transformer is Secretly Linear
论文地址:https://arxiv.org/pdf/2405.12250
一、简介
- 本文揭示了transformer decoder独有的一种线性特征。分析相邻层的embedding变换,发现其具有接近完美的线性关系。
- 由于transformer层输出的范数一直很小,当移除残差链接时,线性度下降。
- 实验显示,当移除特别接近于线性的模块或者使用线性近似这些模块,对loss或者模型表现几乎没有影响。
- 通过在预训练中引入基于cosine相似度的正则化项来降低层的线性度,改善了模型在TinyStories和SuperGLUE上的效果。
二、线性评分
将Procrustes相似度推广到任意线性变换,从而实现了一种评估两组向量线性依赖程度的度量指标。
令 X , Y ∈ R n × d X,Y\in\mathbb{R}^{n\times d} X,Y∈Rn×d表示embedding集合。为了计算线性评分,先计算规范化矩阵 X ~ = X / ∥ X ∥ 2 , Y ~ = Y / ∥ Y ∥ 2 \tilde{X}=X/\parallel X\parallel_2,\tilde{Y}=Y/\parallel Y\parallel_2 X~=X/∥X∥2,Y~=Y/∥Y∥2。那么线性评分为
linearity_score = 1 − min A ∈ R d × d ∥ X ~ A − Y ~ ∥ 2 2 \text{linearity\_score}=1-\min_{A\in R^{d\times d}}\parallel\tilde{X}A-\tilde{Y}\parallel_2^2 \\ linearity_score=1−A∈Rd×dmin∥X~A−Y~∥22
这个形式与Procrustes相似度几乎一致。仅有的差别是在考虑最小化时考虑所有线性变换,而不仅仅是正交变换,从而找出最优映射的均分误差。
这种方式在评估embedding线性度方面更具鲁棒性。不同于 L 2 L_2 L2范数,其缺少尺度不变性,Procrustes normalization能够提供一个介于[0,1]的有界度量指标。令人惊讶的是,所有测试的transformer decoders的线性分数都接近于1,也就表明embedding的变换高度地线性(如上图1左所示)。
通过将每层的embedding值减去前一层embedding来评估main stream的线性度(即是否使用残差链接的embedding),发现线性程度显著下降。此外,每个块对于范数的贡献较低会导致相邻层的embedding的cos相似度接近。
从另一个角度来看,看似线性块的组合可能导致非线性的结果。之前的一些研究也表明,应用了注意力头的transformer可以跨神经网络组件编码复杂特征。这也表明线性变换的累计影响可能会编码复杂的非线性表示。
三、预训练和微调中的线性动态
进一步探索在预训练和微调过程中的线性度动态。
如上图2所示,随着模型预训练的进行,main stream的线性度逐步下降。这种现象在所有测试的模型中都存在,这表明其是transformer-decoder学习动态的一个基础性质。
跨各种任务的微调阶段与预训练阶段相反,所有模型在微调过程中的线性度会增加。这个发现表明,任务相关的微调倾向于强化transformer模型中的线性特征。
四、使用正则化预训练改善线性度
为了理解transformer模型中线性度的影响,使用尺寸大小为150M和650M的Mistral架构进行预训练实验。这些模型在精心挑选的干净数据集上预训练,包括TinyStories和Tiny-textbooks。
引入特定的loss项来调整transformer层之间embedding的关系:
-
MSE正则化项
对连续层之间的embedding使用MSE正则化项,最小化这些embedding的距离,促进层间一致性。
L MSE = λ ∑ ( ∥ emb i − emb i − 1 ∥ 2 ) L_{\text{MSE}}=\lambda\sum(\parallel\text{emb}_i-\text{emb}_{i-1} \parallel^2) \\ LMSE=λ∑(∥embi−embi−1∥2) -
Cosine相似度正则化项
使用cosine相似度正则化项将相邻层的embedding角度差异降低至0。
L cosine = λ ∑ ( 1 − cos ( emb i , emb i − 1 ) ) L_{\text{cosine}}=\lambda\sum(1-\cos(\text{emb}_i,\text{emb}_{i-1})) \\ Lcosine=λ∑(1−cos(embi,embi−1))
使用基于cosine的方法能够实现最好的结果,能够使得cosine相似度接近于1。该方法在增强模型效果方面很有前景。通过GPT-4在TinyStories、线性探针技术和SuperGLUE基准上评估方法有效性。结果如下表2和下表3所示。
此外,如下图4所示,使用这种正则化项进行预训练后,线性评分更低。