摘要
基于transformer的最新技术的神经机器翻译(NMT)系统仍遵循标准的编码器-解码器框架,在该框架中,具有自注意机制的编码器可以很好地完成源语句的表示。尽管基于Transformer的编码器可以有效地捕获源句子表示形式中的常规信息,但是代表句子要点的主干信息并未特别关注。在本文中,我们提出了一种显式句子压缩方法来增强NMT的源句子表示。在实践中,显式句子压缩目标用于学习句子中的主干信息。我们提出了三种方法,包括主干源侧融合,目标侧融合和两侧融合,将压缩语句集成到NMT中。我们对WMT英语到法语和英语到德语翻译任务的经验测试表明,所提出的句子压缩方法在强大的基准范围内可显着提高翻译性能。
1.介绍
神经机器翻译(NMT)通常被实现为编码器-解码器框架,其中编码器直接负责源语句的表示。通常,通过深度学习网络将输入语句隐式表示为上下文源表示。通过进一步馈入解码器,使用源表示来学习依赖于不同时刻的上下文向量,以预测目标翻译。
在基于transformer的最新编码器中,自注意力机制擅长捕获句子中的常规信息。但是,很难区分哪种语言深层的信息对于学习源表示来说确实很重要。直觉上,当一个人阅读源句子时,他/她经常选择性地专注于基本句子的含义,然后重新阅读整个句子以完全理解其含义。以表1中的英语句子为例。我们手动将其基本含义表示为比原始句子中较短的单词序列,称为主干信息。显然,这些具有基本含义的单词比句子中其余的单词包含更多对人类理解重要的信息。我们认为,这样的骨干信息也有助于学习源表示,而现有的NMT系统并未明确考虑以丰富源句表示。
在本文中,我们提出了一种新的显式句子压缩方法来增强NMT的源表示。为此,我们首先设计三个句子压缩模型,以适应各种语言和场景的需求,包括有监督,无监督和半监督方式,以便从源句子中学习骨干信息单词序列(如表1所示)。然后,我们提出三种翻译模型,包括基于骨干源端融合的NMT(BSFNMT),骨干目标端融合(BTFNMT)和基于两侧融合的NMT(BBFNMT),以将这种骨干知识引入到现有的Transformer NMT系统中,从而改善翻译质量。关于WMT14的英语到德语和英语到法语翻译任务的经验结果表明,在强大而先进的NMT基准上,该方法大大提高了翻译性能。
2.显式句子压缩
通常,句子压缩是一种典型的序列生成任务,其目的是在相对较短的序列上最大程度地吸收和长期保留大量重要数据,以实现文本理解。为了区分单词在句子中的重要性,更重要的是要找出句子表示中最重要的部分,我们使用句子压缩方法来明确提取可以保留句子关键含义的关键知识,称为显式本文中的句子压缩(ESC)。根据是否使用人工标注的数据训练句子压缩,可以以三种方式实现提出的方法:有监督的ESC,无监督的ESC和半监督的ESC。
2.1 Supervised ESC
句子压缩通常依赖于大规模原始数据以及它们的人工标记数据(可以视为监督)来训练句子压缩模型。例如,提出了一种attentive的编码器-解码器递归神经网络(RNN),以对生成式文本摘要进行建模。最近提出的针对编码器-解码器句子压缩框架的MAsked序列到序列预训练(MASS),该框架报告了Gigaword语料库和DUC语料库的最新性能。
句子压缩可以通过典型的序列到序列模型进行。编码器将输入句子
S
S
S表示为语义向量序列,而解码器依靠注意力机制来学习上下文向量,以生成具有输入句子关键信息的压缩版本
S
′
S'
S′。最近,由[1]提出新的完全依赖于自注意力的Transformer结构网络,已经展示了几种语言对的最新翻译性能。我们遵循这种做法,并尝试将Transformer结构应用于此类压缩任务。
2.2 Unsupervised ESC
有监督的句子压缩中的主要挑战是稀缺的高质量人工标注并行数据。在实践中,由于缺少并行的标注数据,无法训练有监督的句子压缩模型,或标注的数据领域不同,从而导致在领域内训练的句子压缩模型在域外的性能较差。
有监督的句子压缩模型基于大型语料库(包含带有人类标注的冗长和压缩句子对)而取得了令人印象深刻的性能。但是,有效性很大程度上取决于大量并行的原始和人工标注的压缩语句的可用性。这阻碍了句子压缩方法在许多低资源情况下的进一步改进。近来,受无监督的跨语言嵌入的最新进展的启发,无监督的NMT为解决没有任何并行句子对的序列到序列学习问题打开了大门。它利用了语言之间机器翻译的无损(理想情况)性质,即它可以将语言L1转换为语言L2,然后将L2反向转换为语言L1。但是,句子压缩不具有此功能。从句子
S
S
S到句子
S
‘
S‘
S‘是有损的,这使得很难从压缩句子
S
’
S’
S’恢复到原始句子
S
S
S。
[18]添加了噪声以扩展原始句子,并训练了降噪自动编码器以恢复原始句子,从而构建了一个端对端的训练网络,而没有在序列到序列框架中压缩句子的任何示例。这样做时,模型必须排除并重新排列嘈杂的句子输入,从而学习输出语义上更重要,更短但语法上正确的句子。模型中使用两种类型的噪声:Additive Sampling Noise和Shuffle Noise。
Additive Sampling Noise:为了扩展原始句子,我们从训练数据集中随机抽取其他句子,然后对每个单词的子集进行子采样,无需替换,而是将新采样的单词将附加到原始句子中。
Shuffle Noise:为了使模型学习改写输入句子以使输出更短,我们对产生的具有附加噪声的句子进行了混洗。
为了获得更好的压缩句子质量,我们将[18]的方法转移到了Transformer结构中,而不是将其提出的RNN结构转移到Transformer结构中,这有助于获得更大的语料和进行更深入的网络训练。
2.3 Semi-supervised ESC
正如在[14]中指出的,由于使用大规模数据进行深度学习的进步,序列到序列框架最近引起了很多关注。许多语言生成任务只有很小的成对数据,不能支持训练具有良好泛化能力的深度模型。相比之下,有很多不成对的数据更容易获得。
我们观察到由受监管的ESC中的不同领域导致的性能下降。根据文献[18]的实验结果,目前无监督ESC的精度低于有监督ESC的精度。因此,我们进一步采用了半监督显式句子压缩模型来缓解此问题。具体地,首先对未配对的数据进行无监督训练(通常称为预训练),并用小规模的配对数据进行微调(有监督训练),以获得具有良好性能和泛化能力的ESC模型。
2.4 压缩率控制
显式压缩率(长度)控制是在以前的句子压缩工作中使用的一种常用方法。[19]研究了几种引入目标输出长度信息的方法,发现它们在不影响摘要质量的情况下是有效的。[20]引入了一个长度标签字符,该字符引导模型将目标长度期望的输出作为目标,并将其粗略地分为离散的bin。[18]用额外的长度倒数输入扩展了解码器,该输入是单个标量,当生成达到所需长度时,该标量为0。
与使用长度标签或长度倒数输入不同,为了使我们的模型输出具有所需长度的压缩序列,我们在生成过程中使用集束搜索来找到序列
S
′
S'
S′,从而在给定训练完的ESC模型的情况下最大化得分函数
s
(
S
′
,
S
)
s(S',S)
s(S′,S) 。引入长度归一化是为了说明我们必须比较不同长度的假设这一事实。如果没有某种形式的长度归一化规则
l
n
ln
ln,则集束搜索平均而言将倾向于使用较短的序列而不是较长的序列,因为在每个步骤中都添加了负对数概率,从而为较长的句子生成了较低的分数(负数更大)。此外,根据注意力,还添加了覆盖惩罚
c
p
cp
cp,以尽可能地覆盖源句子的序列含义。
s
(
S
′
,
S
)
=
l
o
g
(
P
(
S
′
∣
S
)
)
/
l
n
(
S
′
)
+
c
p
(
S
;
S
′
)
,
(1)
s(S',S)=log(P(S'|S))/ln(S')+cp(S;S'),\tag{1}
s(S′,S)=log(P(S′∣S))/ln(S′)+cp(S;S′),(1)
l
n
(
S
′
)
=
(
5
+
∣
S
′
∣
)
α
/
(
5
+
1
)
α
,
(2)
ln(S')=(5+|S'|)^{\alpha}/(5+1)^{\alpha},\tag{2}
ln(S′)=(5+∣S′∣)α/(5+1)α,(2)
c
p
(
S
;
S
′
)
=
β
×
∑
i
=
1
∣
S
∣
l
o
g
(
m
i
n
(
∑
j
=
1
∣
S
′
∣
p
i
,
j
,
1.0
)
)
,
(3)
cp(S;S')=\beta\times\sum^{|S|}_{i=1}log(min(\sum^{|S'|}_{j=1}p_{i,j},1.0)),\tag{3}
cp(S;S′)=β×i=1∑∣S∣log(min(j=1∑∣S′∣pi,j,1.0)),(3)
其中
p
i
,
j
p_{i,j}
pi,j是第
j
j
j个目标词对第
i
i
i个源词的注意力概率。参数
α
α
α和
β
β
β控制长度归一化和覆盖惩罚的强度。尽管可以使用
α
α
α来软控制压缩率,但我们还是根据硬性要求使用压缩率
γ
γ
γ来控制解码生成的最大长度。当解码长度
∣
S
‘
∣
|S‘|
∣S‘∣大于
γ
∣
S
∣
γ|S|
γ∣S∣时,则解码停止。
3.使用ESC的NMT
在本节中,我们首先介绍用于机器翻译的Transformer网络。然后根据骨干知识序列的融合位置,我们提出了三种新的翻译模型:基于骨干源端融合的NMT模型(如图2所示),基于骨干目标端融合的NMT模型(如图3所示),以及基于骨干网的双端融合NMT。所有这些模型都可以利用我们的句子压缩模型生成的源主干知识。
3.1 Transformr网络
Transformer NMT模型由完全依靠自注意力网络(SAN)的编码器和解码器组成,将一种语言的句子翻译成具有同等含义的另一种语言。形式上,长度为
J
J
J的一个输入句子
x
=
{
x
1
,
.
.
.
,
x
J
}
x=\{x_1,...,x_J\}
x={x1,...,xJ}首先被映射到一系列单词向量中。然后,将序列及其位置嵌入相加,以形成输入表示
v
x
=
{
v
1
x
,
.
.
.
,
v
J
x
}
v_x=\{v^x_1,...,v^x_J\}
vx={v1x,...,vJx}。然后将序列
{
v
1
x
,
.
.
.
,
v
J
x
}
\{v^x_1,...,v^x_J\}
{v1x,...,vJx}打包到query矩阵
Q
x
\textbf Q_x
Qx,key矩阵
K
x
\textbf K_x
Kx和value矩阵
V
x
\textbf V_x
Vx中。对于基于SAN的编码器,首先在Q,K和V上对输出矩阵执行自注意力子层,如下所示:
S
e
l
f
A
t
t
(
Q
,
K
,
V
)
=
S
o
f
t
m
a
x
(
Q
K
T
d
m
o
d
e
l
)
V
,
(4)
SelfAtt(\textbf Q,\textbf K,\textbf V)=Softmax(\frac{\textbf Q\textbf K^T}{\sqrt{d_{model}}})V,\tag{4}
SelfAtt(Q,K,V)=Softmax(dmodel
QKT)V,(4)
其中
d
m
o
d
e
l
d_{model}
dmodel代表模型的维度。类似地,翻译后的目标词用于在当前时刻
i
i
i生成解码器隐藏状态
s
i
s_i
si。通常,自注意力函数会进一步完善为多头自注意力,以共同考虑来自不同位置的不同表示子空间的信息:
M
u
l
t
i
H
e
a
d
(
Q
,
K
,
V
)
=
C
o
n
c
a
t
(
h
e
a
d
1
,
.
.
.
,
h
e
a
d
H
)
W
O
,
h
e
a
d
h
=
S
e
l
f
A
t
t
(
Q
W
h
Q
,
K
W
h
K
,
V
W
h
V
)
,
(5)
MultiHead(\textbf Q,\textbf K,\textbf V)=Concat(head_1,...,head_H)\textbf W^O,\\ head_h=SelfAtt(\textbf Q\textbf W^Q_h,\textbf K\textbf W^K_h,\textbf V\textbf W^V_h),\tag{5}
MultiHead(Q,K,V)=Concat(head1,...,headH)WO,headh=SelfAtt(QWhQ,KWhK,VWhV),(5)
其中投影是参数矩阵
W
h
Q
∈
R
d
m
o
d
e
l
×
d
k
\textbf W^Q_h∈\mathbb R^{d_{model}×d_k}
WhQ∈Rdmodel×dk,
W
h
K
∈
R
d
m
o
d
e
l
×
d
k
\textbf W^K_h∈\mathbb R^{d_{model}×d_k}
WhK∈Rdmodel×dk,
W
h
V
∈
R
d
m
o
d
e
l
×
d
v
\textbf W^V_h∈\mathbb R^{d_{model}×d_v}
WhV∈Rdmodel×dv和
W
O
∈
R
h
d
v
×
d
m
o
d
e
l
\textbf W^O∈\mathbb R^{hd_v×d_{model}}
WO∈Rhdv×dmodel。例如,有
H
=
8
H=8
H=8个头,
d
m
o
d
e
l
d_{model}
dmodel是512,
d
k
=
d
v
=
512
/
8
=
64
d_k=d_v=512/8=64
dk=dv=512/8=64。位置前馈网络(FFN)层应用于多头自注意的输出,然后与矩阵
V
V
V相加以生成最终的源表示
H
x
=
{
H
1
x
,
.
.
.
,
H
J
x
}
H_x=\{H^x_1,...,H^x_J\}
Hx={H1x,...,HJx}:
H
x
=
F
F
N
(
M
u
l
t
i
H
e
a
d
(
Q
,
K
,
V
)
)
+
V
.
(6)
H_x=FFN(MultiHead(\textbf Q,\textbf K,\textbf V))+\textbf V.\tag{6}
Hx=FFN(MultiHead(Q,K,V))+V.(6)
然后,解码器的SAN使用
H
x
H_x
Hx和目标上下文隐藏状态
H
t
g
t
H_{tgt}
Htgt来通过“encoder-decoder attention”来学习上下文向量
o
i
o_i
oi:
c
i
=
F
F
N
(
M
u
l
t
i
H
e
a
d
(
H
t
g
t
,
H
x
,
H
x
)
)
,
(7)
c_i=FFN(MultiHead(H_{tgt},H_x,H_x)),\tag{7}
ci=FFN(MultiHead(Htgt,Hx,Hx)),(7)
o
i
=
c
i
+
H
t
g
t
.
(8)
o_i=c_i+H_{tgt}.\tag{8}
oi=ci+Htgt.(8)
最后,上下文向量
o
i
o_i
oi通过线性的,可能是多层的函数来计算下一个目标词
y
i
y_i
yi的翻译概率:
P
(
y
i
∣
y
<
i
,
x
)
∝
S
o
f
t
m
a
x
(
L
0
GeLU
(
L
w
o
i
)
)
,
(9)
P(y_i|y_{\lt i},x)∝Softmax(\textbf L_0\textbf{GeLU}(\textbf L_wo_i)),\tag{9}
P(yi∣y<i,x)∝Softmax(L0GeLU(Lwoi)),(9)
其中,
L
o
\textbf L_o
Lo和
L
w
\textbf L_w
Lw是投影矩阵。
3.2 Backbone Source-side Fusion based NMT
在基于骨干源端融合的NMT(BSFNMT)模型中,给定输入句子
x
=
{
x
1
,
⋅
⋅
,
x
J
}
x=\{x_1,··,x_J\}
x={x1,⋅⋅,xJ},存在长度为
K
K
K的额外压缩序列
x
c
=
{
x
1
c
,
⋅
⋅
⋅
,
x
K
c
}
x_c=\{x^c_1,···,x^c_K\}
xc={x1c,⋅⋅⋅,xKc},该序列由提出的句子压缩模型生成。该压缩序列也被输入到与原始编码器共享的SAN中,该压缩序列在共享词汇表中具有词向量
v
c
=
{
v
1
c
,
.
.
.
,
v
K
c
}
v_c=\{v^c_1,...,v^c_K\}
vc={v1c,...,vKc},以学习其最终表示
H
c
=
{
H
1
c
,
.
.
.
,
H
K
c
}
H_c=\{H^c_1,...,H^c_K\}
Hc={H1c,...,HKc}。在提出的SFNMT模型中,我们引入了一个额外的多头注意力层,以融合压缩语句和原始输入语句,以学习更有效的源表示形式。
具体地,对于多头注意力融合层,通过多头注意力对原始句子表示
H
x
H_x
Hx和压缩句子表示
H
c
H_c
Hc计算出压缩句子特征上下文表示
H
x
c
H^c_x
Hxc:
H
x
c
=
F
F
N
(
M
u
l
t
i
H
e
a
d
(
H
x
,
H
c
,
H
c
)
)
.
(10)
H^c_x=FFN(MultiHead(H_x,H_c,H_c)).\tag{10}
Hxc=FFN(MultiHead(Hx,Hc,Hc)).(10)
将
H
x
c
H^c_x
Hxc和
H
x
H_x
Hx相加以形成融合源表示形式
H
x
′
H'_x
Hx′:
H
x
′
=
H
x
+
H
x
c
.
(11)
H'_x=H_x+H^c_x.\tag{11}
Hx′=Hx+Hxc.(11)
最后,将
H
x
′
H'_x
Hx′代替
H
x
H_x
Hx输入到等式7中,以依次用于逐字预测目标翻译。
3.3 Backbone Target-side Fusion based NMT
在基于骨干目标端融合的NMT(BTFNMT)模型中,原始句子及其压缩版本也分别由共享SAN表示为
H
x
H_x
Hx和
H
c
H_c
Hc。然后,我们使用元组
(
H
x
,
H
c
)
(H_x,H_c)
(Hx,Hc)代替源端融合表示
H
x
′
H'_x
Hx′作为解码器的输入。具体来说,我们在解码器中引入了一个额外的“encoder-decoder attention”模块,以在当前时刻
i
i
i学习压缩序列上下文
b
i
b_i
bi:
b
i
=
F
F
N
(
M
u
l
t
i
H
e
a
d
(
H
t
g
t
,
H
c
,
H
c
)
)
.
(12)
b_i=FFN(MultiHead(H_{tgt},H_c,H_c)).\tag{12}
bi=FFN(MultiHead(Htgt,Hc,Hc)).(12)
当仅在源端进行编码时,我们在这里将原始句子和压缩句子视为两个独立的源上下文,因此我们使用上下文门
g
c
gc
gc集成源的两个独立上下文:原始上下文
c
i
c_i
ci和压缩上下文
b
i
b_i
bi。门
g
i
g_i
gi由下式计算:
g
i
=
σ
(
M
L
P
(
[
c
i
;
b
i
]
)
)
.
(13)
g_i=\sigma(MLP([c_i;b_i])).\tag{13}
gi=σ(MLP([ci;bi])).(13)
因此,最终目标融合上下文
c
i
′
c'_i
ci′为:
c
i
′
=
g
i
⊗
c
i
+
(
1
−
g
i
)
⊗
b
i
,
(14)
c'_i=g_i\otimes c_i+(1-g_i)\otimes b_i,\tag{14}
ci′=gi⊗ci+(1−gi)⊗bi,(14)
其中
σ
σ
σ是Sigmoid函数,⊗是逐点乘法,
[
⋅
]
[·]
[⋅]表示级联运算。
输入上下文
c
i
′
c'_i
ci′来替换等式8的
c
i
c_i
ci计算下一个目标词的概率。
3.4 Backbone Both-side Fusion based NMT
在基于骨干网的双融合NMT(BBFNMT)模型中,我们结合了BSFNMT和BTFNMT。原始表示
H
x
H_x
Hx及其结合压缩的最终表示
H
x
′
H'_x
Hx′均作为解码器的输入。同样,我们在解码器中引入了一个额外的“encoder-decoder attention”模块,以在当前时间刻
i
i
i上学习压缩序列增强上下文
b
i
′
b'_i
bi′:
b
i
′
=
F
F
N
(
M
u
l
t
i
H
e
a
d
(
H
t
g
t
,
H
x
′
,
H
x
′
)
)
.
(15)
b'_i=FFN(MultiHead(H_{tgt},H'_x,H'_x)).\tag{15}
bi′=FFN(MultiHead(Htgt,Hx′,Hx′)).(15)
然后,应用与BTFNMT一致的上下文门
g
i
g_i
gi来组合两个上下文信息
c
i
c_i
ci和
b
i
′
b'_i
bi′。