Transofmer中的N个为什么

159 阅读2分钟

问题收集&回答

1. warmup为什么更有效?

warmup是一种学习率先上升再衰减的学习率的应用。主要原因和网络的深度以及梯度大小有关,在许多论文中都有体现。 香侬读 | Transformer中warm-up和LayerNorm的重要性探究

warmup别的用法

在对比学习研究中,在学习率上升阶段模型所能正确区分的样本被认为是具有典型的正负样本特征的,称为容易区分样本(错误识别率很低),后续下降阶段所处理的样本被认为难以区分的样本(错误识别率很高)。 常用于给对比学习中的pair构建系数矩阵。

2. 为什么FeedForward执行了放大-缩放操作(特征维度从512映射到2048)?

3. 为什么要共享Embedding参数?可不可以不共享

原文:In our model, we share the same weight matrix between the two embedding layers and the pre-softmax linear transformation

这样做的意义是当目标语言和源语言有相同subword的时候可以共享语义信息,目标语言和源语言共用一张大的词表 但对于不同语言之间翻译来说的话可能意义不大因为没有相同的subword, 权重共享会在做softmax时加大计算量,所以实际中是否使用还要权衡。

4. 对于ADD&Normal,先ADD和先执行Layer Normal有什么区别。

由被称为Post-LN(图a),Pre-LN(图b)区别主要在于回传梯度的大小,从而影响学习率选择的策略。 具体推导参考: Kaiming大神2016年的这篇文章中已经指出了BN、activation和Residual的关系了,并且提供了简单的数学证明,有兴趣的同学可以看看。(再次膜拜Kaiming大神) Identity Mappings in Deep Residual Networks

5. FNN中的激活函数如何选择?为什么是Relu

6. 相对位置编码?

7. 为什么要除以dk\sqrt{d_k}

Attention(Q,K,V)=softmax(QKTdk)V\operatorname{Attention}(Q, K, V)=\operatorname{softmax}\left(\frac{Q K^{T}}{\sqrt{d_{k}}}\right) V

答: 先假设A=f(x),B=g(x)A=f(x),B=g(x)两个向量均服从正态分布,则两个分布乘积可以推导如下:

image.png

h(x)h(x)的分布的均值为u0u_0,方差为σ0\sigma_{0}

u0=μ1σ22+μ2σ12σ12+σ22u_0 =\frac{\mu_{1} \sigma_{2}^{2}+\mu_{2} \sigma_{1}^{2}}{\sigma_{1}^{2}+\sigma_{2}^{2}}
σ0=σ12σ22σ12+σ22\sigma_0 = \frac{\sigma_{1}^2 \sigma_{2}^2}{{\sigma_{1}^{2}+\sigma_{2}^{2}}}

因此新的分布均值仍然为1,方差为原来的1/2。所以对与N维的向量A和B来说:

i=1N(AiBi)=N\sum_{i=1}^{N}(A_i*B_i) = N

同理对于QKTQK^T中的每一个元素都类似于A*B这样,但不一定刚好是正态分布,这里只是方便举例子,因此都要除以dk\sqrt{d_k},对权重矩阵进行缩放后,再乘以VV进行加权。

参考内容: