个人总结
本文最大贡献是提出了注意力机制 ,相比于之前 NMT(Neural Machine Translation) 把整个句子压缩成一个固定向量表示的方法,对不同位置的目标单词计算每个输入的不同权重,这样能够更好地捕捉目标词相关的输入信息。
ABSTRACT
最近的 NMT 模型是 encoder-decoder 架构,编码器将源句子编码为固定长度的向量,解码器根据该向量生成翻译。本文推测原句编码到一个固定长度的向量是一个瓶颈 ,然后文章提出了改进:在之前模型的基础上自动寻找目标词相关的源句子的部分,而不是死板的把整个句子编码为固定长度的向量。
这个方法在 English-to-French translation
上达到 sota 效果
1. INTRODUCTION
encoder-decoder 架构:编码器神经网络读取源句子并将其编码为固定长度的向量,然后解码器从编码的向量中输出翻译结果。
但是一个潜在问题是 encoder 需要把整个句子编码为固定长度的向量,很难处理长句子(长句子信息量相对更多,同样编码为固定长度向量就很难提取所有重要的的特征)。为了解决这一问题,本文提出在原来模型基础上的扩展,同时进行对齐和翻译(这里对齐的意思应该是预测词和输入词之间位置的对应关系。比如“我爱你”和“I love you”中“我”和“I”的对应。但是语言之间语序又有不同,因此不能按照顺序简单对应)。每次模型生成新的翻译词,它在原句那些最有可能包含有关信息的位置上进行搜索。
这个方法最重要的特点是,它没有尝试将原句的所有部分编码到固定长度的向量,而是它把原句编码到一系列向量,然后在解码的时候灵活的选用这个序列的子集。
2. BACKGROUND: NEURAL MACHINE TRANSLATION
从统计的角度看,翻译相当于寻找译句
y
y
y ,使得给定原句
x
x
x 时条件概率最大,即
a
r
g
m
a
x
y
p
(
y
∣
x
)
argmaxyp(y|x)
a r g m a x y p ( y ∣ x ) ,也就是极大似然估计的思想。
2.1 RNN ENCODER-DECODER
Encoder
在 Encoder-Decoder 框架里,编码器把原句,一个序列的向量
x
=
(
x
1
,
.
.
.
,
x
T
x
)
x=(x_1,...,x_{T_x})
x = ( x 1 , . . . , x T x ) ,编码到一个向量
c
c
c 。最普遍的方法是用一个 RNN:
h
t
=
f
(
x
t
,
h
t
−
1
)
h_{t} = f(x_{t},h_{t-1})
h t = f ( x t , h t − 1 )
c
=
q
(
{
h
t
,
.
.
.
,
h
T
x
}
)
c = q(\{h_{t},...,h_{T_{x}}\})
c = q ( { h t , . . . , h T x } )
h
t
h_t
h t 是时间 t 上的隐状态(hidden state),
c
c
c 是从输入序列的隐状态得到的向量称为上下文向量,
f
f
f 和
q
q
q 是非线性函数
Decoder
解码器用来给定上下文向量
c
c
c 和所有之前预测好的词
{
y
1
,
.
.
.
,
y
t
−
1
}
\{y_1,...,y_{t−1}\}
{ y 1 , . . . , y t − 1 } ,预测下一个词 $y_t $
p
(
y
)
=
∏
t
=
1
T
p
(
y
t
∣
{
y
1
,
.
.
.
,
y
t
−
1
}
,
c
)
p(y) = \prod_{t=1}^{T}p(y_{t} | \{y_{1},...,y_{t-1}\},c)
p ( y ) = t = 1 ∏ T p ( y t ∣ { y 1 , . . . , y t − 1 } , c ) 在这里
y
=
(
y
1
,
.
.
.
,
y
T
y
)
y= (y_{1},...,y_{T_{y}})
y = ( y 1 , . . . , y T y ) 。有了 RNN,每个条件概率都表示成:
p
(
y
t
∣
{
y
1
,
⋯
,
y
t
−
1
}
,
c
)
=
g
(
y
t
−
1
,
s
t
,
c
)
p \left( y _ { t } | \left\{ y _ { 1 } , \cdots , y _ { t - 1 } \right\} , c \right) = g \left( y _ { t - 1 } , s _ { t } , c \right)
p ( y t ∣ { y 1 , ⋯ , y t − 1 } , c ) = g ( y t − 1 , s t , c )
c
c
c 是 encoder 产生的上下文向量,
s
t
s_t
s t 是解码器 t 时刻的隐藏状态。
g
g
g 是一个非线性的,可能包含多层的函数,它输出
y
t
y_t
y t 的概率。
3. LEARNING TO ALIGN AND TRANSLATE
在次提出一种用于 NMT 的新的架构。基于 encoder-decoder,增加一个 alignment model,形成新的网络结构。
3.1 DECODER: GENERAL DESCRIPTION
新的条件概率:
p
(
y
i
∣
y
1
,
…
,
y
i
−
1
,
x
)
=
g
(
y
i
−
1
,
s
i
,
c
i
)
p \left( y _ { i } | y _ { 1 } , \ldots , y _ { i - 1 } , \mathbf { x } \right) = g \left( y _ { i - 1 } , s _ { i } , c _ { i } \right)
p ( y i ∣ y 1 , … , y i − 1 , x ) = g ( y i − 1 , s i , c i ) 注意,原始的
c
c
c 变为
c
i
c_i
c i ,意味着上下文向量不再是固定的,而是每个时间步都有不同的上下文向量。
s
i
s_i
s i 是
i
i
i 时间步解码器的隐藏状态。
s
i
s_i
s i 的计算公式
s
i
=
f
(
s
i
−
1
,
y
i
−
1
,
c
i
)
s _ { i } = f \left( s _ { i - 1 } , y _ { i - 1 } , c _ { i } \right)
s i = f ( s i − 1 , y i − 1 , c i ) 在 RNN 中,
f
f
f 可以看成是一个 RNN 网络
上下文向量
c
i
c_i
c i 取决于编码器对输入句子进行映射的向量序列
(
h
1
,
⋯
,
h
T
x
)
(h_1,⋯,h_{T_x})
( h 1 , ⋯ , h T x ) ,作者称之为
h
i
h_i
h i 为 annotation 向量。 每个 annotation 向量
h
i
h_i
h i 包含关于整个输入序列的信息,其重点关注输入序列的第 i 个词周围的部分。上下文向量是 annotation 向量的加权和。 计算如下:
c
i
=
∑
j
=
1
T
x
α
i
j
h
j
c _ { i } = \sum _ { j = 1 } ^ { T _ { x } } \alpha _ { i j } h _ { j }
c i = j = 1 ∑ T x α i j h j 其中
α
i
j
\alpha_{ij}
α i j 的计算公式如下
α
i
j
=
exp
(
e
i
j
)
∑
k
=
1
T
x
exp
(
e
i
k
)
{ \alpha _ { i j } = \frac { \exp \left( e _ { i j } \right) } { \sum _ { k = 1 } ^ { T _ { x } } \exp \left( e _ { i k } \right) } }
α i j = ∑ k = 1 T x exp ( e i k ) exp ( e i j ) 其中
e
i
j
=
a
(
s
i
−
1
,
h
j
)
{ e _ { i j } = a \left( s _ { i - 1 } , h _ { j } \right) }
e i j = a ( s i − 1 , h j ) ,具体计算公式如下
e
i
j
=
v
a
⊤
tanh
(
W
a
s
i
−
1
+
U
a
h
j
)
e _ { i j } = v _ { a } ^ { \top } \tanh \left( W _ { a } s _ { i - 1 } + U _ { a } h _ { j } \right)
e i j = v a ⊤ tanh ( W a s i − 1 + U a h j )
e
i
j
e_{ij}
e i j 是 alignment model 的输出,是一个对齐模型,这个模型衡量了原句的 j 位置和译句的 i 位置在多大程度上匹配。对齐模型
α
\alpha
α 作为一个前馈神经网络,跟编码器和解码器共同进行训练。
到这里就呼应题目了 —— 对齐和翻译是同时学习的。
学习对齐模型只是手段,目的是完善注意力机制 —— 计算每个翻译词的上下文。
我们可以把计算注释的加权和看成计算期望注释。把
α
i
j
\alpha_{ij}
α i j 当做译句词
y
i
y_i
y i 由原句词
x
j
x_j
x j 翻译而来的概率。概率
α
i
j
\alpha_{ij}
α i j 反映了注释
h
j
h_j
h j 相对于前一个隐状态
s
i
−
1
s_{i−1}
s i − 1 在预测下一个状态
s
i
s_i
s i 和生成
y
i
y_i
y i 过程中的重要性。直观上,这在解码器上实现了注意机制。
3.2 ENCODER: BIDIRECTIONAL RNN FOR ANNOTATING SEQUENCES
以往的 RNN,都是从句子第一个符号读到最后一个符号。然而,我们想要让注释不仅囊括之前的信息,还要包含之后的信息,所以我们采用双向 RNN。
一个 BiRNN 由向前和向后 RNN 组成。向前 RNN
f
→
\overrightarrow{f}
f
从左到右读取原句(从
x
1
x_1
x 1 到
x
T
x
x_{T_x}
x T x ),然后计算一个序列的向前隐状态
(
h
→
1
,
.
.
.
,
h
→
T
x
)
(\overrightarrow{h}_{1},...,\overrightarrow{h}_{T_{x}})
( h
1 , . . . , h
T x ) 。向后 RNN
f
←
\overleftarrow{f}
f
反方向读取原句,然后计算一个序列的向后隐状态
(
h
←
1
,
.
.
.
,
h
←
T
x
)
(\overleftarrow{h}_{1},...,\overleftarrow{h}_{T_{x}})
( h
1 , . . . , h
T x ) 。
网络结构
循环神经网络使用 GRU
z
i
=
σ
(
W
z
e
(
y
i
−
1
)
+
U
z
s
i
−
1
+
C
z
c
i
)
r
i
=
σ
(
W
r
e
(
y
i
−
1
)
+
U
r
s
i
−
1
+
C
r
c
i
)
s
~
i
=
tanh
(
W
e
(
y
i
−
1
)
+
U
[
r
i
∘
s
i
−
1
]
+
C
c
i
)
s
i
=
f
(
s
i
−
1
,
y
i
−
1
,
c
i
)
=
(
1
−
z
i
)
∘
s
i
−
1
+
z
i
∘
s
~
i
\begin{aligned} z _ { i } & = \sigma \left( W _ { z } e \left( y _ { i - 1 } \right) + U _ { z } s _ { i - 1 } + C _ { z } c _ { i } \right) \\ r _ { i } & = \sigma \left( W _ { r } e \left( y _ { i - 1 } \right) + U _ { r } s _ { i - 1 } + C _ { r } c _ { i } \right) \\ \tilde { s } _ { i } &= \tanh \left( W e \left( y _ { i - 1 } \right) + U \left[ r _ { i } \circ s _ { i - 1 } \right] + C c _ { i } \right) \\ s _ { i } &= f \left( s _ { i - 1 } , y _ { i - 1 } , c _ { i } \right) = \left( 1 - z _ { i } \right) \circ s _ { i - 1 } + z _ { i } \circ \tilde { s } _ { i } \end{aligned}
z i r i s ~ i s i = σ ( W z e ( y i − 1 ) + U z s i − 1 + C z c i ) = σ ( W r e ( y i − 1 ) + U r s i − 1 + C r c i ) = tanh ( W e ( y i − 1 ) + U [ r i ∘ s i − 1 ] + C c i ) = f ( s i − 1 , y i − 1 , c i ) = ( 1 − z i ) ∘ s i − 1 + z i ∘ s ~ i 其中 ◦ 是 Hadamard Product,也就是操作矩阵中对应的元素相乘,
e
(
y
i
−
1
)
∈
R
m
e \left( y _ { i - 1 } \right) \in \mathbb { R } ^ { m }
e ( y i − 1 ) ∈ R m 是一个 m 维的词向量。
根据 3.1 的图可以看到预测
y
i
y_i
y i 时有 3 个输入:
y
i
−
1
y_{i-1}
y i − 1 、
s
i
−
1
s_{i-1}
s i − 1 、
c
i
c_i
c i
z
z
z 和
r
r
r 分别是控制更新的门控(update gate)和控制重置的门控(reset gate),对应上如的 r 和 z
s
~
i
\tilde { s } _ { i }
s ~ i 对应上图
h
′
h^{'}
h ′
s
i
s_i
s i 对应上图
h
t
h^{t}
h t
4 EXPERIMENT SETTINGS
通过上图可以看出随着句子长度的增加 RNNencdec 模型的效果快速下降,RNNsearch 50 模型效果随着长度变化几乎没有差别
5 RESULTS
5.1 QUANTITATIVE RESULTS
参考资料
论文阅读:《Neural Machine Translation by Jointly Learning to Align and Translate》
论文笔记:Neural Machine Translation by Jointly Learning to Align and Translate
《neural machine translation by jointly learning to align and translate》(2015ICLR) paper 阅读笔记七
人人都能看懂的 GRU