文献阅读笔记:Phrase-Based & Neural Unsupervised Machine Translation

0. 背景

机构:Facebook
作者:Guillaume Lample, Myle Ott, Alexis Conneau
发布地方:EMNLP2018
面向任务:无监督机器翻译
论文地址:https://arxiv.org/abs/1804.07755
论文代码:https://github.com/facebookresearch/UnsupervisedMT

0.1 摘要

目前的机器翻译系统多数依赖于平行语料,但是这种方案真的适用于大多数语言对吗?本文尝试探索仅基于各自语种下的大规模单语种语料,即可实现机器翻译。为此,本文提出2种模型:基于神经网络(NMT)和基于短语的模型(PBSMT)。这两种模型采用
(1)特定的参数初始化方案
(2)语言模型的去噪操作
(3)迭代反译法(back-translation)自动生成平行语料

实验结果证明,本文的模型确实优于以往的模型,且更简单、超参数更少。在WMT’14 English-French 和 WMT’16 German-English benchmarks上,在没有用任何平行语料的前提下分别取得28.1 和 25.2 的BLUE得分。这高出当时最先进模型 11 个BLEU分值。在低资源语种,如English-Urduand 和 English-Romanian,本文的模型也优于半监督和有监督的方法。

1. 介绍

虽然现在的机器翻译算法很先进,也已经近乎人类的水平,但是其中一个主要的挑战是目前的学习算法依赖于大型并行语料库。不幸的是,绝大多数语言对几乎没有(如果有的话)平行数据。为此,学习算法需要更好地利用单语种数据,以使得机器翻译能够更广泛地适用。

(Lample et al., 2018; Artetxe et al., 2018)开创了完全无监督的机器翻译先河,是真正的完全无监督,只需要各种语种的语料数据即可。虽然上述两者的工作在技术上有细微的差别,但我们还是发现了它们成功背后的几个共同原则:
(1)系统用双语字典进行初始化
(2)利用健壮的语言模型。训练序列到序列(sequence-to-sequence)系统以作为降噪自编码器(denoising autoencoder)
(3)通过 back-translation 自动生成句子对,将无监督问题转化为有监督问题。把source 句子 输入source-to-target模型,输出结果作为targetto-source模型的输入。反之亦然。它们约束编码器产生的隐藏表征在两种语言之间共享。

本文的贡献:
(1)融合先前2个神经网络模型,简化了架构和损失函数,使其更易于训练和微调。
(2)将总结出的3项原则移植到传统的 phrase-based statistical machine translation (PBSMT)上。本文的PBSMT简单,易于解释,训练快速,且能够取得与NMT近似甚至超越NMT的结果。

在最终的结果上,本文的NMT模型在benchmarks上的BLUE得分高出10+,而PBSMT模型则高出+12的BLUE得分。

2. 无监督机器翻译的共同原则

研究之前的无监督机器翻译工作,发现无监督机器翻译背后有以下3大共同原则:
(1)恰当的初始化
(2)建立语言模型
(3)迭代式的back-translation

具体如 Figure 1 所示:
在这里插入图片描述

恰当的初始化:
模型初始化表达了期望得到的解决方案空间上的自然先验。一般可以通过使用单词、短语甚至子单词的近似翻译来启动这个过程(Sennrich et al., 2015b)。Klementiev et al. (2012)使用双语字典来进行初始化,Lample et al. (2018)和Artetxe et al.(2018)则是使用基于无监督方式推断而得到的字典来进行初始化。虽然这种最初的“逐字”的翻译可能很糟糕,但是如果语言或语料库不是紧密相关的,它仍然保留了一些原始语义。这点令人对未来怀有期待。

语言模型:
在获取到如此大量的单语种数据后,可以再source语种和target语种上训练语言模型。这些语言模型表达了一个数据驱动的先验信息,即每种语言的句子应该如何阅读。再通过局部替换和单词重排序改善翻译模型的性能。

