Seq2seq
就是input加到Encoder里,再进Decoder得到output
Encoder
- 这里的Layer norm是对一个输入example的所有dimension做normalization
- 总共两次res,两次norm,对每次res完的加和做norm
实际流程
这样的Encoder也用在了BERT里
改进
第一篇paper:证明把Layer norm加在res后的主分支里,效果会更好。
第二盘paper:证明了为什么Layer norm在这里要比Batch norm要更好,提出了PowerNorm,好像要更好一点?
Decoder—Autoregressive(AT)
大致流程
具体流程
Masked Self-attention
Masked指的是在计算
Decode—Non-autoregressive(NAT)
为什么NAT不如AT?因为Multi-modality(详见 To leatn more)
Cross attention
它衔接了Encoder与Decoder
就是把Encoder的输出再拿来,这一次只用当前input的这一个向量
改进
也可以不用Encoder的最后一层的output做Cross Attention
Training
Tips

我们有时候需要机器去做“复述”
Attention的着重点有时候会出错,可guide它
原本的AT是贪心的,可以用柱搜索,做动态规划,但是效果对于实际场景不一,如果问题的正确性比较明确,Beam Search就比较有用,但是有的问题,甚至test的时候都需要一些随机性才能有好的效果
小tip:optim遇到问题的时候可以用RL硬train!
因为train的时候给Decoder的是Ground Truth,为了防止test的时候有wrong propagation,可以在train的时候加noise。
这个打钱就像赞一样,如果你想赞,可以赞一分
- Post link: https://flyleeee.github.io/2021/10/03/Transformer/
- Copyright Notice: All articles in this blog are licensed under unless otherwise stated.