Transfromer模型
1.概述
transformer是一种应用很广泛的语义模型,最近很多NLP场景已经应用了transformer,有的是使用transformer的整个seq2seq架构,也有很多任务只使用其encoder部分,包括最近很火的GPT/BERT。
2.整体框架
3.encoder-decoder框架
1).输入层
这一层仅仅是做了embedding操作,然后将token映射成向量。
然后将position和embedding做positional encoding操作。
为了能和embedding层的信息做sum,positional encoding layer与embedding层保持相同的维度数。
paper中提供了两种positon embedding 的方法,一种是直接训练得到,另一种是sine/cosine 来表征token的位置信息,具体公式如下
其中pos表示token的位置,即当前token是第几个token;i 表示dimension。
2).Encoder层
Multi-Head Attention
Scaled Dot-Product Attention
Feed Forward
Position-wise Feed-Forward Networks 是由两个使用ReLU作为激活函数的线性变换构成的,具体数学表达式如下
3).Decoder
除Multi-Head Attention以外与encoder一样
Multi-Head Attention
这里的Multi-Head Attention与Encoder中的区别是此处的 Q=上一层decoder编码结果,K=V=Encoder编码结果
添加这个layer的作用(或者说目的)是引入encoder的信息,并根据上一层Masked Multi-Head Attention的输出,focus在与生成下一个word最相关的words上