Transformer
21年cs224n的Transformer这课换了TA来讲,有点听不太懂(我是菜狗)这篇suggested reading讲得非常清楚
The Illustrated Transformer
Key-Query-Value Attention
使得xi的不同方面得以被使用或强调。
计算分数时,除以d的平方根以获得更加稳定的梯度。softmax计算得到的某单词上的权重可以被视作为该单词应当被获得的注意力大小,最后的加权平均体现了注意力大的单词作用到z的影响力更大,而注意力小的单词倾向于被忽略(权重很小)。
矩阵运算
X的每一行都代表了一个词嵌入, X ∈ R T × d , K , Q , V ∈ R d × d X\in R^{T\times d}, K,Q,V\in R^{d\times d} X∈RT×d,K,Q,V∈Rd×d(事实上K,Q,V的列数可以不等于d,例如图上所示)。
如此一来, X K , X Q , X V ∈ R T × d XK, XQ, XV\in R^{T\times d} XK,XQ,XV∈RT×d 。
综合计算过程如下
多头注意力机制
同时关注一句话中的多个词,通过使用不同的K,Q,V矩阵实现。
一种是ppt上的方法,令
Q
l
,
K
l
,
V
l
∈
R
d
×
d
h
Q_l,K_l,V_l\in R^{d\times \frac{d}{h}}
Ql,Kl,Vl∈Rd×hd ,其中h是注意力头的数目,最后拼接起h个z;另一种是链接里的方法,保持Q,K,V的维数不变,拼接Z成一个大向量
一个注意力头的重点在animal,另一个注意力头的重点在tired
最后一个线性层
linear layer是一个简单的全连接神经网络,它将decoder堆栈产生的向量投射到一个大得多的向量(维数为vocab的大小),称为logits向量,每个元素对应了每个单词的得分。再经过一个softmax,得分转化为概率,于是概率最高的元素对应的单词就被选取。
训练技巧
Residual connections
只需要学习第i层和第i-1层有什么不同,而不是需要从头开始学
Layer normalization
加速训练过程,减少无信息的变化传递