基本概念
- 关于位置编码的一切:https://kexue.fm/archives/8130#T5%E5%BC%8F
残差连接
Post Norm
关注深度
- 残差的意思是给前面的层搞一条“绿色通道”,让梯度可以更直接地回传,但是在Post Norm中,这条“绿色通道”被严重削弱了,越靠近前面的通道反而权重越小,残差“名存实亡”,因此还是不容易训练。
举个例子:假设初始状态下x,F(x)的方差均为1,那么x+F(x)的方差就是2,而Normalization操作负责将方差重新降为1
Pre Norm
关注宽度
每一条残差通道都是平权的,残差的作用会比Post Norm更加明显,所以它也更好优化。当然,这样最后的xl方差将会很大,所以在接预测层之前xl也还要加个Normalization。
Scale 缩放
-
NTK参数化:均值为0、方差为1的随机分布”来初始化,但是将输出结果除以 m \sqrt{m} m
-
注意力机制中的缩放,使得q和k的方差为1
熵不变性
-
a
i
,
j
a_{i,j}
ai,j是注意力的分布
- 因为当n较大时,缩放因子过大,会导致严重的梯度消失。
- 但是对于长度具有比较好的外推性
直接外推
- 输入的一些维度训练阶段设为0,推理阶段直接改为其他数字,这就是外推(Extrapolation)。
外推的问题: - 训练阶段预留的维度一直是0,如果推理阶段改为其他数字,效果不见得会好,因为模型对没被训练过的情况不一定具有适应能力。也就是说,由于某些维度的训练数据不充分,所以直接进行外推通常会导致模型的性能严重下降。
- 外推比内插确实需要更多的微调步数。
线性内插
线性内插的问题:
- 当处理范围进一步增大时,相邻差异则更小,并且这个相邻差异变小集中在个位数,剩下的百位、十位,还是保留了相邻差异为1。换句话说,内插方法使得不同维度的分布情况不一样,每个维度变得不对等起来,模型进一步学习难度也更大。
进制转换 NTK
NTK-aware Scaled RoPE
- 位置编码更依赖于序信息,而进制转换基本不改变序的比较规则
- NTK-aware Scaled RoPE在不微调的情况下,也能在更长Context上取得不错的效果。
- 神经网络无法直接学习高频信号,解决办法是要将它转化为Fourier特征
- 把外推和内插结合起来——高频外推、低频内插
实验结论:
- 直接外推的效果不大行;
- 内插如果不微调,效果也很差;
- NTK-RoPE不微调就取得了非平凡(但有所下降)的外推结果;
- 加入 l o g n logn logn来集中注意力确实有帮助。
小结一下
我们也可以从语言模型的局域性来考察这些方法。
所谓局域性,是指语言模型在推断下一个token时,明显更依赖于邻近的token。
-
直接外推保持了局域性(0附近位置编码不变),效果差是因为引入了超出训练长度的位置编码;
-
位置内插虽然没有外推位置编码,但扰乱了局域性(0附近位置编码被压缩为),所以不微调效果也不好;
-
而NTK-aware Scaled RoPE通过“高频外推、低频内插”隐含了两者优点,保证了局域性,又没有明显外推位置编码,所以不微调也有不错的效果。
HWFA
局部的window attention
-
感受野被限制在w内:由于每层的感受野被限制在w
内,注意力机制的能力大大削弱 -
window attention缺少全局依赖性:我们对长度外推的期望其实不仅仅是“平移不变性”,而是“平移更好性”,也就是说越往后效果应该越好才对(比如In Context Learning场景,给的examples越多,效果应该越好),所以模型还应该要能捕捉全局依赖的能力。
分析:
- Window Attention得到的结果本质上就是某种n-gram特征,只不过在多层堆叠之下这个n会变得比较大;
- 而单层的Full Attention可以看作是某种“检索”(从query、key、value这些称呼就可以看出)和“融合”,它的规律相对来说比较容易分析
- 单层(全)注意力可以通过增加 l o g n logn logn缩放因子来增强长度外推性的结论
Hybird Window-Full Attention
提出思路:
如果前面L−1层通过Window Attention获得了n-gram特征,最后一层可否替换为带logn因子的Full Attention来检索和整合这些特征,以弥补效果上的差距和获得全局依赖的能力呢?