迭代式Back-translation:
Back-translation或许是能够最有效利用单语种数据的半监督方法。在无监督方法中,Back-translation将source-to-target的翻译系统与从target-to-source的逆向翻译模型结合起来。逆向翻译模型对每个target 句子生成一个source 句子。 这就把无监督问题变成了监督学习任务,尽管source 句子中夹杂噪声。随着原模型在翻译方面的改进(改进后得到现有模型),再利用现有模型对back-translation模型进行改进,得到了一个经过迭代算法训练的耦合系统。back-translation模型改进后,又可以生成更优质的数据,从而进一步改进现有模型。如此迭代前行优化。

3. 无监督机器翻译模型

前文已经总结出3条无监督机器翻译的原则,那么怎么融入到NMT模型和PBSMT模型的上下文中呢?
我们将source 句子和 target 句子分别记为 S \mathcal{S} S and T \mathcal{T} T;在 source 语料和 target 语料上训练的语言模型分别为 P s P_{s} Ps P t P_{t} Pt; source到target的翻译系统 和 target到source的翻译系统分别记为 P s → t P_{s \rightarrow t} Pst P t → s P_{t \rightarrow s} Pts

算法流程图 如 Algorithm 1 所示:
在这里插入图片描述

3.1 无监督 NMT

本文的无监督NMT 脱胎于Artetxe et al. (2018) 和 Lample et al. (2018)的工作。之后我们先介绍如何将前文总结出的3条原则融入本文的模型呢?再介绍系统的一个附加属性:跨语言表征共享。

初始化:
本文这里提出了一种比此前使用双语字典更有效、更简单的方法,这种方法特别适用于source 语种 和 target 语种之间是相关的。具体怎么做呢?
(1)我们不考虑词,而是使用byte-pair encodings (BPE)。这有2点好处:第一、减少了词汇量,并避免了输出翻译中生成生词的情况。第二、我们没有学习source 语言和 target 语言中的BPE之间的显式映射,而是通过联合处理两种单语语料库来定义 BPE tokens。当source 语言和 target 语言是相关的,它们会天然地共享部分的 BPE tokens。这可以避免推理双语字典。
(2)在实际使用中

  • 加入单语种语料库
  • 在语料上应用 BPE tokenization
  • 在语料上学习token embeddings。再使用学习到的结果初始化encoder and decoder中的lookup tables。

语言模型:
在NMT中,语言模型是一个去噪自编码模型,该模型的最小化目标函数如下:
L l m = E x ∼ S [ − log ⁡ P s → s ( x ∣ C ( x ) ) ] + E y ∼ T [ − log ⁡ P t → t ( y ∣ C ( y ) ) ] (1) \begin{aligned} \mathcal{L}^{l m}=& \mathbb{E}_{x \sim \mathcal{S}}\left[-\log P_{s \rightarrow s}(x | C(x))\right]+\\ & \mathbb{E}_{y \sim \mathcal{T}}\left[-\log P_{t \rightarrow t}(y | C(y))\right] \end{aligned} \tag{1} Llm=ExS[logPss(xC(x))]+EyT[logPtt(yC(y))](1)
其中 C C C是一个噪声模型,加噪方式为词的丢弃或者乱序。 P s → s P_{s \rightarrow s} Pss P t → t P_{t \rightarrow t} Ptt 分别表示 source 语种 和 target 语种上 encoder 和 decoder的组成结果,即包含了encoder 和 decoder。

