Attention机制是什么?
说到底attention实际上是一个加权求和,用于计算每个与attention关注的对象(其实是一个向量)的相关程度。
step1 设计一个打分函数
f
i
f i
fi,针对每个
h
i
hi
hi,计算出一个score
s
i
si
si 。而
s
i
si
si打分的依据,就是
h
i
hi
hi与attention所关注的对象(其实就是一个向量)的相关程度,越相关,所得
s
i
si
si越大。
step2 对所得到的k个score si(i=1,2,…,k),通过一个softmax函数,得到最后的权重
α
i
αi
αi,即:
α
i
=
s
o
f
t
m
a
x
(
s
i
)
αi=softmax(si)
αi=softmax(si)
step3 将
α
i
αi
αi与
v
a
l
u
e
i
valuei
valuei对应相乘再求和,得到最终的attention value.
打分函数主要有以下几种,如dot、general、concat和MLP等。公式如下:
Attention的设计
对于打分函数 f i fi fi 在论文”Dynamic Attention Deep Model for Article Recommendation by Learning Human Editors’Demonstration”中的Attention Mechanism章节给了较为全面的概括。大体分为三类:
- Location-based Attention
- General Attention
- Concatenation-based Attention
Location-based Attention
关注的图像仅一个重要特征
Location-based的意思就是,这里的attention没有其他额外所关注的对象,即attention的向量就是
h
i
hi
hi本身,因而
f
f
f的设计如下:
s
i
=
f
(
h
i
)
=
a
c
t
i
v
a
t
i
o
n
(
W
T
h
i
+
b
)
si=f(hi)=activation(WThi+b)
si=f(hi)=activation(WThi+b)
其种 W ∈ R d W∈Rd W∈Rd, b ∈ R b∈R b∈R, s i ∈ R si∈R si∈R,这里的激活函数activation,常见的有三种:1)tahn,2)relu,3)y=x(即没有激活函数)
参考文献 [1]中有具体的例子,都有着明显的套路。
General Attention 不常见略过
Concatenation-based Attention
关注的图像有多个特征情况
f
f
f就是被设计出来衡量
h
i
hi
hi和
h
t
ht
ht之间相关性的函数。一般是这么设计的:
s
i
=
f
(
h
i
,
h
t
)
=
v
T
a
c
t
i
v
a
t
i
o
n
(
W
1
h
i
+
W
2
h
t
+
b
)
si=f(hi,ht)=v^Tactivation(W1hi+W2ht+b)
si=f(hi,ht)=vTactivation(W1hi+W2ht+b)
这里
W
1
∈
R
d
∗
d
W1∈Rd∗d
W1∈Rd∗d,
W
2
∈
R
d
∗
d
t
W2∈Rd∗dt
W2∈Rd∗dt,
b
∈
R
d
b∈Rd
b∈Rd,
v
∈
R
d
v∈Rd
v∈Rd,
s
i
∈
R
si∈R
si∈R,一般情况下
d
t
=
d
dt=d
dt=d。
函数的描述的意思就是,希望通过W1,W2的对齐操作,使得
h
i
hi
hi和
h
t
ht
ht的特征能够对应上。然后再通过v计算score。
参考文献 [1]中有具体的例子,都有着明显的套路。
多层attention
多为两层,一层用于针对多个不同特征对原始图像打分,另一层用于结合多个特征分摊权重。