如何理解谷歌团队的机器翻译新作《Attention is all you need》

如题所述

这是我找到的你看看吧
作者:谭旭
链接:https://www.zhihu.com/question/61077555/answer/183884003
来源:知乎
刚看到论文确实很震惊,FAIR在上个月刚祭出state of the art的convseq2seq,Google就用一堆attention予以回应,WMT en-de和en-fr都刷到了新的state of the art,而且这次不用RNN,不用CNN,只有attention,可谓大道至简。

算法细节可以参见paper,这里简单说下attention取得好的效果的直观感觉。传统的用RNN建模语言的时序特征,前面的单词信息都依次feed到后面一个单词,这种信息的堆叠感觉有点浪费,而且反而把信息糅杂在一起不好区分,虽然decoder阶段对每个单词对应的encoder输出位置做attention,但每个encoder输出已经夹杂了前面单词的信息。同时前面单词信息往后传,走的路径比较长,也就是long dependency的问题,虽然LSTM/GRU这种结构能一定程度上解决,但是毕竟不能完全去掉long dependency。而conv在处理dependency问题时,利用卷积的感受野receptive field,通过堆叠卷积层来扩大每个encoder输出位置所覆盖单词的范围,每个单词走的路径大致是logk(n)步,缩短了dependency的长度。而这篇论文的做法是直接用encoder或者decoder的层与层之间直接用attention,句子中的单词dependency长度最多只有1,减少了信息传输路径。而且这种attention的方式直接可以挖掘句子内部单词与单词的语义组合关系,将它作为一个语义整体,使得翻译时更好地利用单词组合甚至是短语的信息,更好地decode出语义匹配的目标语言单词,可参见论文Figure 3-5。
<img src="https://pic2.zhimg.com/v2-1c551cc1accef8d9ab0e09035dd2f4b1_b.png" data-rawwidth="943" data-rawheight="497" class="origin_image zh-lightbox-thumb" width="943" data-original="https://pic2.zhimg.com/v2-1c551cc1accef8d9ab0e09035dd2f4b1_r.png">

另外,计算复杂度方面,attention的方式不仅能够完全并行(训练阶段的encoder和decoder,inference阶段的encoder),和facebook的convseq2seq并行方式同理,而且计算量比convseq2seq还低,因为考虑到conv还有一个kernel的宽度k。比RNN既能减少计算量,又能增大并行方式,论文中table 1总结得很好。
<img src="https://pic4.zhimg.com/v2-9bde8704785e9c7e43a498c79ddd9b8f_b.png" data-rawwidth="912" data-rawheight="193" class="origin_image zh-lightbox-thumb" width="912" data-original="https://pic4.zhimg.com/v2-9bde8704785e9c7e43a498c79ddd9b8f_r.png">
Google大胆创新的地方就是完全能舍弃RNN/CNN的结构,从自然语言本身的特性出发,设计这种full attention的方式,而且还能炼丹调出state of the art的结果,估计接下来会有大量的attention变体甚至和RNN/CNN一起结合,应用在其它任务上。
温馨提示:答案为网友推荐,仅供参考
相似回答