Attention is All You Need作为NLPer必须反复阅读和深刻理解的经典论文,提出了Transformer这样一个效果优异的特征抽取器,被广泛应用于后续的预训练模型。
网络上关于Transformer的优秀解读很多,本文仅记录了本人的一些思考和理解。
一、模型架构解读
Transformer是基于经典的机器翻译Seq2Seq框架提出的,区别在于Encoder和Decoder中大量使用attention机制提取信息。
1.1 Encoder
Encoder的底层为类似于词向量的embedding层,然后接6层Multi-Head Attention和Position Forward的堆叠。
- Embedding
在Transformer中,embedding包括两部分:预训练的词向量,以及表示token位置信息的position embedding。因为self-attention机制本身并不考虑词序的影响,因此必须引入position embedding。论文对比了预定义的position embedding和学习得到的embedding值,发现效果相当。为了方便,以及长文本的外插,采用简单的三角函数的表达形式:
P E ( p o s , 2 i ) = sin ( p o s / 1000 0 2 i / d m o d e l ) ; P E ( p o s , 2 i + 1 ) = cos ( p o s / 1000 0 2 i + 1 / d m o d e l ) PE_{(pos,2i)}=\sin(pos/10000^{2i/d_{model}});PE_{(pos,2i+1)}=\cos(pos/10000^{
{2i+1}/d_{model}}) PE(pos,2i)=sin(pos/100002i/dmodel);PE(pos,2i+1)=cos(pos/100002i+1/dmodel)+ Multi-Head self Attention
通过self-attention的方式得到输入sequence中各token间的信息,同时采用多头机制保证了子空间特征抽取的多样性。
每层的每个Head内均有待训练 W Q , W K , W V W^Q,W^K,W^V WQ,WK,WV矩阵用于将embedding转化为对应的query,key和value(详见浅析NLP中的Attention技术),通过矩阵运算保证了计算速度: A t t e n t i o n ( Q , K , V ) = s o f t m a x ( Q K T d k ) V Attention(Q,K,V)={softmax}(\frac{QK^T}{\sqrt{d_k}})V Attention(Q,K,V)=softmax(dkQKT)V
- Position Forward
Position Forward是一个简单的2层全连接前向网络:
F F N ( x ) = max ( 0 , x W 1 + b 1 ) W 2