Attention model
简单理解下注意力模型
看上图,如果去掉注意力机制,直接将下面部分最后一个时间步的输出作为第一个上下文context,就是一般的RNN模型。这种模型的一个问题是,例如在做翻译的时候,一个很长的句子,人类很难一下子读完然后翻译,应该是读几个词翻译一下,即翻译出来的句子的前几个词与原句的前几个词关系更相关,注意力更关注前几个词,注意力机制做的也就是这个工作。
每个上下文context,引入注意力机制后,它的值应该上个时间步的输出加上以注意力作为权重的Encoder的值之和。
α
<
t
,
t
,
>
\large \alpha^{<t,t^,>}
α<t,t,>表示输出
y
t
y^t
yt应该放多少注意力到
a
t
,
a^{t^,}
at,上
c
1
=
α
<
1
,
1
>
∗
a
<
1
>
+
α
<
1
,
2
>
∗
a
<
2
>
+
.
.
.
c
2
=
s
1
+
α
<
2
,
1
>
∗
a
<
1
>
+
α
<
2
,
2
>
∗
a
<
2
>
+
.
.
.
\large c^1=\alpha^{<1,1>}*a^{<1>}+\alpha^{<1,2>}*a^{<2>}+...\\ c^2=s^1+\alpha^{<2,1>}*a^{<1>}+\alpha^{<2,2>}*a^{<2>}+...
c1=α<1,1>∗a<1>+α<1,2>∗a<2>+...c2=s1+α<2,1>∗a<1>+α<2,2>∗a<2>+...
如何计算注意力?看下面公式:
α
<
t
,
t
,
>
=
s
o
f
t
m
a
x
(
e
<
t
,
t
,
>
)
\large \alpha^{<t,t^,>}=softmax(e^{<t,t^,>})
α<t,t,>=softmax(e<t,t,>)
e
<
t
,
t
,
>
e^{<t,t^,>}
e<t,t,> 可以叫做打分函数,所有打分经softmax确保注意力之和为1。
e
<
t
,
t
,
>
e^{<t,t^,>}
e<t,t,>的求法可以是建立一个小的神经网络,输入时
S
t
−
1
和
a
t
,
S^{t-1}和a^{t,}
St−1和at,,输出就是
e
<
t
,
t
,
>
e^{<t,t^,>}
e<t,t,>。