当前位置: 首页 > news >正文

用编码器-解码器-重构器框架实现英语-日语的神经机器翻译

针对神经机器翻译翻译过度和翻译不足的问题,Tu et al. (2017) 的论文《Neural Machine Translation with Reconstruction》提出了一种“编码器-解码器-重构器框架”,其使用了回译来提升翻译准确度。日本首都大学东京的研究者在英语-日语翻译任务上实现了该框架。机器之心技术分析师对该实现的论文进行了解读和梳理。

论文链接:https://arxiv.org/pdf/1706.08198.pdf

论文作者:Yukio Matsumura, Takayu kiSato, Mamoru Komachi

引言

神经机器翻译(NMT)近段时间发展迅猛,已经在传统的统计机器翻译基础上实现了很大的提升,并且已经在很多语言内的翻译任务上实现了当前最佳表现。

但是,NMT 翻译过度和翻译不足的问题都存在,也就是说,有时候它可能会重复翻译某些词,有时候它可能会遗漏某些词。这是因为 NMT 模型通常可被看作是黑箱,而我们并不完全清楚它们背后的机制,即它们将源句转换成目标句的方式。

针对这一问题,Tu et al. (2017) 为 NMT 提出了一种“编码器-解码器-重构器框架”,其使用了回译(back translation)来提升翻译准确度。这篇论文是该框架在英语-日语翻译任务上的实现。

此外,这篇论文还指出,除非顺译(forward translation)模型的训练方式类似传统的基于注意的 NMT(也被称为预训练),否则该框架不能实现让人满意的表现。

传统的基于注意的 NMT 模型

下面展示了 Bahdanau et al. (2015) 提出的传统的基于注意的 NMT 模型。

用编码器-解码器-重构器框架实现英语-日语的神经机器翻译

图 1:基于注意的 NMT

其中编码器将源句转换成固定长度的向量 C,并将其作为语境向量(context vector)。在每个时间步骤 t 都使用一个双向 RNN,那么该编码器的隐藏状态 h_t 就可表示为:

用编码器-解码器-重构器框架实现英语-日语的神经机器翻译

其中前向状态和反向状态可分别按以下方式计算:

用编码器-解码器-重构器框架实现英语-日语的神经机器翻译

用编码器-解码器-重构器框架实现英语-日语的神经机器翻译

r 和 r’ 都是非线性函数。那么语境向量 C 就变成:

用编码器-解码器-重构器框架实现英语-日语的神经机器翻译

其中 q 也是一个非线性函数。

在经典的编码器-解码器模型中,编码器计算得到的语境向量 C 会被解码器直接“解码”成目标句。但因为解码器必须处理整个向量,所以之前的信息可能会被之后处理的信息覆盖。因此,语境向量越长,模型就越有可能丢失重要信息。这就是引入基于注意的机制的原因,这能让模型在每个步骤关注语境向量的特定部分以确保信息充分足够。

在每个时间步骤 i,输出词的条件概率可以这样计算:

用编码器-解码器-重构器框架实现英语-日语的神经机器翻译

其中 s_i 是解码器的隐藏状态,计算方式为:

用编码器-解码器-重构器框架实现英语-日语的神经机器翻译

根据这一等式,我们可以看到时间步骤 i 的隐藏状态 s_i 是使用语境向量 c_i 以及前一个时间步骤 i-1 的隐藏状态和目标词计算的。

不同于前文提及的较长的长度固定的向量 C,语境向量 c_i 是编码器的每个隐藏状态 h_j 的加权和,计算方式为:

用编码器-解码器-重构器框架实现英语-日语的神经机器翻译

其中

用编码器-解码器-重构器框架实现英语-日语的神经机器翻译

用编码器-解码器-重构器框架实现英语-日语的神经机器翻译

其中权重矩阵 e_ij 是由一个“对齐模型”生成的,该模型的作用是将位置 j 附近的输入与位置 i 处的输出对齐;而 α 可被理解成是一个“注意分配”向量。

最后,目标函数定义为:

用编码器-解码器-重构器框架实现英语-日语的神经机器翻译

其中 N 是数据的数量,θ 是一个模型参数。

编码器-解码器-重构器框架

