a
t
t
e
n
t
i
o
n
attention
attention机制一般来说会用在深度学习中,在图像处理和自然语言处理方面都有所应用,在自然语言处理中一般会用在机器翻译中,如下图所示,假设我们要翻译“机器学习”四个字:
这是一个简易的
R
N
N
RNN
RNN模型,
h
1
−
h
4
h1-h4
h1−h4 是
t
1
−
t
4
t1-t4
t1−t4 输出的向量,这四个时刻的输入分别是“机”、“器”、“学”、“习” 四个字,这个时候我们有一个初始的输入向量
z
0
z0
z0,这个
z
0
z0
z0 可以表示成搜索前面神经网络中的关键字,可以理解是
k
e
y
w
o
r
d
keyword
keyword。有了初始的
k
e
y
w
o
r
d
keyword
keyword
i
n
p
u
t
input
input,我们有一个
m
a
t
c
h
match
match 的模块,输入是
h
1
h1
h1 和
z
0
z0
z0,输出为
α
0
1
\alpha _0^1
α01,公式表示为:
f
(
h
,
z
)
=
α
f(h,z) = \alpha
f(h,z)=α,示意图如下所示:
这里的
m
a
t
c
h
match
match 模块可以理解成一个相似度的计算模块,所以这个
α
0
1
\alpha _0^1
α01 表示
z
0
z0
z0 和
h
1
h1
h1 的相关度,可以用公式
α
=
h
T
⋅
W
⋅
z
\alpha = {h^T} \cdot W \cdot z
α=hT⋅W⋅z 表示,中间的
W
W
W 表示一个权重矩阵。然后我们将
z
0
z0
z0 分别和
h
2
h2
h2、
h
3
h3
h3 和
h
4
h4
h4 进行上述的操作,再加上一层
s
o
f
t
m
a
x
softmax
softmax 操作,可以得到如下图所示:
得到上图的结果之后我们用公式
c
0
=
∑
α
^
0
i
h
i
c_0 = \sum {\hat \alpha _0^i{h_i}}
c0=∑α^0ihi 来进行一个求和得到
c
0
c_0
c0,过程如图所示:
这个时候,我们用
c
0
c0
c0 和
z
0
z0
z0 作为
d
e
c
o
d
e
r
decoder
decoder 的输入来翻译我们的 “机器学习”,这个时候假设我们的
α
^
0
1
=
0.5
\hat \alpha _0^1{\text{ = }}0.5
α^01 = 0.5,
α
^
0
2
=
0.5
\hat \alpha _0^2{\text{ = }}0.5
α^02 = 0.5,
α
^
0
3
=
0
\hat \alpha _0^3{\text{ = }}0
α^03 = 0,
α
^
0
4
=
0
\hat \alpha _0^4{\text{ = }}0
α^04 = 0,那么这个时候的输入
c
0
c0
c0 的
a
t
t
e
n
t
i
o
n
attention
attention 就集中在前两个字 “机器” 的翻译上,后两个字 “学习” 的
a
t
t
e
n
t
i
o
n
attention
attention 就弱化,先不去翻译 “学习” 这两个字。那么示意图如下所示:
然后我们将输出的
z
1
z1
z1 再分别和
h
1
h1
h1、
h
2
h2
h2、
h
3
h3
h3、
h
4
h4
h4 作为输入,再输入到
m
a
t
c
h
match
match 模块中,分别输出
α
1
1
\alpha _1^1
α11、
α
1
2
\alpha _1^2
α12、
α
1
3
\alpha _1^3
α13 和
α
1
4
\alpha _1^4
α14,具体示意图如下所示:
运用上述的思想,我们将
z
1
z1
z1 分别和
h
1
h1
h1、
h
2
h2
h2、
h
3
h3
h3、
h
4
h4
h4 作为输入进入
m
a
t
c
h
match
match 模块,分别输出
α
1
1
\alpha _1^1
α11、
α
1
2
\alpha _1^2
α12、
α
1
3
\alpha _1^3
α13 和
α
1
4
\alpha _1^4
α14,然后经过
s
o
f
t
m
a
x
softmax
softmax 之后生成
α
^
1
1
\hat \alpha _1^1
α^11、
α
^
1
2
\hat \alpha _1^2
α^12、
α
^
1
3
\hat \alpha _1^3
α^13 和
α
^
1
4
\hat \alpha _1^4
α^14。分别表示这一次需要输出的
a
t
t
e
n
t
i
o
n
attention
attention ,假设这次输出分别是 0、0、0.5和0.5,那么我们就需要把翻译的注意力集中在 “学习” 二字上面。在
d
e
c
o
d
e
r
decoder
decoder 中,我们结合上一轮的输出
m
a
c
h
i
n
e
machine
machine 加上本轮的状态量
z
1
z1
z1 以及本轮的
a
t
t
e
n
t
i
o
n
attention
attention,输出下一轮的状态
z
2
z2
z2 和 翻译结果
l
e
a
r
n
i
n
g
learning
learning,在
s
e
q
u
e
n
c
e
2
s
e
q
u
e
n
c
e
sequence2sequence
sequence2sequence 模型中,直到碰到结束标识,那么整个翻译过程就完成,这就是在深度学习中的
a
t
t
e
n
t
i
o
n
attention
attention 机制。同样的,不仅仅在自然语言处理中,在图像处理中同样会用到
a
t
t
e
n
t
i
o
n
attention
attention 机制,所以
a
t
t
e
n
t
i
o
n
attention
attention 机制在深度学习中的应用也是很广泛的。
希望这篇文章能够帮助大家理解深度学习中的
a
t
t
e
n
t
i
o
n
attention
attention 机制,谢谢。
attention机制详解
最新推荐文章于 2024-09-13 18:10:37 发布