一、背景介绍
随着self-attention在Transformer中的应用,attention技术自然语言处理任务中的应用越来越广泛,成为NLP的基础技术之一,本篇博文介绍attention的原理、计算方法以及应用。
二、attention
我们人脑的生物神经网络同样存在网络容量问题,人脑中的工作记忆大概只有几秒钟的时间,类似于循环神经网络中的隐状态。而人脑每个时刻接收的外界输入信息非常多,包括来自于视觉、听觉、触觉的各种各样的信息。单就视觉来说,眼睛每秒钟都会发送千万比特的信息给视觉神经系统。人脑在有限的资源下,并不能同时处理这些过载的输入信息。大脑神经系统有两个重要机制可以解决信息过载问题:注意力和记忆机制。比如我们在看一张图片时,并不会仔细观察图片的全部细节,而是将注意力集中在图片的某个或者某几个核心区域。
对于计算机来讲,在计算能力有限情况下,注意力机制(Attention Mechanism)作为一种资源分配方案,将有限的计算资源用来处理更重要的信息,是解决信息超载问题的主要手段。当神经网络再处理大量的输入信息时,也可以借鉴人脑的注意力机制,只选择一些关键信息进行处理,来提高神经网络的效率。
注意力一般分为两种: 自上而下有意识的注意力,称为聚焦式注意力(Focus attention):指的是有预定目的的、依赖任务的、主动有意识地聚焦于某一对象的注意力。【注意力机制】 自下而上无意识的注意力,称为基于显著性的注意力(Saliency attention),指的是由外界刺激驱动的注意,不需要主动干预,与任务无关。 【比如Max-Pooling、门控机制】
1、attention
为了从
N
N
N个输入向[
x
1
,
?
?
?
,
x
N
x1 , · · · , xN
x1,???,xN]中选择出和某个特定任务相关的信息,我们需要引入一个和任务相关的表示,称为查询向量(Query Vector),并通过一个打分函数来计算每个输入向量和查询向量之间的相关性。给定一个和任务相关的查询向量
q
q
q,我们用注意力变量
z
∈
[
1
,
N
]
z ∈ [1,N]
z∈[1,N]来表示被选择信息的索引位置,即
z
=
i
z = i
z=i表示选择了第
i
i
i个输入向量。首先计算在给定
q
q
q和
X
X
X下,选择第
i
i
i个输入向量的概率
α
(
i
)
\alpha(i)
α(i):
α
(
i
)
=
p
(
z
=
i
∣
X
,
q
)
=
s
o
f
t
m
a
x
(
s
(
x
i
,
q
)
)
=
e
x
p
(
s
(
x
i
,
q
)
)
∑
j
=
1
N
e
x
p
(
s
(
x
i
,
q
)
)
\alpha(i) = p(z=i | X, q) = softmax(s(x_i,q))=\frac{exp(s(x_i,q))}{\sum_{j=1}^{N}exp(s(x_i,q))}
α(i)=p(z=i∣X,q)=softmax(s(xi?,q))=∑j=1N?exp(s(xi?,q))exp(s(xi?,q))? 其中
α
(
i
)
\alpha(i)
α(i)称为注意力分布(Attention Distribution),
s
(
x
i
,
q
)
s(x_i,q)
s(xi?,q)为注意力打分函数,有以下几种: 加性模型:
s
(
x
i
,
q
)
=
v
T
t
a
n
h
(
W
x
i
+
U
q
)
)
s(x_i,q)=v^{T}tanh(Wx_i+Uq))
s(xi?,q)=vTtanh(Wxi?+Uq)) 点积模型:
s
(
x
i
,
q
)
=
x
i
T
q
s(x_i,q)=x_i^{T}q
s(xi?,q)=xiT?q 缩放点积模型:
s
(
x
i
,
q
)
=
x
i
T
q
d
s(x_i,q)=\frac{x_i^{T}q}{\sqrt{d}}
s(xi?,q)=d
?xiT?q? 双线性模型:
s
(
x
i
,
q
)
=
x
i
T
W
q
s(x_i,q)=x_i^{T}Wq
s(xi?,q)=xiT?Wq 其中
W
,
U
,
v
W, U, v
W,U,v为可学习的参数,
d
d
d 为输入向量的维度。
2、attention的变体
三、self-attention
四、总结
|