学习笔记迁移至以下公众号:
Fine-Grained Attention Mechanism for Neural Machine Translation
- 在这篇文章中作者提出了一种fine-grained的注意力机制即每一维的context vector将获得一个单独的注意力得分。
- 作者证明了这种做法的合理性
通过Choi et al.(2017)的文章,对词向量的维度进行contextualization发现词向量的每一个维度都都在context中充当着不同的作用,由于这一观点的启发,作者Choi 和Bengio便提出这种fine-grained的注意力机制。
Background : Attention-based Neral Machine Translation
这部分主要介绍了Bahdanau et al.(2015)提出的注意力机制。
given a source sentence X = ( w 1 x , w 2 x , . . . , w T x ) X=(w_1^x,w_2^x,...,w_T^x) X=(w1x,w2x,...,wTx)
那么我们的目标函数就是
p
(
Y
=
(
w
1
y
,
w
2
y
,
.
.
.
,
w
T
y
)
∣
X
)
p(Y=(w_1^y,w_2^y,...,w_T^y)|X)
p(Y=(w1y,w2y,...,wTy)∣X).
解释为:在给定输入条件下,获得某一输出的概率。
在这个模型中包含Encoder,Decoder,and attention mechanism三个部分。
一、Encoder
encoder 通常通过双向循环神经网络来完成。在编码过程开始之前,每一个source word
w
t
x
w_t^x
wtx被映射到一个连续的向量空间中去(所有输入单词的词嵌入矩阵)。
x
t
=
E
x
[
.
,
w
t
x
]
x_t=E^x[.,w_t ^x]
xt=Ex[.,wtx]
如果图示的话可以表示为:
这里的
Φ
←
\overleftarrow{\Phi}
Φ可以是LSTM( Hochreiter and Schmidhuber (1997)),或者GRU( Cho et al. (2014)))。
在每一个t时刻将正反两个方向的结果concat在一起。
二、Decoder
解码层可以模型化为:
三、Attention mechanism
在解码层中维持着一个hidden state z t ′ z_{t'} zt′。在每一个 t ′ t' t′时刻模型首先用注意力机制 f A t t f_{Att} fAtt对C中的每一个向量进行select ,or weight 。在Bahdanau的注意了机制中 f A t t f_{Att} fAtt是一个前向神经网络,输入分别为前一时刻的解码层的hidden state,和C中的一个向量。在这个前向神经网络中tanh()常常被作为激发函数。
与编码层不同的是这里的 y t ′ − 1 y_{t'-1} yt′−1是上一个目标单词的向量。
这里的 c t ′ c_{t'} ct′在作为Decoder的一个输入
Variants of Attention Mechanism
Jean et al.(2015a); Chung et al. (2016a)L,uong et al.(2016)对Bahdanau et al.(2015)的注意力机制做了点改进。
前者将score function 修改成
e
t
′
,
t
=
f
A
t
t
Y
(
z
t
′
−
1
,
h
t
,
y
t
′
−
1
)
e_{t',t} = f_{AttY}(z_{t'-1},h_t,y_{t'-1})
et′,t=fAttY(zt′−1,ht,yt′−1)
即加入了上衣时刻的输出值。
Fine-Grained Attention Mechanism
上面无论是Bahdanau的还是后面工作者所做的改进,给定一个query对于每一个context vector 仅得到一个注意力值。如图(a)所示。
作者提出的模型类似于途中的(b)所示。
这里的改变是讲aligment结果进行softmax后与每一个annotation vector做Hadamard 乘积,这样就将annotation vector的每一个维度独立开来进行注意力机制的描述。
[1] Fine-grained attention mechanism for neural machine translation