机器学习|transformer学习总结

Self-Attention 将输入x乘以矩阵W得到向量a,然后用向量a分别乘以三个矩阵,得到三个向量q,k,v
机器学习|transformer学习总结
文章图片

拿第一个q分别对每一个k做attention计算,得到结果α
机器学习|transformer学习总结
文章图片

自注意力得分决定了在编码单词x1的过程中有多重视句子的其它单词。
机器学习|transformer学习总结
文章图片

将得到的所有α做softmax处理,得到ā
softmax分数决定了每个单词对编码当下位置x1的贡献机器学习|transformer学习总结
文章图片

将ā与v相乘再相加,得到输出b
机器学习|transformer学习总结
文章图片

用同样的方法得到得到所有的输出b
机器学习|transformer学习总结
文章图片

所有的输出b都是同时计算出来的
机器学习|transformer学习总结
文章图片

下面的图展示的是上面几个步骤的向量化,然后通过矩阵运算实现
机器学习|transformer学习总结
文章图片

机器学习|transformer学习总结
文章图片

机器学习|transformer学习总结
文章图片

机器学习|transformer学习总结
文章图片

Multi-head Self-attention 在多头注意机制下,每个头保持独立的查询/键/值权重矩阵,从而产生不同的查询/键/值矩阵。
机器学习|transformer学习总结
文章图片

机器学习|transformer学习总结
文章图片

直接把得到的输出矩阵拼接在一起,然后用一个附加的权重矩阵WO与它们相乘,得到最终的输出矩阵
机器学习|transformer学习总结
文章图片

【机器学习|transformer学习总结】在attention机制中加入position information
机器学习|transformer学习总结
文章图片

加入self-attention的seq2seq
机器学习|transformer学习总结
文章图片

Transformer 机器学习|transformer学习总结
文章图片

机器学习|transformer学习总结
文章图片

机器学习|transformer学习总结
文章图片

Encoder部分
机器学习|transformer学习总结
文章图片

主要包括两部分,multi-head attention 和 feed forward
Multi-Head Attention
Feed Forward
这是一个由两层神经元组成的前向传播网络,第一层的激活函数是relu,第二层的激活函数是identity。第二层的输出维度和第一层的输入维度相同。
Add&Norm
Add的意思就是将上一层的输出结果和它的输入值相加,Norm就是经典的LayerNorm了。
输入序列中每个位置的单词都有自己独特的路径流入编码器。在自注意力层中,这些路径之间存在依赖关系。而前馈(feed-forward)层没有这些依赖关系。因此在前馈(feed-forward)层时可以并行执行各种路径。
Decoder部分
机器学习|transformer学习总结
文章图片

顶端编码器的输出之后会变转化为一个包含向量K(键向量)和V(值向量)的注意力向量集 。这些向量将被每个解码器用于自身的“编码-解码注意力层”,而这些层可以帮助解码器关注输入序列哪些位置合适
Masked multi-head attention: 和编码部分的multi-head attention类似
解码器中的自注意力层表现的模式与编码器不同:在解码器中,自注意力层只被允许处理输出序列中更靠前的那些位置。在softmax步骤前,它会把后面的位置给隐去。
机器学习|transformer学习总结
文章图片

Multi-Head Attention
这个“编码-解码注意力层”工作方式基本就像多头自注意力层一样,它是通过在它下面的自注意力层来创造查询矩阵,并且从Encoder编码器的输出中取得键/值矩阵。
Linear
解码组件最后会输出一个实数向量。线性变换层要做的工作是把浮点数变成一个单词。
线性变换层是一个简单的全连接神经网络,它可以把解码组件产生的向量投射到一个比它大得多的、被称作对数几率(logits)的向量里。
Softmax 层
不妨假设我们的模型从训练集中学习一万个不同的英语单词(我们模型的“输出词表”)。因此对数几率向量为一万个单元格长度的向量——每个单元格对应某一个单词的分数。
接下来的Softmax 层便会把那些分数变成概率(都为正数、上限1.0)。概率最高的单元格被选中,并且它对应的单词被作为这个时间步的输出。
解码(decoding )阶段的每一个时间步都输出一个翻译后的单词(这里的例子是英语翻译)。重复这个过程,直到输出一个结束符,Transformer 就完成了所有的输出。每一步的输出都会在下一个时间步输入到下面的第一个解码器。Decoder 就像 Encoder 那样,从下往上一层一层地输出结果。正对如编码器的输入所做的处理,我们把解码器的输入向量,也加上位置编码向量,来指示每个词的位置。
机器学习|transformer学习总结
文章图片

    推荐阅读