Back-translation:
u ∗ ( y ) u^{*}(y) u(y)表示 source 语种中的一句,该语句来自于 target 语种 y ∈ T y \in \mathcal{T} yT 到source 语种 的翻译结果。数学公式的表现形式: u ∗ ( y ) = arg ⁡ max ⁡ P t → s ( u ∣ y ) u^{*}(y)=\arg \max P_{t \rightarrow s}(u | y) u(y)=argmaxPts(uy)。类似地, v ∗ ( x ) v^{*}(x) v(x) 是一条 target 语种中的一句,它是source 语种 x ∈ S x \in \mathcal{S} xS 翻译 到 target 语种的结果。数学形式如下: v ∗ ( x ) = arg ⁡ max ⁡ P s → t ( v ∣ x ) v^{*}(x)=\arg \max P_{s \rightarrow t}(v | x) v(x)=argmaxPst(vx)
上述生成的两种pairs: ( u ∗ ( y ) , y )  和  ( x , v ∗ ( x ) ) ) \left.\left(u^{*}(y), y\right) \text { 和 }\left(x, v^{*}(x)\right)\right) (u(y),y)  (x,v(x))) 构成了自动生成的平行语料对。可以基于该生成的平行语料对训练两个Back-translation 模型,对应的最小损失函数如下:
L b a c k = E y ∼ T [ − log ⁡ P s → t ( y ∣ u ∗ ( y ) ) ] + E x ∼ S [ − log ⁡ P t → s ( x ∣ v ∗ ( x ) ) ] (2) \begin{aligned} \mathcal{L}^{b a c k}=& \mathbb{E}_{y \sim \mathcal{T}}\left[-\log P_{s \rightarrow t}\left(y | u^{*}(y)\right)\right]+\\ & \mathbb{E}_{x \sim \mathcal{S}}\left[-\log P_{t \rightarrow s}\left(x | v^{*}(x)\right)\right] \end{aligned} \tag{2} Lback=EyT[logPst(yu(y))]+ExS[logPts(xv(x))](2)
需要注意的一点是:最小化上述损失函数时,我们不反向传播到生成数据的模型,这既一来是为了简单,二来也是因为我们在这样做时没有观察到改进。在随机梯度下降(SGD)的每次迭代中最小化目标函数,仅仅是最小化 L l m \mathcal{L}^{l m} Llm L b a c k \mathcal{L}^{b a c k} Lback 之和。 为了防止模型为语言建模和翻译任务使用不同的子空间,而达到目的最小化目标函数,我们添加了一个额外的约束,即共享隐表征。

共享隐表征:
共享 encoder 表征就像一种国际语言,在decoder端这种国际语言就可以不关心输入源语言是什么,翻译到目标语言。如此可以看到降噪自动编码器目标实现的语言建模的好处,很好地从有噪声的源转换为翻译,并最终帮助NMT模型更流畅地转换。为了共享 encoder 的表征,我们在两种语言之间共享所有 encoder 参数(包括嵌入矩阵,因为我们执行joint tokenization 联合标记),以确保source 语句的隐含表征对 source 语言是健壮的。类似地,在两种语言之间共享 decoder 参数。共享 encoder 对模型的工作至关重要,但共享 decoder 仅仅引入有用的正则化。与先前的工作 (Johnson et al., 2016)有所不同的是,decoder 的第一个token 指定模块使用的语言,而encoder 没有任何语言标识符。

3.2 无监督 PBSMT

PBSMT源于其在低资源语种对有的优异表现而闻名,因此该框架在无监督学习方面也是大有潜力。
x x x翻译为 y y y,PBSMT系统对翻译结果的评分: arg ⁡ max ⁡ y P ( y ∣ x ) = arg ⁡ max ⁡ y P ( x ∣ y ) P ( y ) \arg \max _{y} P(y | x)=\arg \max _{y} P(x | y) P(y) argmaxyP(yx)=argmaxyP(xy)P(y),其中 P ( x ∣ y ) P(x | y) P(xy)源于"phrase tables", P ( y ) P(y) P(y)是语言模型对翻译结果的评分。

对于给定的数据集,PBSMT先对齐 source 和 target 中的短语,再用这些结果填充短语表"phrase tables",该表中存储着 source/target 语种中的n-gram 映射到 target/source 语种的 另一个 n-gram。在无监督配置中,训练单语种的语言模型是很简答的,但是如何填充这些短语表是不太清楚的。而这又是一个翻译系统所必要的组成部分。所幸的是,前文总结出来的3条原则可以顺利解决该问题。

