转载:https://wmathor.com/index.php/archives/1438/
1.Transformer为什么需要进行Multi-head Attention?
1.让模型关注不同方面的信息,最后将各个方面的信息综合起来(将模型分为多个头,形成多个子空间)。
2.直观上,如果自己设计这样的一个模型,必然也不会只做一次 attention,多次 attention 综合的结果至少能够起到增强模型的作用,也可以类比 CNN 中同时使用多个卷积核的作用,直观上讲,多头的注意力有助于网络捕捉到更丰富的特征 / 信息。
2.Transformer相比于RNN/LSTM,有什么优势?为什么?
1.RNN系列模型,无法并行计算,因为 T 时刻的计算依赖 T-1 时刻的隐层计算结果,而 T-1 时刻的计算依赖 T-2 时刻的隐层计算结果
2.Transformer 的特征抽取能力比 RNN 系列的模型要好
3.为什么说 Transformer 可以代替 seq2seq?
1.这里用代替这个词略显不妥当,seq2seq 虽已老,但始终还是有其用武之地。
2.seq2seq最大问题:将Encoder端所有细腻些压缩到一个固定长度的向量中,并将其作为Decoder端 首个隐藏状态的输入,来预测Decoder端第一词(token)的隐藏状态。在输入序列比较长的时候,这样做显然会损失 Encoder 端的很多信息,而且这样一股脑的把该固定向量送入 Decoder 端,Decoder 端不能够关注到其想要关注的信息。
3.Transformer 不但对 seq2seq 模型这两点缺点有了实质性的改进(多头交互式attention模块),而且引入self-attention 模块,让源序列和目标序列首先 “自关联” 起来,这样的话,源序列和目标序列自身的 embedding 表示所蕴含的信息更加丰富,而且后续的 FFN 层也增强了模型的表达能力,并且 Transformer 并行计算的能力远远超过了 seq2seq 系列模型。