摘要
在本文中,我们提出针对低资源神经机器翻译(NMT)扩展了最近引入的与模型无关的元学习算法(MAML)。我们将低资源翻译视为一个重要的学习问题,并且我们学会了基于多语言高资源语言任务来适应低资源语言。我们使用通用词汇表示法来克服不同语言之间的输入输出不匹配问题。我们使用18种欧洲语言(Bg,Cs,Da,De,El,Es,Et,Fr,Hu,It,Lt,Nl,Pl,Pt,Sk,Sl,Sv和Ru)作为源任务和五种不同的语言(Ro,Lv,Fi,Tr和Ko)作为目标任务来评估提出的元学习策略。我们表明,所提出的方法明显优于基于多语言,基于迁移学习的方法,并使我们能够仅使用一小部分训练样例来训练具有竞争力的NMT系统。例如,通过仅看到16,000个翻译词(约600个并行句子),提出的方法就可以在Romanian-English WMT’16任务上达到22.04 BLEU。
1.介绍
尽管神经机器翻译(NMT)取得了巨大的成功,但已经注意到,vanilla NMT通常落后于传统机器翻译系统, 例如针对资源较少的语言对的基于统计短语的翻译系统(PBMT)。在过去的几年中,已经提出了各种方法来解决这个问题。解决该问题的最初尝试利用了单语语料库的可用性。 随后是基于多语言翻译的方法,其目的是通过在高资源和低资源语言对的组合上训练单个NMT系统来利用高资源语言对的知识。Zoph et al. (2016) 也提出了它的变种,即迁移学习,其中将NMT系统在高资源语言对上进行预训练,然后再在目标低资源语言对上进行微调。
在本文中,我们在基于多语言NMT的最新方法的基础上,提出一种用于低资源神经机器翻译的元学习算法。我们首先认为,通过将语言对视为独立的任务,可以将最近提出的与模型无关的元学习算法(MAML)应用于低资源机器翻译。该观点使我们能够使用MAML查找模型参数的初始化,从而以最少的训练示例(第3节)来促进对新语言对的快速适应。而且,原始MAML无法处理输入和输出不匹配的任务。我们通过合并通用词汇表示法并使其适应元学习场景(§3.3),克服了这一局限性。
我们广泛评估了所提出的元学习算法在低资源神经机器翻译中的有效性和泛化能力。我们使用来自Europarl的17种语言和来自WMT的俄语作为源任务,并针对五种目标语言(Ro,Lv,Fi,Tr和Ko)测试元学习的参数初始化,在所有情况下均翻译成英语。我们的实验在每个目标任务中仅使用多达16万个字符,这表明所提出的元学习方法在所有目标语言对中均胜过多语言翻译方法,并且随着训练样例数量的减少,差距越来越大。
2.背景
(1)Neural Machine Translation (NMT)
给定一个源语句
X
=
{
x
1
,
.
.
.
,
x
T
0
}
X={x_1,...,xT0}
X={x1?,...,xT0},一个神经机器翻译模型将可能的输出语句
Y
=
{
y
1
,
.
.
.
,
y
T
}
Y={y_1,...,y_T}
Y={y1?,...,yT?}上的分布分解为条件概率链,该条件概率具有从左到右的因果结构:
p
(
Y
∣
X
;
θ
)
=
∏
t
=
1
T
+
1
p
(
y
t
∣
y
0
:
t
?
1
,
x
1
:
T
′
;
θ
)
,
(1)
p(Y|X; heta)=prod^{T+1}_{t=1}p(y_t|y_{0:t-1},x_{1:T'}; heta), ag{1}
p(Y∣X;θ)=t=1∏T+1?p(yt?∣y0:t?1?,x1:T′?;θ),(1)
其中特殊字符
y
0
(
<
b
o
s
>
)
y_0(<bos>)
y0?(<bos>)和
y
T
+
1
(
<
e
o
s
>
)
y_{T+1}(<eos>)
yT+1?(<eos>)被用来表示目标句子的开头和结尾。这些条件概率使用神经网络进行参数化。通常,使用具有基于RNN的解码器的编码器-解码器体系结构。最近,已经提出了没有任何循环结构的网络,这些体系结构可以加快训练速度,同时又能达到最好的性能。
(2)Low Resource Translation
众所周知,当训练数据有限时,NMT容易过拟合并导致性能下降。通常,有两种方法可以解决资源转换率低的问题:(1)利用未标注的单语数据资源,以及(2)在低资源和高资源语言对之间共享知识。在将单语语料库纳入机器翻译方面已经进行了许多研究工作,例如多任务学习,反向翻译,双重学习和仅在双方使用单语语料库的无监督机器翻译。
对于第二种方法,先前的研究已经在研究利用辅助翻译甚至辅助任务的知识的方法。例如,Cheng et al. (2016); Chen et al. (2017); Lee et al. (2017); Chen et al. (2018) 研究了在没有任何直接资源的情况下,如何使用枢轴在两种语言之间建立翻译路径。枢轴可以是第三语言,甚至可以是多峰域中的图像。 当枢轴不容易获得时,Firat et al. (2016a); Lee et al. (2016); Johnson et al. (2016) 表明,NMT的结构适用于多语言机器翻译。 Gu et al. (2018b) 还表明,这种多语言NMT系统可以通过使用通用词法表示在多种语言之间共享嵌入信息来提高低资源翻译的性能。
先前所有有关多语言NMT的工作都假设对多种高资源语言的联合训练自然会产生一个通用空间(对于输入表示和模型而言),但这不一定是正确的,尤其是对于资源非常少的情况。
(3)Meta Learning
在机器学习社区中,元学习或学习如何学习最近引起了人们的兴趣。元学习试图解决“快速适应新的训练数据”的问题。元学习最成功的应用之一是few-shot(或one-shot)学习,其中训练了一个神经网络,可以轻松地学习仅基于一个或几个训练样例就可以对输入进行分类。元学习分为两类:
- 学习用于更新模型参数的元策略;
- 学习能够快速适应新领域的良好初始化参数。
在本文中,我们提出了基于第二类的,将元学习算法用于低资源的神经机器翻译方法。更具体地说,我们在多语言场景中扩展了与模型无关的元学习方法(MAML)。
3.Meta Learning for Low-Resource Neural Machine Translation

MAML的基本思想是使用一组源任务
{
T
1
,
.
.
.
,
T
K
}
{mathcal T^1,...,mathcal T^K}
{T1,...,TK}来找到参数
θ
0
heta^0
θ0的初始化,在此基础上学习的目标任务
T
0
mathcal T^0
T0将仅需要少量训练样例。在机器翻译的场景中,这相当于使用许多高资源语言对来查找良好的初始参数,并从找到的初始参数开始,在低资源语言上训练新的翻译模型。这个过程可以理解为:
θ
?
=
L
e
a
r
n
(
T
0
;
M
e
t
a
L
e
a
r
n
(
T
1
,
.
.
.
,
T
k
)
)
.
heta^*=Learn(mathcal T^0;MetaLearn(mathcal T^1,...,mathcal T^k)).
θ?=Learn(T0;MetaLearn(T1,...,Tk)).
也就是说,我们从源任务中学习参数初始化,并继续学习目标任务。我们将提出的NMT元学习方法称为MetaNMT。整体说明请参见图1。
3.1 Learn: language-specific learning
给定任何初始参数
θ
0
heta^0
θ0(可以是随机的或元学习的),
所需NMT模型的参数的先验分布可以定义为各向同性的高斯:
θ
i
~
N
(
θ
i
0
,
1
/
β
)
,
heta_isimmathcal N( heta^0_i,1/eta),
θi?~N(θi0?,1/β),
其中
1
/
β
1/eta
1/β是方差。通过此先验分布,我们将特定于语言的学习过程
L
e
a
r
n
(
D
T
;
θ
0
)
Learn(D_{mathcal T}; heta^0)
Learn(DT?;θ0)形式化为最大化给定数据
D
T
D_{mathcal T}
DT?的模型参数的对数后验:
L
e
a
r
n
(
D
T
;
θ
0
)
=
a
r
g
m
a
x
θ
L
D
T
(
θ
)
=
a
r
g
m
a
x
θ
∑
(
X
,
Y
)
∈
D
T
l
o
g
p
(
Y
∣
X
,
θ
)
?
β
∣
∣
θ
?
θ
0
∣
∣
2
,
Learn(D_{mathcal T}; heta^0)=mathop{argmax}limits_{ heta}~mathcal L^{D_{mathcal T}}( heta)=mathop{argmax}limits_{ heta}sum_{(X,Y)in D_{mathcal T}}log~p(Y|X, heta)-eta|| heta- heta^0||^2,
Learn(DT?;θ0)=θargmax? LDT?(θ)=θargmax?(X,Y)∈DT?∑?log p(Y∣X,θ)?β∣∣θ?θ0∣∣2,
其中,我们假设
p
(
X
∣
θ
)
p(X| heta)
p(X∣θ)是均匀分布的。上面的第一项对应于通常用于训练常规NMT系统的最大似然准则。第二项不鼓励新学习的模型偏离初始参数太多,从而减轻了在没有足够训练数据时的过拟合问题。在实践中,我们通过基于梯度的优化最大化第一项,并仅需执行几个更新步骤,就可以提前停止,从而解决了上述问题。
因此,在资源匮乏的情况下,找到良好的初始化参数
θ
0
heta^0
θ0与生成的模型的最终性能密切相关。
3.2 MetaLearn

我们通过使用辅助的,资源丰富的语言对反复模拟资源匮乏的翻译场景来找到初始化参数
θ
0
heta^0
θ0。与 Finn et al. (2017) 类似,我们通过将元目标函数定义为:
L
(
θ
)
=
E
k
E
D
T
k
,
D
T
k
′
[
∑
(
X
,
Y
)
∈
D
T
k
′
l
o
g
p
(
Y
∣
X
;
L
e
a
r
n
(
D
T
k
;
θ
)
)
]
,
(2)
mathcal L( heta)=mathbb E_kmathbb E_{D_{mathcal T^k},D'_{mathcal T^k}}[sum_{(X,Y)in D'_{mathcal T^k}}log~p(Y|X;Learn(D_{mathcal T^k}; heta))], ag{2}
L(θ)=Ek?EDTk?,DTk′??[(X,Y)∈DTk′?∑?log p(Y∣X;Learn(DTk?;θ))],(2)
其中
k
~
U
(
{
1
,
.
.
.
,
K
}
)
ksim mathcal U({1,...,K})
k~U({1,...,K})指的是一次元学习的episode,而
D
T
,
D
T
′
D_{mathcal T},D'_{mathcal T}
DT?,DT′?遵循
T
mathcal T
T数据的均匀分布。
我们使用具有梯度下降的随机近似来最大化元目标函数。对于每个episode,我们统一随机抽样一个源任务
T
k
mathcal T^k
Tk。然后,我们从选择的任务
D
T
k
D_{mathcal T^k}
DTk?和
D
T
k
′
D'_{mathcal T^k}
DTk′?中独立采样训练样例的两个子集。我们使用前者来模拟特定于语言的学习,而后者则用来评估其结果。假设单个梯度更新步骤的学习速率为
η
eta
η,则模拟为:
θ
k
′
=
L
e
a
r
n
(
D
T
k
;
θ
)
=
θ
?
η
?
θ
L
D
T
k
(
θ
)
.
heta'_k=Learn(D_{mathcal T^k}; heta)= heta-eta
abla_{ heta}mathcal L^{D_{mathcal T^k}}( heta).
θk′?=Learn(DTk?;θ)=θ?η?θ?LDTk?(θ).
一旦学习模拟完成,我们就在
D
T
k
′
D'_{mathcal T^k}
DTk′?上评估更新的参数
θ
k
′
heta'_k
θk′?,并将从该评估中计算出的梯度(我们称为元梯度)用于更新元模型
θ
heta
θ。在更新之前可以汇总源任务的多个episodes:
θ
←
θ
?
η
′
∑
k
?
θ
L
D
T
k
′
(
θ
k
′
)
,
heta leftarrow heta -eta'sum_k
abla_{ heta}mathcal L^{D'_{mathcal T^k}}( heta'_k),
θ←θ?η′k∑??θ?LDTk′?(θk′?),
其中
η
′
eta'
η′是元学习率。
与通常的学习场景不同,此元学习过程产生的模型
θ
0
heta^0
θ0不一定是一个好的模型。但是,这是仅需学习几步即可训练好的模型的良好起点。在机器翻译的上下文中,此过程可以理解为找到初始化的神经机器翻译系统,该神经机器翻译系统可以通过使用许多高资源语言对来模拟这样的快速适应场景,从而快速适应新的语言对。
(1)Meta-Gradient
我们使用以下近似属性:
H
(
x
)
v
≈
?
(
x
+
ν
v
)
?
?
(
x
)
ν
H(x)vapprox frac{
abla(x+
u v)-
abla(x)}{
u}
H(x)v≈ν?(x+νv)??(x)?
来近似元梯度:
?
θ
L
D
′
(
θ
′
)
=
?
θ
′
L
D
′
(
θ
′
)
?
θ
(
θ
?
η
?
θ
L
D
(
θ
)
)
=
?
θ
′
L
D
′
(
θ
′
)
?
η
?
θ
′
L
D
′
(
θ
′
)
H
θ
(
L
D
(
θ
)
)
≈
?
θ
′
L
D
′
(
θ
′
)
?
η
ν
[
?
θ
L
D
(
θ
)
∣
θ
^
?
?
θ
L
D
(
θ
)
∣
θ
]
,
abla_{ heta}mathcal L^{D'}( heta')=
abla_{ heta'}mathcal L^{D'}( heta')
abla_{ heta}( heta-eta
abla_{ heta}mathcal L^D( heta)) =
abla_{ heta'}mathcal L^{D'}( heta')-eta
abla_{ heta'}mathcal L^{D'}( heta')H_{ heta}(mathcal L^D( heta)) approx
abla_{ heta'}mathcal L^{D'}( heta')-frac{eta}{
u}[
abla_{ heta}mathcal L^D( heta)|_{hat heta}-
abla_{ heta}mathcal L^D( heta)|_{ heta}],
?θ?LD′(θ′)=?θ′?LD′(θ′)?θ?(θ?η?θ?LD(θ))=?θ′?LD′(θ′)?η?θ′?LD′(θ′)Hθ?(LD(θ))≈?θ′?LD′(θ′)?νη?[?θ?LD(θ)∣θ^???θ?LD(θ)∣θ?],
其中
ν
u
ν是一个小常数,而且:
θ
^
=
θ
+
ν
?
θ
′
L
D
′
(
θ
′
)
.
hat heta= heta+
u
abla_{ heta'}mathcal L^{D'}( heta').
θ^=θ+ν?θ′?LD′(θ′).
在实践中,我们发现还可以忽略二阶项,最终得到以下简化的更新规则:
?
θ
L
D
′
(
θ
′
)
≈
?
θ
′
L
D
′
(
θ
′
)
.
(3)
abla_{ heta}mathcal L^{D'}( heta')approx
abla_{ heta'}mathcal L^{D'}( heta'). ag{3}
?θ?LD′(θ′)≈?θ′?LD′(θ′).(3)
(2)Related Work: Multilingual Transfer Learning
提出的MetaNMT与现有的多语言翻译框架或迁移学习不同。后者可以被认为是解决了以下问题:
m
a
x
θ
L
m
u
l
t
i
(
θ
)
=
E
k
[
∑
(
X
,
Y
)
∈
D
k
l
o
g
p
(
Y
∣
X
;
θ
)
]
,
mathop{max}limits_{ heta}mathcal L^{multi}( heta)=mathbb E_k[sum_{(X,Y)in D_k}log~p(Y|X; heta)],
θmax?Lmulti(θ)=Ek?[(X,Y)∈Dk?∑?log p(Y∣X;θ)],
其中
D
k
D_k
Dk?是第
k
k
k个任务或语言对的训练集。目标低资源语言对可以是联合训练的一部分,也可以从解决上述问题的解决方案
θ
0
heta^0
θ0开始分别进行训练。
提出的MetaNMT与这些多语言迁移方法之间的主要区别在于,后者没有考虑目标低资源语言对如何进行学习。前者通过在等式(2)中反复模拟,将学习过程明确地纳入了框架中。正如我们将在实验的后面看到的那样,这导致在低资源任务的最终性能上有很大的差距。
(3)Illustration
在图2中,我们使用三个源语言对(Fr-En,Es-En和Pt-En)和两个目标对(Ro-En和Lv-En)对比了迁移学习,多语言学习和元学习。迁移学习为NMT系统专门针对源语言对(Es-En)进行训练,并针对每个目标语言对(RoEn,Lv-En)对该系统进行微调。多语言学习通常会训练一个NMT系统,该系统可以处理许多不同的语言对(Fr-En,Pt-En,Es-En),其中可能包括目标对(Ro-En,LvEn)。如果不是,它将针对每个目标对微调系统,类似于迁移学习。但是,这两个目标都是直接解决源任务。另一方面,元学习训练的NMT系统对于微调各种任务(包括源任务和目标任务)很有用。这是通过使用许多高资源语言对(Fr-En,Pt-En,Es-En)反复模拟低资源语言的学习过程来完成的。
3.3 Unified Lexical Representation
(1)I/O mismatch across language pairs
限制将元学习应用于低资源机器翻译的一个主要挑战是,上面概述的方法假设输入和输出空间在所有源任务和目标任务之间都是共享的。但是,由于不同语言之间的词汇不匹配,因此这通常不适用于机器翻译。在多语言翻译中,已通过使用跨多种语言共享的子词或字符来解决此问题。但是,这种表面级别的共享受到限制,因为它不能应用于展现独特拼字法的语言(例如,IndoEuroepan语言与韩语)。
(2)Universal Lexical Representation (ULR)
我们通过使用键值记忆网络动态构建针对每种语言的词汇表来解决此问题,正如Gu et al. (2018b) 最近成功完成的低资源机器翻译一样。我们从在大型单语语料库上预训练的多语言词嵌入矩阵
?
q
u
e
r
y
k
∈
R
∣
V
k
∣
×
d
epsilon^k_{query}in mathbb R^{|V_k| imes d}
?queryk?∈R∣Vk?∣×d开始,其中
V
k
V_k
Vk?是第
k
k
k种语言的词汇。这些嵌入向量可以用种子词对的小词典或完全不受监督的方式获得。我们采用这些语言中的一种
k
′
k'
k′来构建通用词法表示,该通用词法表示由通用嵌入矩阵
?
u
∈
R
M
×
d
epsilon_uin mathbb R^{M imes d}
?u?∈RM×d和对应的key矩阵
?
k
e
y
∈
R
M
×
d
epsilon_{key}in mathbb R^{M imes d}
?key?∈RM×d组成,其中
M
<
∣
V
k
′
∣
M<|V'_k|
M<∣Vk′?∣。
?
q
u
e
r
y
k
epsilon^k_{query}
?queryk?和
?
k
e
y
epsilon_{key}
?key?在元学习期间都是固定的。然后,我们根据语言
k
k
k计算字符
x
x
x的特定语言嵌入,作为通用嵌入向量的凸和,即:
?
0
[
x
]
=
∑
i
=
1
M
α
i
?
u
[
i
]
,
epsilon^0[x]=sum^M_{i=1}alpha_iepsilon_u[i],
?0[x]=i=1∑M?αi??u?[i],
其中
α
i
∝
e
x
p
{
?
1
τ
?
k
e
y
[
i
]
T
A
?
q
u
e
r
y
k
[
x
]
}
alpha_ipropto exp{-frac{1}{ au}epsilon_{key}[i]^TAepsilon^k_{query}[x]}
αi?∝exp{?τ1??key?[i]TA?queryk?[x]},并且设置
τ
au
τ为0.05。 这种方法使我们能够使用固定数量的共享参数(
?
u
epsilon_u
?u?,
?
k
e
y
epsilon_{key}
?key?和
A
A
A)来处理具有不同词汇的语言。
(3)Learning of ULR
当微调包含目标语言中一组有限的唯一字符的小型语料库时,不需要更新通用嵌入矩阵
?
u
epsilon_u
?u?,因为这可能会对其他字符的嵌入向量产生不利影响。因此,我们通过一个单独的参数
Δ
?
k
[
x
]
Deltaepsilon^k[x]
Δ?k[x]来估计特定于语言的学习所引起的每个嵌入矢量的变化:
?
k
[
x
]
=
?
0
[
x
]
+
Δ
?
k
[
x
]
.
epsilon^k[x]=epsilon^0[x]+Deltaepsilon^k[x].
?k[x]=?0[x]+Δ?k[x].
在特定语言学习期间,ULR
?
0
[
x
]
epsilon^0[x]
?0[x]保持恒定,而仅从全零向量开始更新
Δ
?
k
[
x
]
Deltaepsilon^k[x]
Δ?k[x]。另一方面,在元学习阶段更新
?
u
epsilon_u
?u?和
A
A
A时,我们保持
Δ
?
k
[
x
]
Deltaepsilon^k[x]
Δ?k[x]不变。
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!