1. Self Attention的时候 Q K T QK^T QKT之后要除以 d ? \sqrt{d}? d ?
参考苏剑林大神:
-
- 模型初始化:介绍了常用的采样分布,包括正态分布、均匀分布和截尾正态分布。并从代数角度理解初始化方法,提出用二阶矩来衡量指标是否"消失"或者"爆炸",推导出Xavier初始化和He初始化的方法。
- 激活函数:分析了激活函数对模型初始化的影响,介绍了"微调激活函数的定义"的方法,以sigmoid函数为例,说明了如何通过微调激活函数来保持二阶矩不变。还介绍了selu激活函数,它是基于同样思路进行"微调"后的elu函数。
- 直接标准化:介绍了Batch Normalization、Instance Normalization、Layer Normalization等标准化方法,说明了它们的作用原理和区别。并指出近来的一些工作逐渐尝试去掉center这一步,甚至有些工作的结果显示去掉center这一步后性能还略有提升。类比Stylegan2 中使用去掉 center之后的 weight demodulation 来替代 Instance Nomalization;RMS Norm为什么比 Layer Normalize 更快,效果也基本一致。
- NTK参数化:介绍了NTK参数化的方法,它可以将所有参数都用标准方差初始化,但依然保持二阶矩不变。并讨论了NTK参数化跟直接用Xavier初始化相比的好处,以及Attention中除以 d \sqrt{d} d 的重要性。在结果上预先使用准方差标准化,使的参数初始化可以直接从符合0~1 分布的高斯分布中随机采样。也解释到了 T5 为什么可以不除以 d \sqrt{d} d 。
- 残差连接:讨论了残差 x + F ( x ) x+F(x) x+F(x)的相关设计,指出残差会进一步放大方差,需要想相应的策略缩小其方差。介绍了Post Norm、Pre Norm、SkipInit、ReZero、Fixup等方法,并分析了它们的优缺点。提出 x + α t ∗ F ( x ) x+\alpha_t*F(x) x+αt∗F(x),可以在训练过程中逐步增加 α t \alpha_t αt的大小,直到为 1。
-
- 全文总结:本文从熵不变性的角度重新推导了Transformer架构中Scaled Dot-Product Attention的缩放因子,得到了一个新的缩放因子κlognd。初步的实验结果显示,新的缩放因子不改变已有的训练性能,并且对长度外推具有更好的结果。
重要亮点: - Transformer注意力机制:当前Transformer架构中使用最多的注意力机制是Scaled Dot-Product Attention,其中"Scaled"是因为在Q,K转置相乘之后还要除以一个 d \sqrt{d} d 再做Softmax。
- 熵不变性:为了使得模型结果能够更好地泛化到未知长度,Attention机制的设计应该使得ai,j尽量具备熵不变性。
- 新的缩放因子:根据熵不变性以及一些合理的假设,我们可以得到一个新的缩放因子 κ log n d \frac{κ\logn}{d} dκlogn,从而得到一种Scaled Dot-Product Attention。
- 实验结果:在与训练长度一致的情况下,新的缩放因子Attention-E和常规的Scaled Dot-Product Attention Attention-O的效果是很接近的,但是外推到更大的测试长度时,则明显拉开了差距。
- 相关结果:在阅读ACL2022的投稿论文时,发现上面有一篇《Overcoming a Theoretical Limitation of Self-Attention》,给出了相近的结果。
- 全文总结:本文从熵不变性的角度重新推导了Transformer架构中Scaled Dot-Product Attention的缩放因子,得到了一个新的缩放因子κlognd。初步的实验结果显示,新的缩放因子不改变已有的训练性能,并且对长度外推具有更好的结果。
-
- Attention Scale因子的一般解释:如果不除以d,初始的Attention就会很接近one hot分布,造成梯度消失,导致模型训练不起来。
- 计算梯度:作者定义了Softmax梯度的优化目标,从最大化该目标的角度探讨了Scale因子的最优值。
- 正态分布:作者通过遍历一些n,然后数值求解出取最大值时的α∗,发现一定范围内最优点α∗与n大致满足 α ∗ ≈ 0.84 log n α^*≈0.84\sqrt{\logn} α∗≈0.84logn 的关系。
- 余弦分布:作者通过数值求解最大值,然后再拟合,发现 α ∗ ≈ 3.5 log n α^*≈3.5\sqrt{\logn} α∗≈3.5logn 拟合得也不错。
- 相关思考:对于双向Attention(Encoder)来说,假设训练样本长度相同,那么n就是一个常数,我们可以根据n算得相应的最优α,然后固定在模型中即可;但是对于单向Attention(Decoder)来说,每个token的n实际上都不一样(位置id加1),所以理论上无法做到对所有token都最大化式(3),不过由于α∗关于n的变化较慢,所以取一个差不多的值就行了。
- 本文从梯度的角度探讨了Attention Scale因子的选择问题,相关结果既可以用来改进Attention的Scale因子,也可以用来解释cos相似度的对比学习的温度参数。
汇总一下:如果假设均值为 0,方差为 1 的 Attention Score 会带来更好的效果,除以 d \sqrt{d} d 会使的 q k T qk^T qkT之后的Attention Score方差为1。从熵不变性来考虑,给有助于提高模型在长度外推方面的表现,增强泛化能力。从Softmax梯度的优化目标梯度最大化来看的话,这个 scale 应该为 α d \frac{\alpha}{\sqrt{d}} d α。相当于在讨论给 softmax 激活函数怎么加上一个合适的温度系数!