Tu et al. (2017) 为 NMT 提出的编码器-解码器-重构器框架在原来的 NMT 模型上增加了一个新的“重构器”结构。其目的是将解码器架构的隐藏状态翻译回源句,以进行比较并提升翻译准确度。下面描述了这种新结构:

用编码器-解码器-重构器框架实现英语-日语的神经机器翻译

图 2:编码器-解码器-重构器

在每个时间步骤 i,输出的“源词”的条件概率的计算方式为:

用编码器-解码器-重构器框架实现英语-日语的神经机器翻译

隐藏状态 s' 的计算方式与之前的解码过程类似:

用编码器-解码器-重构器框架实现英语-日语的神经机器翻译

注意这里的 c’ 被称为“逆语境向量”,计算方式为:

用编码器-解码器-重构器框架实现英语-日语的神经机器翻译

其中 s 只是解码器的每个隐藏状态(在顺译时的)。

类似地,可以进一步计算 α’:

用编码器-解码器-重构器框架实现英语-日语的神经机器翻译

用编码器-解码器-重构器框架实现英语-日语的神经机器翻译

目标函数定义为:

用编码器-解码器-重构器框架实现英语-日语的神经机器翻译

注意这个优化函数包含两个部分,即顺译部分和回译部分。超参数 λ 指定了顺译和回译之间的权重。

根据这篇论文,顺译部分衡量的是翻译流畅度,而回译部分衡量的是翻译充分性。以这种方式,这种新结构可以增强整体的翻译质量。

实验

这篇论文使用了 2 个英语-日语平行语料库:Asian Scientific Paper Excerpt Corpus(ASPEC)(Nakazawa etal.,2016)和 NTCIR PatentMT Parallel Corpus (Goto et al., 2013)。

实验中所用的 RNN 模型有 512 个隐藏单元、512 个嵌入单元、30000 的词汇量和 64 的批大小。训练平台是 GeForce GTX TITAN X GPU。

基准 NMT 模型是普通的基于注意的 NMT。

注意在这些实验中超参数 λ 设置为 1。

下面给出了一些英语-日语翻译任务的示例。注意“联合训练(jointly-training)”是指没有预训练的编码器-解码器-重构器。

用编码器-解码器-重构器框架实现英语-日语的神经机器翻译

表1:英语-日语翻译的输出示例

结果

表 2 和 3 展示了 BLEU 分数表示的翻译准确度、通过 bootstrap 重采样得到的显著性检验的 p 值(Koehn, 2004)以及在收敛之前的训练时间。

用编码器-解码器-重构器框架实现英语-日语的神经机器翻译

表 2:英语-日语翻译结果

用编码器-解码器-重构器框架实现英语-日语的神经机器翻译

表 3:日语-英语翻译结果

这个结果表明新的编码器-解码器-重构器框架所需的训练时间长于基准 NMT,但在英语-日语翻译中,其在 ASPEC 上的翻译准确度显著提升了 1.01 分,在 NTCIR 上提升了 1.37 分。但其在日语-英语翻译任务上却没有实现这样的提升。此外,联合训练得到的模型的表现甚至比基准模型还差一些。

此外,这篇论文还检查了这种新模型是否能更好地解决上面提到的翻译过度和翻译不足的问题。比如,图 3 表明基准模型无法输出“乱流と粘性の数値的粘性の関係を基に”,而新提出的模型能成功翻译它。图 4 表明基准模型重复翻译了“新生児”和“30歳以上の”,新提出的模型则表现更好。

用编码器-解码器-重构器框架实现英语-日语的神经机器翻译

图 3:示例 1 中的注意层:对翻译不足问题的改进;其中左为基准 NMT,右为编码器-解码器-重构器

用编码器-解码器-重构器框架实现英语-日语的神经机器翻译

图 4:示例 2 中的注意层:对翻译过度问题的改进;其中左为基准 NMT,右为编码器-解码器-重构器

结论

这篇论文在英语-日语翻译任务上分析了新提出的编码器-解码器-重构器框架。结果表明,这种编码器-解码器-重构器能在英语-日语翻译任务上实现显著的 BLEU 分数提升,并且能缓解翻译中重复和遗漏词的问题。此外,通过将其与顺译和回译联合训练的模型进行比较,这篇论文还评估了预训练的重要性。