初始化:
我们先用 Conneau et al. (2018)中的方法基于单语种语料构建双语字典,再使用该双语字典从source-to-target和 targe-to-source 这两个方向填充短语表。此后,我们将短语视为一个word,同样的方法也适用于更长的n-gram。从source-to-target的短语填充按照的是source word 的翻译得分:
p ( t j ∣ s i ) = e 1 T cos ⁡ ( e ( t j ) , W e ( s i ) ) ∑ k e 1 T cos ⁡ ( e ( t k ) , W e ( s i ) ) (3) p\left(t_{j} | s_{i}\right)=\frac{e^{\frac{1}{T} \cos \left(e\left(t_{j}\right), W e\left(s_{i}\right)\right)}}{\sum_{k} e^{\frac{1}{T} \cos \left(e\left(t_{k}\right), W e\left(s_{i}\right)\right)}} \tag{3} p(tjsi)=keT1cos(e(tk),We(si))eT1cos(e(tj),We(si))(3)
其中 t j t_j tj表示 target 字典中的第 j j j个word, s i s_i si表示 source 字典中的第 i i i个word, T T T是用以调节分布峰值的超参数, W W W是用以将source embedding 映射为 target embedding 的旋转矩阵, e ( x ) e(x) e(x)表示 x x x的embedding。

语言模型:
source 语种和 target 语种 平滑的n-gram语言模型都是利用KenLM 学习到的。

迭代式Back-translation:
初始化迭代过程,包含2个部分:
(1)无监督的短语表
(2)在target side 上构建的语言模型
上述这两部分组成了seed PBSMT。

我们再利用此seed PBSMT 将 source 语种语料翻译为 target 语种(back-translation 步骤)。一旦数据生成后,我们就可以以这些数据(生成的 target 句子-> 原始的 source 句子)以有监督方式训练一个PBSMT模型。这里的输入其实是机器生成的,所以会有各种问题,但是输出的标准source 确是真实的。接着,在另一个语种对方向上,执行数据生成和训练步骤。详细过程参见 Algorithm 2:

在这里插入图片描述

短语表中的许多条目直观上是不正确的,因为在训练期间的任何给定点上PBSMT的输入都是有噪声的。尽管如此,语言模型可能能够在生成时修复这些错误。只要这种情况发生,翻译质量就会改进,下一轮的短语表也会随之改进。这也会有更多的条目对应正确的短语,这使得PBSMT模型变得更强大,因为它有更大的短语表,并且可以在更长的时间跨度内进行短语交换。

4. 实验

4.1 评测的数据集:

English-French,
English-German, English-Romanian, EnglishRussian and English-Urdu.

4.2 初始化

NMT 和 PBSMT 分别需要 跨语种的 BPE embedding(用以初始化共享lookup tables)和n-gram embedding(用以初始化短语表phrase table)。具体细节查看原始论文就好了,这里就不多说了。
Table 1 展示了 French-English 无监督的 phrase table:

在这里插入图片描述

从中可以看出,uni-grams 被正确地对齐到bi-grams,反之亦然。

4.3 训练

NMT 和 PBSMT的训练细节略

4.4 模型选择

4.5 结果

NMT 和 PBSMT的结果见于 Table 2:
在这里插入图片描述

Table 3 展示了PBSMT迭代次数的影响:

在这里插入图片描述

Figure 2 展示了同一架构在不同数据尺度下的性能结果:
在这里插入图片描述

4.6 消融研究

消融研究的结果见 Figure 3:
在这里插入图片描述

5. 相关工作

6. 总结和未来工作

本文基于过往的无监督机器翻译总结了无监督机器翻译的3大原则,并将其应用到PBSMT 和 NMT中。从实验结果中,我们发现在完全无监督设置下,PBSMT 系统通常要优于 NMT系统。本文的系统能够在多个任务数据集刷新纪录,且在低资源的语言对上也表现卓越。未来的工作还可能扩展到半监督设置中。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值