Transformer在做什么事情?
- 下图是一个机器翻译流程:输入中文经过Transformer得到对应翻译的英文
- 细化流程图:Transformer模型可以拆解为Encoders + Decoders
- 继续细化:注意所有Encoders是结构上完全相同(参数上不是:也就是说要训练所有的Encoders)的且数量可以自定义,Decoders也是完全相同(参数上不是:也就是说要训练所有的Decoders)的且数量可以自定义,Encoders和Decoders架构不相同。
- Transformer原论文图
Encoder细节
Encoder可以分为以下三个部分:
1. 输入部分
1.1 Embedding
Embedding
就是用一个数值向量“表示”一个对象(Object)的方法
1.2 位置嵌入
上图是RNN的架构,RNN具有天然的时序关系(有先后顺序)
Transformer则是一起处理,增强了速度但是忽略了单词之间的序列关系,所以需要位置编码来告诉模型,单词之间的排列顺序
位置编码公式
2. 注意力机制
注意力机制计算公式
例子1:
例子2:
残差和Laynorm
- x1和x2是词向量
- 经过位置编码后对应位相加得到新的x1和x2
- 经过注意力层得到z1和z2
- 把x和z对应位相加作为残差的一个结果
- 经过layerNorm后输出
3.1 残差
PS:使用LayerNorm而不使用传统BatchNorm
BN
feature scaling为了让模型收敛的更快
BN:对整个Batch样本的同一纬度做处理
LN
3. 前馈神经网络
Decoder细节
1. 多头注意力机制
2. 交互层
encoder和每一个decoder做交互
encoder生成K、V矩阵
decoder生成Q矩阵