网站地图    收藏    合作   
<

快捷菜单 返回顶部

本节提出了注意力(Attention)机制,这是神经网络翻译的最新解决方案。

注意力的思想是 2015 年在论文“Neural Machine Translation by Jointly Learning to Align and Translate”(Dzmitry Bahdanau,Kyunghyun Cho和Yoshua Bengio,ICLR,2015)中提出的,它需要在编码器和解码器 RNN 之间增加额外的连接。事实上,仅将解码器与编码器的最新层连接会存在信息瓶颈,而且不一定能够传递先前编码器层的信息。

下图说明了采用注意力机制的方法:

图 1 引入注意力模型的NMT示例

需要考虑以下三个方面:
  1. 将当前目标隐藏状态与所有先前的源状态一起使用,以导出注意力权重,用于给先前序列中的信息分配不同的注意力大小。
  2. 总结注意力权重的结果创建上下文向量。
  3. 将上下文向量与当前目标隐藏状态相结合以获得注意力向量。

具体做法

  1. 通过使用库 tf.contrib.seq2seq.LuongAttention 来定义注意力机制,该库实现了文献“Effective Approaches to Attention-based Neural Machine Translation”(Minh-Thang Luong,Hieu Pham和Christopher D.Manning,2015)中定义的注意力模型:


     
  2. 通过一个注意力包装器,使用所定义的注意力机制作为解码器单元进行封装:


     
  3. 运行代码查看结果。可以立即注意到注意力机制在 BLEU 评分方面产生了显著的改善:

解读分析

注意力机制是使用编码器 RNN 内部状态获得的信息,并将该信息与解码器的最终状态进行组合的机制,关键思想是可以对源序列中的信息分配不同的注意力。下图的 BLEU 得分显示了应用注意力机制后的优势。


图 2 使用注意力机制的BLEU指标示例(点此查看高清大图)

注意到,之前所给出的同样的图中,没有使用注意力机制。


值得注意的是,seq2seq 不仅仅可以用于机器翻译,来看一些例子:

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com