图解Attention

2021-05-25  本文已影响0人  Jarkata

本文为转载,原文链接: https://wmathor.com/index.php/archives/1450/

关于Attention的公式推导,我在这篇文章讲过了,本篇文章主要以图示的方式进行讲解

首先我们需要将s_0和所有的h_i(i=1,...,m)计算一个"相关性",比方说计算 s_0h_1之间的相关性计算得 \alpha_1 = align(h_1,s_0)

计算得到m个相关性\alpha_i之后,将这些值与h_i进行加权平均,即
c_0=\sum_{i=1}^m \alpha_i h_i=\alpha_1h_1+···\alpha_mh_m

我们可以直观的感受一下这样做有什么作用,对于那些值比较大的 \alpha_k,最终c_0中也会有一大部分来自于h_kc_0 实际上考虑到了所有时刻的 h,只不过对于某些时刻可能关注的更多,而某些时刻关注的更少,这就是注意力机制。

之后将s_0,c_0,x'_1作为t=0时刻Decoder的输入,计算得到s_1,然后再计算s_1与所有h_i(i=1,...,m)之间新的相关性\alpha_i

同样的,将新计算得到的\alpha_ih_i做加权平均,得到新的 context vector c_1

重复上述步骤,直到 Decoder 结束


到这里实际上整个 Seq2Seq (with Attention) 就讲完了,但是其中还有一些细节,比方说,align() 函数怎么设计?c_i如何应用到Decoder中?下面一一解释

(1) align()函数如何设计?

有两种方法。

如下图所示


(2) c_i如何应用到Decoder中?

见下图:


That is :
s_t = tanh(W_{xs}x_t+W_{ss}s_{t-1}+W_{cs}c_{t-1} +b)

上一篇下一篇

猜你喜欢

热点阅读