【机器学习】Transformer
Transformer:
- 输入序列和输出序列的长度没有绝对的关系,输出序列长度由机器自己决定
- 使用自注意力机制来解决seq2seq问题
整个过程原理图:
- Encoder:处理输入
- Decoder:输出结果
- Cross attention:联系二者
Encoder:处理输入
输入一排向得到另外一排向量
每个Encoder包含多个Block:
每个Block具体做的事情:
总的来说:每个Block
- 自注意力机制(多Head&考虑位置关系)
- Add(residual connection):自注意力结果+自身输入
- Nom(layer normalization):只考自身的正则化
- 前馈全连接网络
- Add & Nom
Decoder:输出结果
Auto regressive(AT):后依赖前
- BEGIN:输入一个Special token,开始工作
- 中间输出:依赖于前一个结果,得分最高的输出
- END:结束
不常用的Decoder:Non-Auto regressive(NAT):平行化。AT比NAT慢。NAT有另外的机制给定一个输出长度
Masked Multi-Head attention
当前的自注意力计算只考虑前面的输入向量
Encode和Decoder如何联系:Cross Attention
seq2seq训练技巧
- 复制:特有名词不需练
- 指导机器如何做Self-Attention
- Beam Search:毒死自己一步,后面反而赢了
- Schedule Sampling:偶尔给Decoder一些错误的训练集