首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >图解Attention

图解Attention

作者头像
mathor
修改2025-11-18 15:04:47
修改2025-11-18 15:04:47
7580
举报
文章被收录于专栏:mathormathor

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

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

首先我们需要将$s_0$和所有的$h_i\ (i=1,...,m)$计算一个"相关性",比方说计算$s_0$和$h_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_k$。$c_0$实际上考虑到了所有时刻的$h$,只不过对于某些时刻可能关注的更多,而某些时刻关注的更少,这就是注意力机制

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

同样的,将新计算得到的$\alpha_i$与$h_i$做加权平均,得到新的context vector $c_1$

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

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

align()函数如何设计?

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

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

$c_i$如何应用到Decoder中?

废话不多说,直接见下图

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • align()函数如何设计?
  • $c_i$如何应用到Decoder中?
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档