一、摘要
神经机器翻译是最近提出的机器翻译的一种方法。与传统的统计机器翻译不同,神经机器翻译旨在建立一个单一的神经网络,可以联合调整以最大化翻译性能。最近提出的用于神经机器翻译的模型通常属于一系列编码器 - 解码器,并将源句编码成固定长度的矢量,解码器从该矢量生成翻译。我们推测对于提升基本的编码器-解码器结构的性能,固定长度向量的使用是一个瓶颈。并建议通过允许模型自动搜索与预测目标词相关的部分源句子来扩展这类模型。
二、介绍
不像传统的基于短语的翻译系统,由很多分离的小组件构成,NMT尝试搭建和训练一个大的神经网络,可以读取一个句子然后输出正确的翻译。大多数提出的NMT方法都是属于encoder-decoder类型,encoder将原句编码为固定长度的向量,decoder根据编码向量输出翻译。** 一个潜在的问题是需要压缩原句所有必要的信息为固定长度的向量。这会使得神经网络难以处理长句的问题。**
为了解决这个问题,作者扩展了encoder-decoder模型,可以学习共同对齐和翻译。这个模型在翻译时每生成一个词的时间步,它就会在原句中讯寻找最相关的位置信息。然后,模型基于与这些源位置相关联的上下文向量和所有先前生成的目标词来预测目标词。
这种方法与基本encoder-decoder最重要的区别是它不会尝试将整个输入句子编码为单个固定长度的矢量。相反,它将输入句子编码成矢量序列,并在解码翻译时自适应地选择这些矢量的子集。这使得神经翻译模型不必将源句子的所有信息(无论其长度)压缩成固定长度的矢量。 我们证明这允许模型更好地应对长句。
三、背景
从概率的角度来说,翻译就等同于给定原句x找到目标句y的最大概率, a r g m a x y p ( y ∣ x ) arg\ max_yp(y|x) arg maxyp(y∣x)。在NMT中,我们训练一个参数化模型来最大化这个条件概率。一旦模型学习到条件概率分布,给定一个原句我们就可以最大化条件概率生成相应的翻译。
3.1 RNN Encoder-Decoder
这里简答的介绍下当前的框架,rnn encoder-decoder。然后我们会在这个框架的基础上学习
a
l
i
g
n
和
t
r
a
n
s
l
a
t
e
align和translate
align和translate。在encoder-decoder框架中,encoder读取输入句子,一个向量序列
x
=
(
x
1
,
.
.
.
,
x
T
x
)
x=(x_1,...,x_{T_x})
x=(x1,...,xTx),将其编码为
c
c
c。使用RNN最普遍的方法就是:
h
t
=
f
(
x
t
,
h
t
−
1
)
h_t=f(x_t,h_{t-1})
ht=f(xt,ht−1)
c
=
q
(
{
h
1
,
.
.
.
,
h
T
x
}
)
c=q(\{h_1,...,h_{T_x}\})
c=q({h1,...,hTx})
其中
h
t
∈
R
n
h_t\in R^n
ht∈Rn 是时刻t的隐藏层状态,
c
c
c 是根据隐藏层状态生成的向量。
f
和
q
f和q
f和q 是非线性函数。给定上下文向量
c
c
c和所有之前预测的词
{
y
1
,
.
.
.
,
y
t
−
1
}
\{y_1,...,y_{t-1}\}
{y1,...,yt−1},decoder预测下一个单词
y
t
y_t
yt。换句话来说,解码器通过将联合概率分解为有序条件来定义翻译y的概率:
p
(
y
)
=
∑
t
=
1
T
p
(
y
t
∣
{
y
1
,
.
.
.
,
y
t
−
1
}
,
c
)
,
p(y)=\sum_{t=1}^Tp(y_t|\{y_1,...,y_{t-1}\},c),
p(y)=t=1∑Tp(yt∣{y1,...,yt−1},c),
其中,
y
=
(
y
1
,
.
.
.
,
y
T
y
)
y=(y_1,...,y_{T_y})
y=(y1,...,yTy),通过RNN,每个条件概率可以建模为:
p
(
y
t
∣
{
y
1
,
.
.
.
,
y
t
−
1
}
,
c
)
=
g
(
y
t
−
1
,
s
t
,
c
)
,
p(y_t|\{y_1,...,y_{t-1}\},c)=g(y_{t-1},s_t,c),
p(yt∣{y1,...,yt−1},c)=g(yt−1,st,c),
其中
g
g
g 是非线性、多层函数,输出
y
t
y_t
yt 的概率,
s
t
s_t
st 是RNN的隐藏层状态。
四、LEARNING TO ALIGN AND TRANSLATE
本节作者提出了一个NMT的新框架,新框架的encoder由双向RNN组成,decoder用于在解码翻译期间模拟搜索源句子。
4.1 Decoder
在新框架中,定义每个条件概率为:
p
(
y
i
∣
{
y
1
,
.
.
.
,
y
i
−
1
}
,
x
)
=
g
(
y
i
−
1
,
s
i
,
c
i
)
,
p(y_i|\{y_1,...,y_{i-1}\},x)=g(y_{i-1},s_i,c_i),
p(yi∣{y1,...,yi−1},x)=g(yi−1,si,ci),
其中,
s
i
s_i
si 是RNN时刻
i
i
i 的隐藏层状态:
s
i
=
f
(
s
i
−
1
,
y
i
−
1
,
c
i
)
s_i=f(s_{i-1},y_{i-1},c_i)
si=f(si−1,yi−1,ci)
这里与目前的encoder-decoder方法不同,对每一个目标词
y
i
y_i
yi的概率,上下文向量
c
i
c_i
ci 都是不同的。上下文向量
c
i
c_i
ci 依赖于encoder将输入映射为序列
(
h
1
,
.
.
.
,
h
T
x
)
(h_1,...,h_{T_x})
(h1,...,hTx)。每个
h
i
h_i
hi 包含关于整个输入序列的信息,其强烈关注于围绕输入序列的第i个词的部分。上下文向量
c
i
c_i
ci 就是这些
h
i
h_i
hi的加权和:
c
i
=
∑
j
=
1
T
x
α
i
j
h
j
c_i=\sum_{j=1}^{T_x}\alpha_{ij}h_j
ci=j=1∑Txαijhj
α
i
j
=
e
x
p
(
e
i
j
)
∑
k
=
1
T
x
e
x
p
(
e
i
k
)
\alpha_{ij}=\frac{exp(e_{ij})}{\sum_{k=1}^{T_x}exp(e_{ik})}
αij=∑k=1Txexp(eik)exp(eij)
e
i
j
=
a
(
s
i
−
1
,
h
j
)
e_{ij}=a(s_{i-1},h_j)
eij=a(si−1,hj)
对齐模型用于评估位置
j
j
j 周围的输入和位置
i
i
i 的输出匹配的程度,这个分数基于RNN隐藏层状态
s
i
−
1
s_{i-1}
si−1 和输入句子的
h
j
h_j
hj。我们将对齐模型
a
a
a 参数化为前馈神经网络,该网络与所提出的系统的所有其他组件共同训练。不像传统的机器翻译,对齐模型不视为一个隐含变量。相反,对齐模型计算一个soft alignment,允许损失函数的梯度回溯,这个梯度就可以用来训练这个对齐模型。
概率
α
i
j
\alpha_{ij}
αij 或其相关能量
e
i
j
e_{ij}
eij 反映了
h
j
h_j
hj 相对于先前隐藏状态
s
i
−
1
s_{i-1}
si−1 在决定下一状态
s
i
s_i
si 和产生
y
i
y_i
yi 时的重要性。直观地说,这在decoder实现了attention机制。decoder决定了哪部分原句更应该关注。通过这个attention机制,我们减轻encoder的负担,不必将原句中的所有信息编码成固定长度矢量。
4.2 Encoder:双向RNN
普通的RNN只考虑了前向词的信息,而双向RNN考虑了前向和后向词的信息。
五、实验
在WMT 14 的英语-法语数据集上训练。对比了传统的RNN encoder-decoder模型,同时也做了长度对比实验,下图是实验结果。可以看到随着句子长度的增加,RNNenc的BLEU 分数也随之下降,而作者提出的模型RNNsearch-50基本没什么变化。
五、总结
这里只说一下不足之处。作者并没有做阉割实验,究竟是双向RNN的贡献大还是attention的贡献大,这在实验中没有体现。