评阅者点评

回译一直都是翻译研究的一种有用方法,也能让人类译者检查他们是否翻译准确。在机器翻译任务中使用这种传统翻译方法是一个相当了不起的思路。

未来,语言学知识和自然语言处理会结合得更加紧密,这可能会成为一种新思路,有助于更好地提升语言处理任务的表现,比如机器翻译,尤其是对于日语这样具有很多“语法模板”(即日语的“文法”)的语言。

参考文献

  1. Dzmitry Bahdanau,Kyunghyun Cho,and Yoshua Bengio. 2015. Neural Machine Translation by Jointly Learning to Align and Translate. Proceedings of the 3rd International Conference on Learning Representations (ICLR), pages 1–15.
  2. Zhaopeng Tu, Yang Liu, Lifeng Shang, Xiaohua Liu, and Hang Li. 2017. Neural Machine Translation with Reconstruction. Proceedings of the ThirtyFirst AAAI Conference on Artificial Intelligence (AAAI), pages 3097–3103.
  3. Philipp Koehn. 2004. Statistical Significance Tests for MachineTranslationEvaluation. Proceedings of the 2004 Conference on Empirical Methods in Natural Language Processing (EMNLP), pages 388–395.

相关文章:

  • netty-客户端.channel()方法 源码分析.md
  • Java 多线程编程之:notify 和 wait 用法
  • django之配置静态文件
  • 区块链多币种测试网络钱包(开源)
  • 滴滴出行基于RocketMQ构建企业级消息队列服务的实践
  • TypeScript实现数据结构(一)栈,队列,链表
  • 阿里云移动端播放器高级功能介绍
  • CentOS 7 防火墙操作
  • React-flux杂记
  • Computed property XXX was assigned to but it has no setter
  • 阿里云服务器如何修改远程端口?
  • go的基本知识
  • extract-text-webpack-plugin用法
  • 《从0开始学Elasticsearch》—初识Elasticsearch
  • vue 打包 以及跨域问题组织
  • __proto__ 和 prototype的关系
  • 《剑指offer》分解让复杂问题更简单
  • 【EOS】Cleos基础
  • bearychat的java client
  • bootstrap创建登录注册页面
  • iOS小技巧之UIImagePickerController实现头像选择
  • Java比较器对数组,集合排序
  • Laravel Telescope:优雅的应用调试工具
  • php ci框架整合银盛支付
  • Solarized Scheme
  • 百度地图API标注+时间轴组件
  • 解析 Webpack中import、require、按需加载的执行过程
  • 盘点那些不知名却常用的 Git 操作
  • 用简单代码看卷积组块发展
  • hi-nginx-1.3.4编译安装
  • Unity3D - 异步加载游戏场景与异步加载游戏资源进度条 ...
  • ​DB-Engines 12月数据库排名: PostgreSQL有望获得「2020年度数据库」荣誉?
  • ​人工智能书单(数学基础篇)
  • # 透过事物看本质的能力怎么培养?
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo
  • (附源码)springboot教学评价 毕业设计 641310
  • (附源码)计算机毕业设计ssm基于B_S的汽车售后服务管理系统
  • (经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路
  • (十一)手动添加用户和文件的特殊权限
  • (一)Linux+Windows下安装ffmpeg
  • (转)真正的中国天气api接口xml,json(求加精) ...
  • (转载)微软数据挖掘算法:Microsoft 时序算法(5)
  • .gitignore文件_Git:.gitignore
  • .NET CF命令行调试器MDbg入门(三) 进程控制
  • .net redis定时_一场由fork引发的超时,让我们重新探讨了Redis的抖动问题
  • .Net(C#)常用转换byte转uint32、byte转float等
  • .Net程序帮助文档制作
  • .net开发时的诡异问题,button的onclick事件无效
  • @RestController注解的使用
  • [c#基础]DataTable的Select方法
  • [github配置] 远程访问仓库以及问题解决
  • [GN] 后端接口已经写好 初次布局前端需要的操作(例)
  • [HCIE] IPSec-VPN (手工模式)
  • [LeetCode] 596:超过5名学生的课