基本是机器翻译,也进行了基本的人工矫正,凑活看吧
原论文:《An Introductory Survey on Attention Mechanisms in NLP Problems》
链接:https://arxiv.org/abs/1811.05544
论文时间:2018年
摘要
起初源于人类直觉,后来适用于机器翻译以进行自动token对齐,注意机制是一种根据每个元素被分配的重要性分数对序列数据进行编码的简单方法,已经获得了广泛的应用,并在NLP的多种领域取得了显著性的改进,其中包括情感分类,文本摘要,问答,依赖解析等。本文通过对近期工作的调查,以及对不同NLP问题中的注意力机制的介绍性的总结,旨在为读者提供这种被广泛使用的方法的基本知识,旨在讨论其对不同任务的不同变种,探索其与机器学习中的其他技术的关联,检查评估其性能的方法。
1. 说明
我们通过一个具体的神经机器翻译的例子来介绍我们的主题。传统方法(Kalchbrenner and Blunsom 2013; Cho et al. 2014)是由编码器-解码器结构形成的,这两个都是递归神经网络。首先,将源token的一个输入序列喂给编码器,该编码器最后的隐藏的表示将会被提取出来并用于初始化解码器的隐藏状态,然后目标token将会被一个接一个地生成。尽管与纯统计方法相比具有更高的性能,但基于RNN的架构存在两个严重的缺点。首先,RNN是健忘的,这意味着旧信息在经过多个时间步骤传播后会被抛弃;其次,在解码期间没有明确的字对齐,因此焦点被分散在整个序列中。为解决上述问题,注意力机制被首先引入到神经机器翻译中(Bahdanau, Cho, and Bengio 2014)。它们使用相同的RNN编码器,对于解码期间的每个步骤
j
j
j,它们计算每个输入token的隐藏表示
h
i
i
n
\pmb h^{in}_{i}
hhhiin的注意力分数
α
j
i
\alpha_{ji}
αji,进而获得上下文向量
c
j
\pmb c_{j}
cccj(参见图1):
e
j
i
=
a
(
h
i
i
n
,
h
j
o
u
t
)
e_{ji} = a(\pmb h_i^{in}, \pmb h_j^{out})
eji=a(hhhiin,hhhjout)
α
j
i
=
e
j
i
∑
k
e
j
k
\alpha_{ji} = \frac{e_{ji}}{\sum_k e_{jk}}
αji=∑kejkeji
c
j
=
∑
i
α
j
i
h
i
i
n
\pmb c_j = \sum_i \alpha_{ji} \pmb h_i^{in}
cccj=i∑αjihhhiin
这里
c
j
\pmb c_{j}
cccj是输入序列中元素的加权平均值,是关于当前元素
h
j
o
u
t
\pmb h^{out}_{j}
hhhjout的编码后的句子表示,
a
(
h
i
i
n
,
h
j
o
u
t
)
a(\pmb h^{in}_{i}, \pmb h^{out}_{j})
a(hhhiin,hhhjout)是衡量两个token之间相似性的对齐函数,稍后将详细讨论。然后将
c
j
\pmb c_{j}
cccj与当前隐藏状态
h
j
\pmb h_{j}
hhhj和最后一个目标token
y
j
−
1
\pmb y_{j-1}
yyyj−1组合以生成当前token
y
j
\pmb y_{j}
yyyj:
y
j
=
f
y
(
h
j
o
u
t
,
y
j
−
1
,
c
j
)
\pmb y_j = f_y(\pmb h_j^{out}, \pmb y_{j-1}, \pmb c_j)
yyyj=fy(hhhjout,yyyj−1,cccj)
h
j
+
1
o
u
t
=
f
h
(
h
j
o
u
t
,
y
j
)
\pmb h_{j+1}^{out} = f_h(\pmb h_j^{out}, \pmb y_j)
hhhj+1out=fh(hhhjout,yyyj)
这里 f y f_{y} fy 和 f h f_{h} fh 代表循环网络中的输出层和隐藏层。对每个标记 y j \pmb y_{j} yyyj 重复该过程,直到输出序列的结尾。通过引入这个额外的编码步骤,可以解决前面提到的问题:RNN的坏记忆不再是问题,因为计算输入序列中的每个元素的注意力得分,因此编码后的表示 c j \pmb c_{j} cccj的计算不受序列长度的影响;另一方面,这也可以实现输入序列上的软对齐,因为每个元素将会根据注意力得分而获得突出的显示或向下的加权,并且焦点仅放在序列中的重要部分上,而不会去关注无用或不相关的部分。因此,基于注意力的翻译模型在机器翻译中取得了巨大的成功,之后,注意力机制被广泛地应用在其他NLP任务中。此外,现在已经根据注意力的基本形式提出了很多不同的变体,来处理更复杂的任务。在下面的章节,我们将:
- 详细解释基本的注意力形式。(公式)
- 根据处理的特殊任务讨论不同的变种。(变种)
- 探索注意力与机器学习中的其他概念或技术的关联,例如预训练和 ensemble。(应用)
- 检验那些用于评估注意力的有效性的方法。(评价)
2. 公式
我们在前面已经讨论了注意力在神经机器翻译中的应用。为了将其形式化的展现为注意力的基本形式,我们将
V
=
{
v
i
}
∈
R
n
×
d
v
V=\{\pmb{v}_{i}\}\in\mathbb{R}^{n\times d_{v}}
V={vvvi}∈Rn×dv定义为一个向量元素序列,并将前面的步骤改写为:
e
i
=
a
(
u
,
v
i
)
(
c
o
m
p
u
t
e
a
t
t
e
n
t
i
o
n
s
c
o
r
e
s
)
e_{i}=a(\pmb u,\pmb v_{i})\ \ \ \ (compute attention scores)
ei=a(uuu,vvvi) (computeattentionscores)
α
i
=
e
i
∑
j
e
j
(
n
o
r
m
a
l
i
z
e
)
\alpha_{i}=\frac{e_{i}}{\sum_{j}e_{j}}\ \ \ \ (normalize)
αi=∑jejei (normalize)
c
=
∑
i
α
i
v
i
(
e
n
c
o
d
e
)
\pmb c=\sum_{i}\alpha_{i} \pmb v_{i}\ \ \ \ (encode)
ccc=i∑αivvvi (encode)
在第一步中, u ∈ R d v \pmb u \in \mathbb{R}^{d_{v}} uuu∈Rdv是一个特定于任务的模式(pattern)向量,它会根据对齐函数 a ( u , v ) a(\pmb u,\pmb v) a(uuu,vvv)的值与序列 { v i } \{\pmb v_{i}\} {vvvi}中的每个元素进行匹配,这个函数输出的是一个用于衡量匹配程度的标量 e i ∈ R e_{i}\in\mathbb{R} ei∈R。在大多数情况下,我们假设 d u = d v = d d_{u}=d_{v}=d du=dv=d。常用的对齐函数(Luong, Pham, and Manning 2015)有:
乘性:
u
T
v
(
d
o
t
)
\pmb u^{T} \pmb v\ \ \ \ (dot)
uuuTvvv (dot)
u
T
W
v
(
g
e
n
e
r
a
l
)
\pmb u^{T}W\pmb v\ \ \ \ (general)
uuuTWvvv (general)
加性:
w
2
T
t
a
n
h
(
W
1
[
u
;
v
]
)
\pmb w^{T}_{2}tanh(W_{1}[\pmb u;\pmb v])
www2Ttanh(W1[uuu;vvv])
MLP:
σ
(
w
2
T
t
a
n
h
(
W
1
[
u
;
v
]
+
b
1
)
+
b
2
)
\sigma(\pmb w^{T}_{2}tanh(W_{1}[\pmb u;\pmb v]+\pmb b_{1})+b_{2})
σ(www2Ttanh(W1[uuu;vvv]+bbb1)+b2)
它们都度量了不同表示中的成对相似性(pairwise similarity)。最后一个分数 α i ∈ R \alpha_i \in \mathbb{R} αi∈R 是每个元素 v i \pmb v_{i} vvvi的归一化权重,它在后面被用于将整个序列编码成一个上下文向量 c ∈ R d u \pmb c\in\mathbb{R}^{d_{u}} ccc∈Rdu,而这个向量随后会被作为一个加性的上下文特征合并到下游任务中。直观地说,与模式 u \pmb u uuu匹配更紧密的 v i \pmb v_{i} vvvi能够得到更大的权重,因此对最终编码 c \pmb c ccc的影响更大。在机器翻译中,注意力分数可以自然地解释为目标token与每个源token的对齐度量。理想情况下,在生成目标token y j \pmb y_{j} yyyj时,我们期望最优的对齐源标记( the gold alignment source token(s) )能够获得较高的关注分数,这样编码后的表示 c j \pmb c_{j} cccj可以为解码提供密切相关的信息。
为了避免混淆,我们在进一步讨论之前先解释符号和缩写的用法。我们对标量使用小写符号,向量使用小写黑体符号,矩阵使用大写符号,张量使用大写黑体符号。当我们提到注意力分数时, e e e 代表原始分数, α \alpha α 代表标准化分数。 W W W, b b b 在默认情况下是训练过程中要学习的权重和偏差, v i \pmb v_{i} vvvi 在默认情况下是一个通用元素,根据场景,它可以是以下任意一个元素:句子中的嵌入token、token的隐藏表示、文档中的嵌入语句等。为了简单起见,我们偶尔使用 SoftMax 来表示包含求幂、求和以及除法的正则化步骤(the normalization step)。
3. 变种
前面,我们讨论了注意力机制的基本形式。由于其简单性和可解释性,它在各种NLP任务中均获得了广泛的应用。然而,这种关注机制一般不足以完成更复杂的任务。下面是一个简单的例子(Sukhbaatar et al. 2015):
Sam walks into the kitchen. (1)
Sam picks up an apple. (2)
Sam walks into the bedroom. (3)
Sam drops the apple. (4)
Q: Where is the apple?
A: Bedroom
潜在的困难在于,Q和(3)之间没有直接的关系,因此我们需要设计一个更复杂的机制,利用上下文中的潜在线索(在本例中是时间推理)来引导模型注意正确的位置。近年来人们提出了各种不同的注意力的变体,我们将它们归纳为几个最具代表性的类别(见表1):基本注意、多维注意、层次注意、自我注意、基于记忆的注意 和 特定于任务的注意。从左到右,对应任务的复杂性越来越高,而且注意力机制会变得更加特定于某个具体的任务。我们将在下面的章节中详细讨论每个类别。
3.1 多维注意
基本形式的注意力机制为序列
V
=
{
v
i
}
V=\{\pmb v_{i}\}
V={vvvi}中的每一项计算一个标量分数
α
i
\alpha_{i}
αi。这可以称为一维注意或矢量注意,因为连接的输出分数
α
=
α
i
\pmb \alpha=\alpha_{i}
ααα=αi是矢量
α
∈
R
n
\pmb \alpha \in R^{n}
ααα∈Rn。多维关注的动机很简单:捕获在不同的表示空间中的项(terms)之间的多重交互作用,其构造方式可以很直接,也就是将多个一维表示(representations)堆叠在一起。
作为二维注意的一个例子,方面和观点项(aspect and opinion terms)提取(Wang et al. 2017),给出了一个标记的隐藏表示序列
V
=
{
v
i
}
V=\{\pmb v_{i}\}
V={vvvi}、一个方面(aspect)原型向量
u
\pmb u
uuu和一个三维张量
W
=
{
W
k
}
∈
R
K
×
d
×
d
\pmb W=\{W_{k}\} \in \mathbb{R}^{K\times d\times d}
WWW={Wk}∈RK×d×d,其中每个切片(slice)
W
k
∈
R
d
×
d
W_{k}\in \mathbb{R}^{d\times d}
Wk∈Rd×d是一个矩阵,它捕获了每个标记与原型之间的组合的一种类型,每个元素
v
i
\pmb v_{i}
vvvi的向量注意得分
e
i
\pmb e_{i}
eeei(未归一化)如下:
e
i
=
t
a
n
h
(
u
T
W
v
i
)
=
c
o
n
c
a
t
(
t
a
n
h
(
u
T
W
k
v
i
)
)
\pmb e_{i} = tanh(\pmb u^{T} \pmb W \pmb v_{i}) = concat(tanh(\pmb u^{T} W_{k} \pmb v_{i}))
eeei=tanh(uuuTWWWvvvi)=concat(tanh(uuuTWkvvvi))
然后通过拼接就能得到整个序列的二维注意表示:
E
=
{
e
i
}
E=\{\pmb e_{i}\}
E={eeei}。作为一个具体的例子,考虑“Fish burger is the best dish”这句话,在这里 Fish burger 是一个 aspect term,因此它将获得关于方面原型
u
\pmb u
uuu 的高度关注分数,并且可学习的W能够在投射到不同空间之后突出显示 Fish 和 burger。这种多维方法的一个缺点是,强指示元素可以同时捕获多种类型的注意力,从而降低其表示能力。为了弥补这一点,我们可以在二维调度矩阵A上施加一个 Frobenius 范数中的正则化惩罚项(Du et al. 2018; Lin et al. 2017):
∣
∣
A
A
T
−
I
∣
∣
F
2
||AA^{T} − I||^{2}_{F}
∣∣AAT−I∣∣F2
来约束每个注意栏(attention column),使其集中在序列中的不同部分。
3.2 分层注意
让我们从文档分类中的一个例子开始讨论分层结构。给出一份简短的文件(Yang et al. 2016):How do I get rid of all the old web searches I have on my web browser? I want to clean up my web browser go to tools → \rarr → options Then click ”delete history” and ”clean up temporary internet files.”。任务是将文档分为几个类别之一,在本例中是 Computer 与 Internet。直观地说,我们可以识别出为分类提供线索的单词,因为在与计算机相关的文档中,web browser 这个词经常出现。此外,典型的句子也可能为分类提供潜在的信息,因为首次使用计算机软件的非专业人员倾向于寻求有关 How to get rid of 的指导。如果我们考虑文本数据的嵌套结构: c h a r a c t e r ∈ w o r d ∈ s e n t e n c e ∈ d o c u m e n t character \in word \in sentence \in document character∈word∈sentence∈document,就可以相应地构造一个 Hierarchical Attention,从下到上(即从词级到句级)或从上到下(从词级到字符级)地识别线索或从全局和局部提取重要信息。
文档分类采用自下而上的结构(Yang et al. 2016)。两个BiGRUs分别用于生成单词级和句子级上下文表示。然后使用一对分层的注意力层来获得单词级和句子级编码:
h
i
(
t
)
=
B
i
G
R
U
(
v
i
(
t
)
)
(
12
)
\pmb h_{i}^{(t)} = BiGRU(\pmb v_{i}^{(t)})\ \ \ \ (12)
hhhi(t)=BiGRU(vvvi(t)) (12)
v
i
=
∑
t
s
o
f
t
m
a
x
(
u
w
T
h
i
(
t
)
)
⋅
h
i
(
t
)
(
13
)
\pmb v_{i} = \sum_{t}softmax(\pmb u^{T}_{w} \pmb h_{i}^{(t)})\cdot \pmb h_{i}^{(t)}\ \ \ \ (13)
vvvi=t∑softmax(uuuwThhhi(t))⋅hhhi(t) (13)
h
i
=
B
i
G
R
U
(
v
i
)
(
14
)
\pmb h_{i} = BiGRU(\pmb v_{i})\ \ \ \ (14)
hhhi=BiGRU(vvvi) (14)
c
=
∑
t
s
o
f
t
m
a
x
(
u
s
T
h
i
)
⋅
h
i
(
15
)
\pmb c = \sum_{t}softmax(\pmb u_{s}^{T} \pmb h_{i}) \cdot \pmb h_{i}\ \ \ \ (15)
ccc=t∑softmax(uuusThhhi)⋅hhhi (15)
SoftMax 相当于我们之前讨论过的normlization步骤。 h i ( t ) \pmb h_{i}^{(t)} hhhi(t)和 h i \pmb h_{i} hhhi代表单词和句子的隐藏表示。 u w T \pmb u_{w}^{T} uuuwT和 u s T \pmb u_{s}^{T} uuusT是训练过程中需要学习的单词级和句子级模式向量。最后一个句子级的表达 c \pmb c ccc 被输入到逻辑回归层中来预测类别。
另一种类型的分层关注采用自上而下的方法,例如语法错误纠正(Ji et al. 2017)。考虑一个损坏的句子:I have no enough previleges。其思想是首先建立一个类似于机器翻译的编码器-解码器体系结构,然后应用单词级注意进行全局语法和流畅性错误更正(I have no enough → \rarr → I don’t have enough),还可以选择使用字符级注意进行本地拼写错误更正(previleges → \rarr → privileges)。自上而下的技术也被用于相册摘要(album summarization)(Yu, Bansal, and Berg 2017),其中照片级的注意用于从相册中选择适当的照片,单词级的注意力被与用于文本生成的序列模型集成在一起。
3.3 自关注
让我们重新回顾一下构建基本形式的注意力的步骤。给定元素 V = { v i } V=\{\pmb v_{i}\} V={vvvi}的序列和模式向量 u \pmb u uuu,对于每个元素 v i \pmb v_{i} vvvi,我们可以计算注意力得分 α i = a ( u , v i ) \alpha_{i}=a(\pmb u,\pmb v_{i}) αi=a(uuu,vvvi)。这也可以称为外部注意力,因为这里的注意力是将外部模式 u \pmb u uuu与每个元素 v i \pmb v_{i} vvvi进行匹配来计算的,并且每个得分 e i e_{i} ei表示匹配的质量。相反,在自我注意中,外部模式 u \pmb u uuu被序列本身的一部分所取代,因此也被称为内部注意。举个例子来说明这一点:Volleyball match is in progress between ladies,这里的 match 是所有其他符号所依赖的句首,理想情况下,我们希望利用自我关注来自动捕获这种内在依赖。或者,我们可以将自我关注理解为对每个元素 v i \pmb v_{i} vvvi在V中匹配一个内部模式 v ′ \pmb v' vvv′:
e i = a ( v ′ , v i ) e_{i}=a(\pmb v',\pmb v_{i}) ei=a(vvv′,vvvi)
v
′
\pmb v'
vvv′的一个典型选择是另一个元素
v
j
\pmb v_{j}
vvvj,这是为了计算一个成对的注意力分数,但是为了充分捕捉一个序列中的项之间的复杂交互作用,我们可以进一步扩展这个范围来计算一个序列中每对项之间的注意,也就是说,将
v
′
\pmb v'
vvv′设置为一个序列中的每一个元素
v
j
\pmb v_{j}
vvvj,并计算一个相应的分数。据此,我们将前面的公式修改为:
e
i
j
=
a
(
v
i
,
v
j
)
e_{ij}=a(\pmb v_{i},\pmb v_{j})
eij=a(vvvi,vvvj)
α
i
j
=
s
o
f
t
m
a
x
(
e
i
j
)
\alpha_{ij} = softmax(e_{ij})
αij=softmax(eij)
目的是捕获序列中项之间的复杂交互和依赖关系。对齐函数
a
a
a的选择实际上与基本注意力的相同,例如单层神经网络:
α
i
j
=
s
o
f
t
m
a
x
(
t
a
n
h
(
w
T
[
v
i
;
v
j
]
+
b
)
)
\alpha_{ij} =softmax(tanh(\pmb w^{T}[\pmb v_{i};\pmb v_{j}]+b))
αij=softmax(tanh(wwwT[vvvi;vvvj]+b))
通过这种方式,每个token保持与所有其他token相关的分布式关系表示,并且复杂的成对(pairwise)关系可以很容易地在其分配的分数上得到解释。这种模型还可以进一步丰富我们前面所提到的多维关注(Shen et al. 2017)。
自我关注的另一个动机与嵌入这个词有关。具体来说,我们希望利用自我关注模型以一种自适应的方式学习复杂的上下文token表示。我们可以通过词义消歧来说明这一点:
I arrived at the bank after crossing the street.
I arrived at the bank after crossing the river.
在不同的上下文中,单词bank有不同的含义,我们希望我们的模型能够学习上下文token嵌入,这些token嵌入可以在其上下文中捕获语义信息。Transformer(Vaswani et al. 2017)是一个典型的基于关注的机器翻译体系。它是一个具有前馈层和自注意层的连续块的混合神经网络。与之前的自我关注模式类似,新的自我关注编码可以表示为:
A
=
s
o
f
t
m
a
x
[
(
V
W
1
)
(
V
W
2
T
)
d
o
u
t
]
A=softmax[\frac{(VW_{1})(VW_{2}^{T})}{\sqrt{d_{out}}}]
A=softmax[dout(VW1)(VW2T)]
C
=
A
T
(
V
W
3
)
C=A^{T}(VW_{3})
C=AT(VW3)
这里,
V
=
{
v
i
}
∈
R
n
×
d
i
n
V=\{\pmb v_{i}\} \in \mathbb{R}^{n\times d_{in}}
V={vvvi}∈Rn×din表示一个输入序列,
W
1
、
W
2
、
W
3
∈
R
d
i
n
×
d
o
u
t
W_{1}、W_{2}、W_{3}\in \mathbb{R}^{d_{in}\times d_{out}}
W1、W2、W3∈Rdin×dout是将
V
V
V转换为其查询、键和值表示的需要学习的矩阵。因此,
C
=
{
c
i
}
∈
R
n
×
d
o
u
t
C=\{\pmb c_{i}\}\in \mathbb{R}^{n\times d_{out}}
C={ccci}∈Rn×dout形成了一个自我关注的tokens编码序列。我们可以期望每个输入token在端到端训练期间通过调整其与周围环境的关系来学习一个深度的上下文感知的结构(a deep context-aware configuration)。我们还应该知道,这种架构排除了所有循环和卷积层,因为在一个自我关注层内的计算是并行的(因此大于RNN)并且参数是高效的(与CNN相比)。为了进一步增强其表现力,人们提出了各种方法。位置编码(Positional encoding)(Vaswani et al. 2017)向模型提供了每个token的附加位置信息,其中的一个示例如下:
P
E
(
p
o
s
,
2
i
)
=
s
i
n
(
p
o
s
/
1000
0
2
i
/
d
)
PE(pos,2i) = sin(pos/10000^{2i/d})
PE(pos,2i)=sin(pos/100002i/d)
P
E
(
p
o
s
,
2
i
+
1
)
=
c
o
s
(
p
o
s
/
1000
0
2
i
/
d
)
PE(pos, 2i + 1) = cos(pos/10000^{2i/d})
PE(pos,2i+1)=cos(pos/100002i/d)
这些信息被作为附加特征加入到句子编码中。为了避免不需要的方向的注意,一个方向性的蒙板(directional mask)
M
M
M(Shen et al. 2017),被拿来与在正则化之前的分数表示(score representation)相加,这个蒙板
M
M
M是一个三角形矩阵,在对应的被禁用的位置上是
−
∞
-\infty
−∞,不被禁用则为0:
α
i
j
=
s
o
f
t
m
a
x
(
e
i
j
+
M
i
j
)
α_{ij} =softmax(e_{ij} + M_{ij})
αij=softmax(eij+Mij)
其中
M
i
j
=
{
0
,
i
>
j
−
∞
,
o
t
h
e
r
w
i
s
e
M_{ij}=\begin{cases}0,\ \ \ \ \ \ \ i>j\\ -\infty,\ \ otherwise \end{cases}
Mij={0, i>j−∞, otherwise
用于 backward disabling。这在训练从左到右的语言模型时很有用,因为未来的上下文不应该被用来提供生成下一个token的线索。其他技术包括相对位置编码(relative position encoding)(Shaw, Uszkoreit, and Vaswani 2018),旨在将成对的距离信息(pairwise distance information)合并到上下文token表示
c
i
c_{i}
ci中,如下所示:
c
i
=
∑
j
α
i
j
(
v
j
+
w
i
j
)
\pmb c_{i} = \sum_{j}\alpha_{ij}(\pmb v_{j} + \pmb w_{ij})
ccci=j∑αij(vvvj+wwwij)
其中,如果
V
V
V被视为完全连通图,则每个权重
w
i
j
\pmb w_{ij}
wwwij与从
v
i
\pmb v_{i}
vvvi到
v
j
\pmb v_{j}
vvvj的有向边相对应。这些权重是在训练期间初始化和学习得到的。除了成对得分(pair-wise score)计算,Lin等人提出了一种基于全连接神经网络的用来获得 self-attention 分数的替代方法:
A
=
s
o
f
t
m
a
x
(
W
2
t
a
n
h
(
W
1
(
V
T
)
)
A = softmax(W_{2}tanh(W_{1}(V^{T}))
A=softmax(W2tanh(W1(VT))
其中
A
A
A 中的每一行表示一种注意力。整个序列编码
C
C
C 可通过以下方式获得:
C
=
A
V
C=AV
C=AV
在这种情况下,一个元素所获得的关注取决于它通过全连接与整个序列中的所有元素形成的相关性(the attention that an element receives is determined by its relevance to all elements in the entire sequence via full connection.)。由于 C C C 的维数与输入序列长度无关,因此可以通过使用这种技术从可变长度序列中获得固定长度编码。
3.4 基于记忆(Memory-based)的注意力
为了介绍这种新的注意力类型,我们首先用另一种方式重建一下旧的注意力。给定存储在记忆(memory)中的键值对 { ( k i , v i ) } \{(\pmb k_{i},\pmb v_{i})\} {(kkki,vvvi)}和查询向量 q \pmb q qqq的列表,我们将这三个步骤重新定义为:
- e i = a ( q , k i ) e_{i} = a(\pmb q, \pmb k_{i}) ei=a(qqq,kkki) (address memory)
- α i = e x p ( e i ) ∑ j e x p ( e j ) \alpha_{i} = \frac{exp(e_{i})}{\sum_{j}exp(e_{j})} αi=∑jexp(ej)exp(ei) (normalize)
- c = ∑ i α i v i \pmb c = \sum_{i} \alpha_{i}\pmb v_{i} ccc=∑iαivvvi (read contents)
在这里,我们将计算注意力得分重新解释为使用查询 q \pmb q qqq 的软记忆寻址,并根据注意力得分 { α i } \{\alpha_{i}\} {αi}编码为从记忆中读取内容(and encoding as reading contents from memory based on attention scores),这构成了基于记忆的注意力的最基本形式。事实上,在很多文献中,“记忆”只是输入序列的同义词。还要注意,如果每对 k i \pmb k_{i} kkki和 v i \pmb v_{i} vvvi都相等,这就蜕化为基本的注意机制。然而,可替代的注意机制 (memory-based) 可以变得更加强大,因为我们加入了额外的功能来实现可重用性和增加灵活性,这两个功能稍后我们将详细讨论。
可重用性 一些问答任务中的一个基本困难是答案与问题间接相关,因此无法通过基本的注意力技巧轻松解决(在本节开始部分演示)。但是,如果我们通过进行可迭代的记忆更新(也称为 multi-hop)来模拟一个时间推理过程,从而将注意力引导到答案的正确位置,就可以实现这一点(Sukhbaatar et al. 2015),其概要如图2所示。直观地说,在每次迭代中,查询都会被更新为新的内容,而更新后的查询则用于检索相关内容。图3给出了一个早期示例上的伪运行(pseudo run),其中,查询(the query)初始化为原始问题,随后通过简单地总结当前查询和内容进行更新(Sukhbaatar et al. 2015):
q
(
t
+
1
)
=
q
(
t
)
+
c
(
t
)
\pmb q^{(t+1)} = \pmb q^{(t)} + \pmb c^{(t)}
qqq(t+1)=qqq(t)+ccc(t)
更有效的更新方法包括,通过查询和多个时间步骤的内容构建循环网络(Kumar et al. 2016)或者根据内容和位置信息(Graves, Wayne, and Danihelka 2014)诱导输出。结果表明,当给出复杂的时间推理任务(如图3所示)时,基于记忆的注意力模型可以在多次跳(several hops)后成功地找到答案。
灵活性 由于键和值被清晰地表示出来,我们可以在设计单独的键和值嵌入时自由地结合先验知识,从而使它们能够更好地捕获相关信息。具体来说,可以手动设计键嵌入以匹配问题,值嵌入以匹配响应。key-value记忆网络(Miller et al. 2016),是一种窗口级表示法,它将键构造为以实体标记为中心的窗口,而值则是相应的实体,旨在实现更高效和准确的匹配。然后,对于图3中的示例,诸如 apple 和 bedroom 之类的实体是值嵌入,它们周围的标记是键嵌入。
更复杂的架构包括动态记忆网络(Dynamic Memory Network)(Kumar et al. 2016)。整体架构分为四个部分:问题模块、输入模块、情景记忆模块和应答模块,每个模块本身就是一个复杂的神经微架构。这种模块化的设计使得分段的领域知识注入、模块间的有效通信以及超越传统问答的可用于更多任务的泛化成为可能。还有一种类似的架构来处理文本和视觉(textual and visual)问答任务(Xiong, Merity, and Socher 2016),其中视觉(visual)输入被输入到深度卷积网络中,高级特征被提取并处理成注意力网络的输入序列。如果我们进一步将记忆和查询表示扩展到问答之外的领域,基于记忆的注意力技术也被用于方面和观点术语挖掘中(aspect and opinion term mining)(Wang et al. 2017),其中,query被表示为aspect的原型;在推荐系统(Zheng et al. 2018)中,用户被作为记忆元件,事物被作为查询;在主题建模(Zheng et al. 2018)中,从深层网络中提取的潜在主题表示构成记忆。
3.5 Task-specific Attention
在本节中,我们将介绍为特定任务精心设计的注意力的替代用法。虽然不像前面介绍的方法那样可归纳,但它们具有良好的动机,并适合于自己的任务,因此值得一提。 Tan et al. 提出了一种计算抽象文档总结(abstractive document summarization)任务注意力得分的替代方法(Tan, Wan, and Xiao 2017)。新的基于图的注意力的形式与pagerank算法相似(Page et al. 1999)。给定一个文档
V
=
{
v
i
}
V=\{\pmb v_{i}\}
V={vvvi},其中每个
v
i
\pmb v_{i}
vvvi表示一个句子,固定的注意力分布
α
=
{
α
i
}
\pmb \alpha=\{\alpha_{i}\}
ααα={αi}满足:
α
=
λ
W
D
−
1
α
+
(
1
−
λ
)
y
\pmb \alpha=\lambda WD^{-1} \pmb \alpha+(1-\lambda) \pmb y
ααα=λWD−1ααα+(1−λ)yyy
这里,
W
W
W是一个正方形矩阵,其中每个条目
W
i
j
W_{ij}
Wij 在
v
i
\pmb v_{i}
vvvi 和
v
j
\pmb v_{j}
vvvj 之间编码一个乘法组合,
D
D
D是一个对角线标准化矩阵,以确保
W
D
−
1
WD^{−1}
WD−1 的每一列的总和为1。
λ
\lambda
λ和
y
\pmb y
yyy分别是阻尼系数和辅助均匀分布。那么
α
\pmb \alpha
ααα的解析解为:
α
=
(
1
−
λ
)
(
I
−
λ
W
D
−
1
)
−
1
y
\pmb \alpha = (1 − \lambda)(I − \lambda WD^{−1})^{−1} \pmb y
ααα=(1−λ)(I−λWD−1)−1yyy
潜在的动机是,如果一个句子与许多重要句子紧密相连,那么它在文档中就很重要。
Kim et al.提出了一种结构化的注意力网络,它将注意力机制与概率图模型相结合,在输入序列中引入一系列离散的潜在变量
Z
=
{
z
i
}
\pmb Z=\{\pmb z_{i}\}
ZZZ={zzzi}作为软选择器(Kim et al. 2017)。注意力分布
p
(
Z
=
z
∣
V
,
q
)
p(\pmb Z = \pmb z|V, \pmb q)
p(ZZZ=zzz∣V,qqq)由条件随机场生成,然后被用于将上下文向量编码为这种概率分布的期望值:
c
=
E
z
∼
p
(
z
∣
V
,
q
)
[
f
(
V
,
z
)
]
c = E_{z\sim p(z|V,q)}[f(\pmb V, \pmb z)]
c=Ez∼p(z∣V,q)[f(VVV,zzz)]
式中, f ( V , z ) f(V, \pmb z) f(V,zzz)是模拟潜在变量和给定输入之间关系的注释(annotated)函数。如果 Z \pmb Z ZZZ是一个单一的随机变量,并且给定 f ( V , Z = z ) = V z f(V,\pmb Z=z)=V_{z} f(V,ZZZ=z)=Vz(即从V中选择第z个元素),那么这相当于基本注意中的软选择。在一般情况下,如果不受此限制,它们将证明其对多个输入选择任务(如句法树选择和子序列选择)的适应性。
在机器翻译中,建议使用局部注意力模型(Luong, Pham, and Manning 2015)来处理长序列翻译,其中全局注意力的计算(即关注每个元素)很昂贵。在解码过程中,首先用一个小神经网络预测出一个指定注意力中心的轴位置 p t ∈ [ 0 , l e n g t h ( V ) ] p_{t}\in [0,length(V)] pt∈[0,length(V)],然后在其中心周围应用高斯平滑来产生软对准。
4. 应用
在前一节中,我们已经展示了注意力及其变体已广泛应用于各种NLP任务。在这里,我们将进一步探讨注意力与机器学习中其他抽象概念的联系。正如我们之前讨论过的,注意力可以用于编码一个序列,根据其与给定模式的匹配性提取重要的术语;注意力也可以用于对给定查询进行信息寻址和读取。在这里,我们介绍了另外三个注意的应用:emsemble、gating和pre-training。
4.1 Attention for Ensemble
如果我们将序列中的每个元素
v
i
\pmb v_i
vvvi解释为一个单独的模型,并将标准化分数
α
i
\alpha_i
αi解释为它们的加权投票,那么应用注意力机制就可以类似于模型集合。Kieta等人对此进行了探讨。在那里,他们整合了一组单词嵌入来构建一个具有更强表达能力和灵活性的元嵌入(Kiela, Wang, and Cho 2018)。特别的,对于嵌入
v
i
[
j
]
\pmb v_{i}^{[j]}
vvvi[j]来说,其注意力分数
α
i
[
j
]
\alpha_{i}^{[j]}
αi[j]是通过自注意
α
i
[
j
]
=
s
o
f
t
m
a
x
(
w
T
v
i
[
j
]
+
b
)
\alpha_{i}^{[j]} = softmax(\pmb w^{T} \pmb v^{[j]}_{i} + b)
αi[j]=softmax(wwwTvvvi[j]+b)
给出的。并且第j个单词的元嵌入
v
[
j
]
\pmb v^{[j]}
vvv[j]为
v
[
j
]
=
∑
i
α
i
[
j
]
v
i
[
j
]
\pmb v^{[j]} = \sum_i \alpha_i^{[j]} \pmb v_i^{[j]}
vvv[j]=i∑αi[j]vvvi[j]
它们表明,根据单词的具体性和频率等特点,某些嵌入比其他嵌入更受欢迎。例如,对具体的词,ImageNet 嵌入(He et al. 2016)比FastText嵌入获得更大的权重(Bojanowski et al. 2016)。
4.2 Attention for Gating
注意的另一个应用是将这种机制与递归网络中的记忆更新(memory updates)相结合。传统GRU(Chung等人2014年),隐藏状态的更新方式如下:
h
~
=
t
a
n
h
(
W
v
i
+
r
i
∘
(
U
h
i
−
1
)
+
b
(
h
)
)
\tilde{\pmb h}=tanh(W \pmb v_{i} + \pmb r_{i} \circ(U \pmb h_{i-1})+ \pmb b^{(h)})
hhh~=tanh(Wvvvi+rrri∘(Uhhhi−1)+bbb(h))
h
i
=
u
i
∘
h
~
i
+
(
1
−
u
i
)
∘
h
i
−
1
\pmb h_{i} = \pmb u_{i}\circ \tilde{\pmb h}_{i}+ (1 − \pmb u_{i}) \circ \pmb h_{i-1}
hhhi=uuui∘hhh~i+(1−uuui)∘hhhi−1
其中,
u
i
\pmb u_{i}
uuui和
r
i
\pmb r_{i}
rrri是在训练期间学习的更新和重置门。而在另一个基于注意力的GRU中(Xiong、Merity和Socher 2016),当更新隐藏状态时,
u
i
\pmb u_{i}
uuui被第i个元素接收的标量注意力分数
α
i
\alpha_i
αi所取代。也就是说,最后一个更新步骤被替换为:
h
i
=
α
i
∘
h
~
i
+
(
1
−
α
i
)
∘
h
i
−
1
\pmb h_{i}=\alpha_i\circ \tilde{\pmb h}_{i}+ (1 − \alpha_i) \circ \pmb h_{i-1}
hhhi=αi∘hhh~i+(1−αi)∘hhhi−1
注意力得分在外部模块中计算。这种基于注意的选通允许基于以前记忆的全局知识进行上下文感知(context-aware)的更新,并且更容易解释每个元素的重要性。同样,在文本理解中,基于查询Q和文档中每个token
v
i
\pmb v_i
vvvi之间的交互构建了基于记忆的注意门
q
~
i
\tilde{\pmb q}_i
qqq~i(Dhingra等人2016),迭代更新每个token嵌入:
α
i
=
s
o
f
t
m
a
x
(
Q
T
v
i
)
\alpha_i = softmax(Q^T \pmb v_i)
αi=softmax(QTvvvi)
q
~
i
=
Q
α
i
\tilde{\pmb q}_i = Q\alpha_i
qqq~i=Qαi
v
~
i
=
v
i
∘
q
~
i
\tilde{\pmb v}_i = v_i \circ \tilde{\pmb q}_i
vvv~i=vi∘qqq~i
v
i
,
Q
=
G
R
U
v
(
v
~
i
)
,
G
R
U
Q
(
Q
)
\pmb v_i,Q = GRU_v(\tilde{\pmb v}_i),GRU_Q(Q)
vvvi,Q=GRUv(vvv~i),GRUQ(Q)
旨在构建深度查询特定的token表示。
4.3 Attention for Pre-training
预训练的单词嵌入对于许多NLP任务至关重要。传统方法,如Skipgram、Cbow 和 Glove(Mikolov et al. 2013a; Pennington, Socher, and Manning 2014; Mikolov et al. 2013b)利用大文本语料库,根据上下文训练一个无监督预训练模型,对每个token学习一个高维分布式表示。与此相反,最近提出的预训练方法将基于注意的技术与深度神经架构相结合,旨在学习更高质量的token表示,该表示结合了来自token周围环境的句法和语义信息。然后对模型进行微调,以适应具体的有监督任务。BERT(Devlin等人2018)是以Transformer编码器(Vaswani等人2017年)为架构的双向预训练模型,我们在第3.3节中简要讨论了一个具有前馈层和自我关注层的深度混合神经网络。在预训练期间,一个任务是学习双向 masked 语言模型,这意味着一个句子中的一小部分token被 masked,目标是根据上下文预测这些tokens。另一项任务是二元下一句预测(binary next sentence prediction),从语料库中抽取两段文本,并训练模型来预测它们是否是连续的。如第3.3节所述,随着训练的进行,每个token在整个序列中重新分配注意力,并以自适应的方式重建其与其他token的交互,目的是学习基于整个序列的上下文表示。当预训练模型与监督任务集成时,在模型顶部添加一个附加层,并对其进行微调以适应其监督的下游任务。新的模型在各种NLP任务上取得了突破性的成果,其重点是在大文本语料库上对深层混合结构进行预训练,然后在微调方面尽可能少地做些努力。其他基于注意力的预训练模型包括OpenAI GPT,它使用一个Transformer解码器(带反向禁用屏蔽)来预训练一个基于不同任务集的从左到右的深层语言模型。
5. 评估
与普遍使用注意力的情况相比,只有少数人试图给出一个严格的数学理由来解释为什么它能在各种情况下工作。然而,有几项工作试图建立评估其表现的标准,无论是定性的还是定量的,特定于任务的还是一般性的,在此我们对这些方法做一个简短的总结。
5.1 定量的
注意力的定量评价进一步分为内在评价还是外在评价,这是根据注意力的作用是在其自身还是在其下游监督任务。
内在评价方法在机器翻译(Luong、Pham和Manning 2015)中被提出,其中注意力类似于单词对齐,注意力的表现可以通过将注意力分布与最优对齐数据( the gold alignment data)进行比较而直接得到,并使用对齐误差率(AER)进行量化。同样,Liu等人提出了一种人工构造“最优注意向量”的方法(Liu等人2017年),首先在句子中识别标记的关键词,然后进行后处理(post-processing)程序,如平滑和规范化,这种方法给出了大量标记良好的数据。例如,Mohamad fired Anwar, his former protege, in 1998,四个黑体字的标记为论点词,每个标记的注意力得分为0.25(0.25×4=1),然后可以选择在每个参与的标记周围应用平滑。虽然固有的评估方法能够精确地测量性能,但它们往往局限于特定的任务,并且严重依赖于标记数据的丰富性。
另一方面,外部评估方法(图4)更为普遍,并获得了更广泛地使用。通过比较下游任务中不同模型的总体性能,可以很容易地说明这一点。然而,结果可能是误导性的,因为这些改进是否应该归因于注意力还无法确定。
5.2 定性的
定性注意力评价是目前应用最广泛的评价技术,因为它简单易行,便于可视化(图5)。具体来说,在整个句子中构建一个热图,其强度与每个元素接收到的标准化注意力得分成比例。直觉上,注意力应该集中在相应任务的关键词上。然而,这种方法在可视化方面的表现要比在分析方面出色。
6. 结论与展望
本文通过对近年来注意力机制的调查,从注意力机制的形成、变化、应用和评价等方面进行了综述。与它在各种NLP任务中的广泛应用相比,探索其数学合理性的尝试仍然很少。近年来,探索其在嵌入预训练中的应用,取得了巨大的成功,可能成为未来研究的一个方向。
参考文献
Bahdanau, D.; Cho, K.; and Bengio, Y. 2014. Neural machine translation by jointly learning to align and translate. arXiv preprint arXiv:1409.0473.
Bojanowski, P.; Grave, E.; Joulin, A.; and Mikolov, T. 2016. Enriching word vectors with subword information. arXiv preprint arXiv:1607.04606.
Cho, K.; Van Merrie ̈nboer, B.; Bahdanau, D.; and Bengio, Y. 2014. On the properties of neural machine translation: Encoder-decoder approaches. arXiv preprint arXiv:1409.1259.
Chung, J.; Gulcehre, C.; Cho, K.; and Bengio, Y. 2014. Empirical evaluation of gated recurrent neural networks on sequence modeling. arXiv preprint arXiv:1412.3555.
Devlin, J.; Chang, M.-W.; Lee, K.; and Toutanova, K. 2018. Bert: Pre-training of deep bidirectional transformers for language understanding. arXiv preprint arXiv:1810.04805.
Dhingra, B.; Liu, H.; Yang, Z.; Cohen, W. W.; and Salakhutdinov, R. 2016. Gated-attention readers for text comprehension. arXiv preprint arXiv:1606.01549.
Du, J.; Han, J.; Way, A.; and Wan, D. 2018. Multi-level structured self-attentions for distantly supervised relation extraction. arXiv preprint arXiv:1809.00699.
Graves, A.; Wayne, G.; and Danihelka, I. 2014. Neural turing machines. arXiv preprint arXiv:1410.5401.
He, K.; Zhang, X.; Ren, S.; and Sun, J. 2016. Deep residual learning for image recognition. In Proceedings of the IEEE conference on computer vision and pattern recognition, 770–778.
Ji, J.; Wang, Q.; Toutanova, K.; Gong, Y.; Truong, S.; and Gao, J. 2017. A nested attention neural hybrid model for grammatical error correction. arXiv preprint arXiv:1707.02026.
Kalchbrenner, N., and Blunsom, P. 2013. Recurrent continuous translation models. In Proceedings of the 2013 Conference on Empirical Methods in Natural Language Processing, 1700–1709.
Kiela, D.; Wang, C.; and Cho, K. 2018. Dynamic metaembeddings for improved sentence representations. In Proceedings of the 2018 Conference on Empirical Methods in Natural Language Processing, 1466–1477.
Kim, Y.; Denton, C.; Hoang, L.; and Rush, A. M. 2017. Structured attention networks. arXiv preprint arXiv:1702.00887.
Kumar, A.; Irsoy, O.; Ondruska, P.; Iyyer, M.; Bradbury, J.; Gulrajani, I.; Zhong, V.; Paulus, R.; and Socher, R. 2016. Ask me anything: Dynamic memory networks for natural language processing. In International Conference on Machine Learning, 1378–1387.
Lin, Z.; Feng, M.; Santos, C. N. d.; Yu, M.; Xiang, B.; Zhou, B.; and Bengio, Y. 2017. A structured self-attentive sentence embedding. arXiv preprint arXiv:1703.03130.
Liu, S.; Chen, Y.; Liu, K.; and Zhao, J. 2017. Exploiting argument information to improve event detection via supervised attention mechanisms. In Proceedings of the 55th Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers), volume 1, 1789–1798.
Luong, M.-T.; Pham, H.; and Manning, C. D. 2015. Effective approaches to attention-based neural machine translation. arXiv preprint arXiv:1508.04025.
Mikolov, T.; Chen, K.; Corrado, G.; and Dean, J. 2013a. Efficient estimation of word representations in vector space. arXiv preprint arXiv:1301.3781.
Mikolov, T.; Sutskever, I.; Chen, K.; Corrado, G. S.; and Dean, J. 2013b. Distributed representations of words and phrases and their compositionality. In Advances in neural information processing systems, 3111–3119.
Miller, A.; Fisch, A.; Dodge, J.; Karimi, A.-H.; Bordes, A.; and Weston, J. 2016. Key-value memory networks for directly reading documents. arXiv preprint arXiv:1606.03126.
Page, L.; Brin, S.; Motwani, R.; and Winograd, T. 1999. The pagerank citation ranking: Bringing order to the web. Technical report, Stanford InfoLab.
Pennington, J.; Socher, R.; and Manning, C. 2014. Glove: Global vectors for word representation. In Proceedings of the 2014 conference on empirical methods in natural language processing (EMNLP), 1532–1543.
Shaw, P.; Uszkoreit, J.; and Vaswani, A. 2018. attention with relative position representations. preprint arXiv:1803.02155.
Shen, T.; Zhou, T.; Long, G.; Jiang, J.; Pan, S.; and Zhang, C. 2017. Disan: Directional self-attention network for rnn/cnn-free language understanding. arXiv preprint arXiv:1709.04696.
Sukhbaatar, S.; Weston, J.; Fergus, R.; et al. 2015. End-to-end memory networks. In Advances in neural information processing systems, 2440–2448.
Tan, J.; Wan, X.; and Xiao, J. 2017. Abstractive document summarization with a graph-based attentional neural model. In Proceedings of the 55th Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers), volume 1, 1171–1181.
Vaswani, A.; Shazeer, N.; Parmar, N.; Uszkoreit, J.; Jones, L.; Gomez, A. N.; Kaiser, Ł.; and Polosukhin, I. 2017. Attention is all you need. In Advances in Neural Information Processing Systems, 5998–6008.
Wang, W.; Pan, S. J.; Dahlmeier, D.; and Xiao, X. 2017. Coupled multi-layer attentions for co-extraction of aspect and opinion terms. In AAAI, 3316–3322.
Xiong, C.; Merity, S.; and Socher, R. 2016. Dynamic memory networks for visual and textual question answering. In International conference on machine learning, 2397–2406.
Yang, Z.; Yang, D.; Dyer, C.; He, X.; Smola, A.; and Hovy, E. 2016. Hierarchical attention networks for document classification. In Proceedings of the 2016 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies, 1480– 1489.
Yu, L.; Bansal, M.; and Berg, T. L. 2017. Hierarchically attentive rnn for album summarization and storytelling. arXiv preprint arXiv:1708.02977.
Zeng, J.; Li, J.; Song, Y.; Gao, C.; Lyu, M. R.; and King, I. 2018. Topic memory networks for short text classification.
Zheng, L.; Lu, C.-T.; He, L.; Xie, S.; Noroozi, V.; Huang, H.; and Yu, P. S. 2018. Mars: Memory attention-aware recommender system. arXiv preprint arXiv:1805.07037.