图解Attention

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

下图是一个Encoder架构, s 0 s_0 s0从值上来说与 h m h_m hm是相等的,只不过这里换了个名字

首先我们需要将 s 0 s_0 s0和所有的 h i   ( i = 1 , . . . , m ) h_i\ (i=1,...,m) hi (i=1,...,m)计算一个"相关性",比方说计算 s 0 s_0 s0 h 1 h_1 h1之间的相关性计算得 α 1 = a l i g n ( h 1 , s 0 ) \alpha_1=align(h_1, s_0) α1=align(h1,s0)

计算得到m个相关性 α i \alpha_i αi之后,将这些值与 h i h_i hi进行加权平均,即
c 0 = ∑ i = 1 m α i h i = α 1 h 1 + ⋅ ⋅ ⋅ α m h m c_0=\sum_{i=1}^m \alpha_i h_i=\alpha_1h_1+···\alpha_mh_m c0=i=1mαihi=α1h1+αmhm
我们可以直观的感受一下这样做有什么作用,对于那些值比较大的 α k \alpha_k αk,最终 c 0 c_0 c0中也会有一大部分来自于 h k h_k hk c 0 c_0 c0实际上考虑到了所有时刻的 h h h,只不过对于某些时刻可能关注的更多,而某些时刻关注的更少,这就是注意力机制

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

同样的,将新计算得到的 α i \alpha_i αi h i h_i hi做加权平均,得到新的context vector c 1 c_1 c1

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kXBKjnuD-1593652073210)(https://i.loli.net/2020/07/01/yqm7WM4tKQpVc6B.png#shadow)]

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

align()函数如何设计?

有两种方法,在最初的论文,即Bahdanau的论文中,他的设计方式如下图所示

现在比较主流的,同时也是Transformer结构使用的方法如下所示

c i c_i ci如何应用到Decoder中?

废话不多说,直接见下图

相关推荐
©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页
实付 9.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值