深度学习模型参数计算:深度学习之Attention模型详解
深度学习模型参数计算:深度学习之Attention模型详解LN针对单个训练样本进行,不依赖于其他数据。避免了受mini batch中其他数据的影响。与 BN 不同,LN 是一种横向的规范化。Position Embedding本身是一个绝对位置的信息,但在语言中,相对位置也很重要,Google选择前述的位置向量公式的一个重要原因是:由于我们有这表明位置p k的向量可以表示成位置p的向量的线性变换,这提供了表达相对位置信息的可能性。随着深度的增加会导致梯度出现弥散或者爆炸,更为严重的是会导致模型退化 (也就是在训练集上性能饱和甚至下降,与过拟合不同)。深度残差网络就是为了解决退化的问题。其实引入残差连接,也是为了尽可能保留原始输入x的信息。
从上图粗看,Transform仍延续着一个Encoder一个Decoder的形式。
重要部件:
- Positional embedding。正如上面所说,self attention缺乏位置信息,这是不合理的。为了引入位置信息,这里用了一个部件position embedding。
这里考虑每个token的position embedding的向量维度也是d维的,与input embedding的输出一样,然后将input embedding和position embedding 加起来组成最终的embedding输入到上面的encoder/decoder中去。这里的position embedding计算公式如下:
其中pos表示位置的index,i表示dimension index。
Position Embedding本身是一个绝对位置的信息,但在语言中,相对位置也很重要,Google选择前述的位置向量公式的一个重要原因是:由于我们有
这表明位置p k的向量可以表示成位置p的向量的线性变换,这提供了表达相对位置信息的可能性。
- residual connection 。无论是encoder还是decoder,我们都能看到存在residual connection这种跳跃连接。
随着深度的增加会导致梯度出现弥散或者爆炸,更为严重的是会导致模型退化 (也就是在训练集上性能饱和甚至下降,与过拟合不同)。深度残差网络就是为了解决退化的问题。其实引入残差连接,也是为了尽可能保留原始输入x的信息。
- Layer Normalization
与 BN 不同,LN 是一种横向的规范化。
LN针对单个训练样本进行,不依赖于其他数据。避免了受mini batch中其他数据的影响。
BN适用于不同mini batch数据分布差异不大的情况,而且BN需要开辟变量存每个节点的均值和方差,空间消耗略大;而且 BN适用于有mini_batch的场景。
- Masked Multi-Head Attention
这里用mask来遮蔽当前位置后面的单词。实现也很简单,采用一个上三角都为1,下三角为0的矩阵。
小结一下:本文对attention的概念进行了本质上的转变。传统的attention是在端尾计算源文本各个token对该时刻单词的贡献。而self attention将这个过程提到了端口,计算当前句子中token的相关性来充分各个token的表达其语义。简单的讲就是传统的attention是为了使输出端表达充分,而self attention 是为了使输入端表达充分。尽管他们的形式都可以用Q,K,V框架来解释。
An Attentive Survey of Attention Models
《An Attentive Survey of Attention Models》 是香农科技提出的一篇关于attention的综述论文。