文章目录
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}
Ps→t 和
P
t
→
s
P_{t \rightarrow s}
Pt→s。
算法流程图 如 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=Ex∼S[−logPs→s(x∣C(x))]+Ey∼T[−logPt→t(y∣C(y))](1)
其中
C
C
C是一个噪声模型,加噪方式为词的丢弃或者乱序。
P
s
→
s
P_{s \rightarrow s}
Ps→s和
P
t
→
t
P_{t \rightarrow t}
Pt→t 分别表示 source 语种 和 target 语种上 encoder 和 decoder的组成结果,即包含了encoder 和 decoder。
Back-translation:
用
u
∗
(
y
)
u^{*}(y)
u∗(y)表示 source 语种中的一句,该语句来自于 target 语种
y
∈
T
y \in \mathcal{T}
y∈T 到source 语种 的翻译结果。数学公式的表现形式:
u
∗
(
y
)
=
arg
max
P
t
→
s
(
u
∣
y
)
u^{*}(y)=\arg \max P_{t \rightarrow s}(u | y)
u∗(y)=argmaxPt→s(u∣y)。类似地,
v
∗
(
x
)
v^{*}(x)
v∗(x) 是一条 target 语种中的一句,它是source 语种
x
∈
S
x \in \mathcal{S}
x∈S 翻译 到 target 语种的结果。数学形式如下:
v
∗
(
x
)
=
arg
max
P
s
→
t
(
v
∣
x
)
v^{*}(x)=\arg \max P_{s \rightarrow t}(v | x)
v∗(x)=argmaxPs→t(v∣x)
上述生成的两种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=Ey∼T[−logPs→t(y∣u∗(y))]+Ex∼S[−logPt→s(x∣v∗(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(y∣x)=argmaxyP(x∣y)P(y),其中
P
(
x
∣
y
)
P(x | y)
P(x∣y)源于"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(tj∣si)=∑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系统。本文的系统能够在多个任务数据集刷新纪录,且在低资源的语言对上也表现卓越。未来的工作还可能扩展到半监督设置中。