一、概要
特点:Transformer注意力模型解决了RNN中的attention效率低、训练时变形的问题。
目的:机器翻译
二、基本组成
encoder和decoder是可叠加的。
解码器拿到编码器的特征,结合已经翻译的单词完成翻译。
如下图所示,红框表示encoder,蓝框表示decoder,N=6。
输入:待翻译的词汇(L个独热编码) + 已翻译的词汇(M个独热编码)
输出:单词的概率
嵌入层:通过一个变换将单词的one-hot表示映射到连续空间上,其维度与模型维度512一致,可使用nn.Embedding函数实现。从而有:待翻译的句子(L*512) + 已翻译的词汇(M*512)。
位置编码:i表示第几维,pos表示单词位置
三、编码器
如上所示,区别于RNN中的注意力机制,每个单词向量(512维)通过三个线性变换成q、k、v。
下面先将多头注意力机制分解成单个来看。
计算过程如下:
a11=q1*k1,a12=q1*k2,……,a1L=q1*kL
再通过softmax进行归一化得新的a1j,然后对每一对a1j * vj 累加求和,即最后的输出z。
其中除以根号dk(key的维度)是为了解决方差大,将softmax推向低梯度的问题。
如下所示,体现了特征之间的相互依赖性。
q、k、v的产生过程如下,512维的单词向量与W矩阵相乘:
同样,输出z也可以通过矩阵运算来实现,如下所示:
从而,编码器中的多头注意力机制即给出h=8组W矩阵,将输出的8组z连接起来,再乘以一个权重矩阵,最后输出Z。
论文中公式如下:
softmax前包含mask,去除掉句子结尾padding在训练过程中的影响。
编码器中Add&Norm的操作如下所示,在残差之后用layernorm:
编码器中的FFN为二层网络,512->2048->512,公式如下:
四、解码器
解码器同样包含mask,针对decoder的输入,不仅要去除padding的影响,同时为了防止decoder看到未来的信息,要对输入做一个上三角mask,保持自回归的特性。
五、自监督学习
下面简述cv领域的应用。
六、Non-local
(待补充)
七、ViT
(待补充)
八、MAE
基于ViT+BERT
遮住更多的图片块,使留下的不冗余
编码时只处理没遮住的
用Transformer解码