【 白话科普:Transformer和注意力机制】-张铁蕾

一个token的向量值,需要从句子上下文中的其他token中「吸收」信息,在数学上可以表达为所有token的向量值的加权平均。这些权重值,我们可以称之为注意力权重。
在Encoder中,每经过一层Encoder Layer,一个token都会「参考」上一层的所有token,并根据对它们注意力权重的不同,决定「携带」它们中多少量的信息进来。
三个Decoder Layer,每个Decoder Layer中又包含两个注意力机制:
一个自注意力 (self-attention);
一个交叉注意力 (corss-attention)
交叉注意力与自注意力不同的地方在于:自注意力用于表达同一个序列内部各个token之间的注意力权重,而交叉注意力则用于表达两个不同序列的token之间的注意力权重。
Decoder中的交叉注意力,允许在生成下一个token的过程中,以输入序列的内部表示作为参考。
把整个Encoding和Decoding的过程放在一起,总结一下:
对输入序列进行Encoding,每经过一层Encoder Layer,都执行一次自注意力的过程。每个token都从所有其他token「获取」信息。经过最后一层Encoder Layer之后,每个token得到了一个「最佳」的内部表示。
通过Decoding过程进行生成,每经过一层Decoder Layer,都执行一次自注意力和一次交叉注意力的过程。
在自注意力执行过程中,生成序列中的每个token只从它前面的token「获取」信息。
在交叉注意力执行过程中,生成序列中的每个token都从Encoding结束后得到的内部表示中的所有其他token「获取」信息。
【相关动图】
http://t.cn/A6nKGrmP
