注意力机制--转载自我的学生隆兴写的博客

原文链接为:https://a-egoist.com/posts/a44b8419/,学生自己搭建的博客,点赞!

1 Attention

1.1 什么是 Attention

灵长类动物的视觉系统中的视神经接受了大量的感官输入。在检查视觉场景时,我们的视觉神经系统大约每秒收到 10810^8108 位的信息,这远远超过了大脑能够完全处理的水平。但是,并非所有刺激的影响都是相等的。意识的聚集和专注使灵长类动物能够在复杂的视觉环境中将注意力引向感兴趣的物体,例如猎物和天敌。

在心理学框架中,人类根据随意(有意识)线索不随意(无意识)线索选择注意点。下面两张图展现了在随意线索不随意线索的影响下,眼的注意力集中的位置。
在这里插入图片描述
在这里插入图片描述

卷积、全连接层、池化层基本上都只考虑不随意线索,注意力机制则显式地考虑随意线索

在注意力机制中,定义以下三点:

  • 随意线索被称为查询(query)
  • 每个输入是一个不随意线索(key)和值(value)的 pair
  • 通过注意力池化层来有偏向性的选择某些输入
    • 一般写作 f(x)=∑iα(x,xi)yif(x)=\sum_i\alpha(x,x_i)y_if(x)=iα(x,xi)yi,其中 α(x,xi)\alpha(x,x_i)α(x,xi) 表示注意力权重

1.2 非参注意力池化层

早在 60 年代就出现了非参数的注意力机制。假设给定数据 (xi,yi),i=1,…,n(x_i,y_i),i=1,\dots,n(xi,yi),i=1,,n,其中 xix_ixi 表示 key,yiy_iyi 表示 value,要想根据 query 将数据进行池化

最简单的方案——平均池化:
f(x)=1n∑iyi(1)f(x)=\frac{1}{n}\sum_iy_i\tag{1} f(x)=n1iyi(1)

无论输入的 xxx 是什么,每次都返回所有 value 的均值。

Nadaraya-Waston 核回归
f(x)=∑i=1nK(x−xi)∑j=1nK(x−xj)yi(2)f(x)=\sum_{i=1}^{n} \frac{K\left(x-x_{i}\right)}{\sum_{j=1}^{n} K\left(x-x_{j}\right)} y_{i}\tag{2} f(x)=i=1nj=1nK(xxj)K(xxi)yi(2)
其中,f(⋅)f(\cdot)f() 中的 xxx 表示 query,K(⋅)K(\cdot)K() 表示核函数,用于衡量 query xxx 和 key xix_ixi 之间的距离。这一个方法可以类比于 K-Nearest Neighbor,对于一个 query 函数的输出跟倾向于与其最相关的 value,而这个相关性则通过 query 和 key 共同计算出来。

若公式 (2)(2)(2) 中的 K(⋅)K(\cdot)K() 使用的是高斯核:K(μ)=12πexp⁡(−μ22)K(\mu)=\frac{1}{\sqrt{2\pi}}\exp(-\frac{\mu^2}{2})K(μ)=2π1exp(2μ2),那么可得:
f(x)=∑i=1nexp⁡(−12(x−xi)2)∑j=1nexp⁡(−12(x−xj)2)yi=∑i=1nsoftmax⁡(−12(x−xi)2)yi(3)\begin{aligned} f(x) &=\sum_{i=1}^{n} \frac{\exp \left(-\frac{1}{2}\left(x-x_{i}\right)^{2}\right)}{\sum_{j=1}^{n} \exp \left(-\frac{1}{2}\left(x-x_{j}\right)^{2}\right)} y_{i} \\ &=\sum_{i=1}^{n} \operatorname{softmax}\left(-\frac{1}{2}\left(x-x_{i}\right)^{2}\right) y_{i} \end{aligned}\tag{3} f(x)=i=1nj=1nexp(21(xxj)2)exp(21(xxi)2)yi=i=1nsoftmax(21(xxi)2)yi(3)

1.3 参数化的注意力机制

在公式 (3)(3)(3) 的基础上引入可以学习的参数 www
f(x)=∑i=1nsoftmax⁡(−12((x−xi)w)2)yi(4)f(x)=\sum_{i=1}^{n} \operatorname{softmax}\left(-\frac{1}{2}\left(\left(x-x_{i}\right) w\right)^{2}\right) y_{i}\tag{4} f(x)=i=1nsoftmax(21((xxi)w)2)yi(4)

1.4 注意力分数

由公式 (3)(3)(3) 可得:
f(x)=∑iα(x,xi)yi=∑i=1nsoftmax⁡(−12(x−xi)2)yi(5)f(x)=\sum_{i} \alpha\left(x, x_{i}\right) y_{i}=\sum_{i=1}^{n} \operatorname{softmax}\left(-\frac{1}{2}\left(x-x_{i}\right)^{2}\right) y_{i}\tag{5} f(x)=iα(x,xi)yi=i=1nsoftmax(21(xxi)2)yi(5)
其中 α(⋅)\alpha(\cdot)α() 表示注意力权重,根据输入的 query 和 key 来计算当前 value 的权重;−12(x−xi)2-\frac{1}{2}\left(x-x_{i}\right)^{2}21(xxi)2 表示的就是注意力分数。

计算注意力的过程如图所示:

计算注意力汇聚的输出为值的加权和

首先根据输入的 query,来计算 query 和 key 之间的 attention score,然后将 score 进行一次 softmax⁡\operatorname{softmax}softmax 得到 attention weight,attention weight 和对应的 value 做乘法再求和得到最后的输出。

拓展到高纬度

假设 query q∈Rq\mathbf{q} \in \mathbb{R}^{q}qRqmmm 对 key-value (k1,v1),…,(\mathbf{k}_{1}, \mathbf{v}_{1}),\dots,(k1,v1),, 这里 ki∈Rk\mathbf{k}_{i} \in \mathbb{R}^{k}kiRkvi∈Rv\mathbf{v}_{i} \in \mathbb{R}^{v}viRv

注意力池化层:
f(q,(k1,v1),…,(km,vm))=∑i=1mα(q,ki)vi∈Rvα(q,ki)=softmax⁡(a(q,ki))=exp⁡(a(q,ki))∑j=1mexp⁡(a(q,kj))∈R(6)\begin{array}{c} f\left(\mathbf{q},\left(\mathbf{k}_{1}, \mathbf{v}_{1}\right), \ldots,\left(\mathbf{k}_{m}, \mathbf{v}_{m}\right)\right)=\sum_{i=1}^{m} \alpha\left(\mathbf{q}, \mathbf{k}_{i}\right) \mathbf{v}_{i} \in \mathbb{R}^{v} \\ \alpha\left(\mathbf{q}, \mathbf{k}_{i}\right)=\operatorname{softmax}\left(a\left(\mathbf{q}, \mathbf{k}_{i}\right)\right)=\frac{\exp \left(a\left(\mathbf{q}, \mathbf{k}_{i}\right)\right)}{\sum_{j=1}^{m} \exp \left(a\left(\mathbf{q}, \mathbf{k}_{j}\right)\right)} \in \mathbb{R} \end{array}\tag{6} f(q,(k1,v1),,(km,vm))=i=1mα(q,ki)viRvα(q,ki)=softmax(a(q,ki))=j=1mexp(a(q,kj))exp(a(q,ki))R(6)
其中 softmax⁡(⋅)\operatorname{softmax}(\cdot)softmax() 中的参数 a(q,ki)a(\mathbf{q},\mathbf{k}_i)a(q,ki) 表示注意力分数。

从公式 (6)(6)(6) 可以看出,我们应该关注 a(⋅)a(\cdot)a() 怎么设计,接下来介绍两种思路。

1.4.1 Additive Attention

可学参数:Wk∈Rh×k,Wq∈Rh×q,v∈Rh\mathbf{W}_{k}\in\mathbb{R}^{h\times k},\mathbf{W}_{q}\in\mathbb{R}^{h\times q},\mathbf{v}\in \mathbb{R}^{h}WkRh×k,WqRh×q,vRh
a(k,q)=vTtanh⁡(Wkk+Wqq)a(\mathbf{k}, \mathbf{q})=\mathbf{v}^{T} \tanh \left(\mathbf{W}_{k} \mathbf{k}+\mathbf{W}_{q} \mathbf{q}\right) a(k,q)=vTtanh(Wkk+Wqq)
其中 tanh⁡(⋅)\operatorname{tanh}(\cdot)tanh() 表示 tanh 激活函数。等价于将 query 和 key 合并起来后放到一个隐藏层大小为 h 输出大小为 1 的单隐藏层 MLP

该方法中 query、key 和 value 的长度可以不一样。

1.4.2 Scaled Dot-Product Attention

如果 query 和 key 都是同样的长度 q,ki∈Rd\mathbf{q},\mathbf{k}_i\in\mathbb{R}^dq,kiRd,那么可以:
a(q,ki)=⟨q,ki⟩/da\left(\mathbf{q}, \mathbf{k}_i\right)=\left\langle\mathbf{q}, \mathbf{k}_i\right\rangle/\sqrt{d} a(q,ki)=q,ki/d
向量化版本

query Q∈Rn×d\mathbf{Q} \in \mathbb{R}^{n \times d}QRn×d, key K∈Rm×d\mathbf{K} \in \mathbb{R}^{m \times d}KRm×d, value V∈Rm×v\mathbf{V} \in \mathbb{R}^{m \times v}VRm×v

attention score: a(Q,K)=QKT/d∈Rn×ma(\mathbf{Q}, \mathbf{K})=\mathbf{Q K}^{T} / \sqrt{d} \in \mathbb{R}^{n \times m}a(Q,K)=QKT/dRn×m

attention pooling: f=softmax⁡(a(Q,K))V∈Rn×vf=\operatorname{softmax}(a(\mathbf{Q}, \mathbf{K})) \mathbf{V} \in \mathbb{R}^{n \times v}f=softmax(a(Q,K))VRn×v

2 Self-attention

2.1 什么是 Self-attention

下面三幅图展示了 CNN、RNN 和 self-attention 如何处理一个序列的输入。

CNN 会考虑当前输入和其前面的 n 个输入以及后面 n 个输入的关系。

RNN 会考虑当前输入和其前面的所有输入的关系。

Self-attention 会考虑当前输入和全局输入的关系。

总的来说,Self-attention 可以表述为:给定序列 x1,…,xn,∀xi∈Rd\mathbf{x}_{1},\ldots,\mathbf{x}_{n},\forall \mathbf{x}_{i}\in\mathbb{R}^{d}x1,,xn,xiRd,自注意力池化层将 xi\mathbf{x}_{i}xi 当做 key, value, query 来对序列抽取特征得到 y1,…,yn\mathbf{y}_{1},\ldots,\mathbf{y}_{n}y1,,yn,这里
yi=f(xi,(x1,x1),…,(xn,xn))∈Rd\mathbf{y}_{i}=f\left(\mathbf{x}_{i},\left(\mathbf{x}_{1}, \mathbf{x}_{1}\right), \ldots,\left(\mathbf{x}_{n}, \mathbf{x}_{n}\right)\right) \in \mathbb{R}^{d} yi=f(xi,(x1,x1),,(xn,xn))Rd

2.2 Self-attention 怎样运作

对于每一个输入 aia^iai 在考虑其与全局的关联性之后得到 bib^ibi

如何计算 a1a^1a1a2,a3,a4a^2,a^3,a^4a2,a3,a4 的关联性?在 1.4 节中介绍的注意力分数计算方法就是用于计算 query 和 key 之间关联性的方法。即常用的 Dot-product attention 和 Additive attention。

Dot-product attention Additive attention

计算 a1a^1a1a2,a3,a4a^2,a^3,a^4a2,a3,a4 的关联性

对于输入 aia^iai 将其分别左乘上矩阵 Wq,Wk,WvW^q,W^k,W^vWq,Wk,Wv 得到 qi,ki,viq^i,k^i,v^iqi,ki,vi,然后利用 qi,kjq^i,k^jqi,kj 计算 ai,aja^i,a^jai,aj 之间的关联性,计算结果为 attention score,将 attention score 放入激活函数后得到 attention weight,attention weight 乘上 vjv^jvj 再求和可得到 bib^ibi,即 aia^iai 对应的输出。

矩阵化

通过上面的几张图可以看出,虽然 Self-attention 中间做了很多复杂的工作,但是在 Self-attention 中需要学习的参数只有 Wq,Wk,WvW^q,W^k,W^vWq,Wk,Wv,其他的参数都是预先设定好的。

2.3 Multi-head Self-attention

在 Self-attention 中,我们使用 query 去需要相关的 key,但是相关有很多种不同的定义,不同的定义与不同的 query 绑定,即同一个输入需要有多个 query。

在上图中,在 Self-attention 的基础上对于每个 qi,ki,viq^i,k^i,v^iqi,ki,vi 其左乘上一个矩阵可以得到 qi,1,qi,2,ki,1,ki,2,vi,1,vi,2q^{i,1},q^{i,2},k^{i,1},k^{i,2},v^{i,1},v^{i,2}qi,1,qi,2,ki,1,ki,2,vi,1,vi,2,然后按照 Self-attention 中相同的计算方式可以得到 bi,1,bi,2b^{i,1},b^{i,2}bi,1,bi,2

然后将得到的 bi,1,bi,2b^{i,1},b^{i,2}bi,1,bi,2 接起来左乘一个矩阵就可以得到 Multi-head Self-attention 的输出 bib^ibi

2.4 Position Encoding

因为 Self-attention 考虑的是全局的信息,而且即便输入的顺序改变了,也不会影响输出的结果。但是在实际的应用中,很多时候需要考虑位置信息,例如一个 sequence。因此,为了让 Self-attention 能够考虑到位置信息,为每个输入加上一个 position encoding。

其中 eie^iei 表示在每个输入上增加的 position encoding 信息,对于每个 aia^iai 都有一个专属的 eie^iei 与之对应。eie^iei 产生的方式有很多种,在论文 Learning to Encode Position for Transformer with Continuous Dynamical Model 中提出并比较了 position encoding。

2.5 Self-attention for Image

对于一张 shape = (5, 10, 3) 的 RGB 图片,可以将其看成一个 vector set,其中的每一个 pixel 都可以看成一个 vector (r, g, b),然后就可以将其放入 Self-attention 模型进行计算。

3 Self-attention v.s. CNN

CNN 和 Self-attention 都可以考虑一定范围内的信息,但是 CNN 只能够考虑到感受野内的信息,而 Self-attention 能够考虑到全局的信息。因此可以把 CNN 看做 Self-attention 的简化版本,Self-attention 看做 CNN 的复杂化版本。

从集合的角度来看,CNN 可以看做是 Self-attention 的子集。在论文 ON THE RELATIONSHIP BETWEEN SELF-ATTENTION AND CONVOLUTIONAL LAYERS 中详细介绍了 Self-attention 和 CNN 的关系。

从下图(出自论文 AN IMAGE IS WORTH 16X16 WORDS: TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE)中的数据可以看出,利用较小的数据量训练时,CNN 的效果优于 Self-attention,但是随着数据量的增大,Self-attention 的效果越来越好,在数据量达到 300 Million 的时候 Self-attention 的效果会优于 CNN。

4 Summary

本篇博客对 attention 做了一个基本介绍,然后又介绍了 attention 最常用的一种实现 Self-attention,Self-attention 在 Transformer 和 BERT 中有着举足轻重的地位。我最开始学习 attention 的目的,是为了了解其在 computer vision 方向的应用,所以在之后的博客中我会更加详细的介绍目前 attention 在 computer vision 方向的应用以及遇到的问题。

References

《动手学深度学习》

64 注意力机制【动手学深度学习v2】

65 注意力分数【动手学深度学习v2】

67 自注意力【动手学深度学习v2】

68 Transformer【动手学深度学习v2】

Transformer论文逐段精读【论文精读】

(强推)李宏毅2021春机器学习课程

[【機器學習2021】自注意力機制 (Self-attention) slides]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/507555.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

推荐系统--矩阵分解(1)

推荐系统–矩阵分解(1) 推荐系统–矩阵分解(2) 推荐系统–矩阵分解(3) 推荐系统–矩阵分解(4) 推荐系统–矩阵分解(5) 推荐系统–矩阵分解(6) 1 引入 一个矩阵可以分解为两个小矩阵的乘积,以音乐为例,利用潜在特征向量来给用户和音乐打上标签&#xff…

Yolo家族算法分析

1 历史简介 2 YOLO算法思想 YOLO算法的基本思想: (1)将图片划分为SSS \times SSS个网格; (2)计算每个边界框和置信度; (3)计算每个网格属于某个类别的概率; &…

u8 附件上传后存放路径_织梦DedeCms附件按月份保存的修改方法

正常情况下,dedecms织梦系统的图片附件是按日保存的,一天一个文件夹, 时间长了, 这样在allimg中就会生成很多文件夹, 不方便管理.虽然,dedecms织梦的后台设置有”附件保存形式”的先项, 但功能太弱,如果是在后台上传和…

推荐系统--矩阵分解(2)

推荐系统–矩阵分解(1) 推荐系统–矩阵分解(2) 推荐系统–矩阵分解(3) 推荐系统–矩阵分解(4) 推荐系统–矩阵分解(5) 推荐系统–矩阵分解(6) 3 BiasSVD:考虑偏置 有一些用户会给出偏高的评分,有一些物品也会收到偏高的评分,比如电影观众为…

tga文件怎么打开_教你win10系统怎么打开stp文件

stp文件怎么打开呢?近来有很多小伙伴反映有朋友发送了一个stp文件给它,搞了半天也没能打开。其实打开stp文件很简单,不过前提是需要有绘图软件。我给大家整理了打开stp文件的图文教程,赶紧来瞧瞧吧有些朋友在使用win10系统的过程中…

推荐系统--矩阵分解(4)

推荐系统–矩阵分解(1) 推荐系统–矩阵分解(2) 推荐系统–矩阵分解(3) 推荐系统–矩阵分解(4) 推荐系统–矩阵分解(5) 推荐系统–矩阵分解(6) 7 基于情感分析的矩阵分解 7.1 引入 【摘要】推荐系统旨在基于丰富的信息预测用户的偏好,例如用户评分、人口统计和评论…

yarn 卸载包_0609-6.1.0-如何卸载CDH6.1

1.文档编写目的Fayson在两年前的文章中介绍过CDH的卸载,参考《如何卸载CDH(附一键卸载github源码)》。除非你是使用Cloudera官方提供的一键安装脚本安装的CDH,否则并没有现成的一键卸载的脚本供使用。为了更好的理解CDH的卸载,这里再次简单介…

xss跨站脚本攻击_网络安全xss跨站脚本攻击原理

以下在未经授权的网站操作均为违法行为XSS跨站脚本攻击xss的危害网络钓鱼,盗取各类账号密码我们先来看一下下面的案例:先来记住一下下面中的表我们来做一个转发上面页面显示已经登录,但是突然页面中提醒再此登录此时,我们并没有多…

推荐系统--联邦学习下的矩阵分解(6)

推荐系统–矩阵分解(1) 推荐系统–矩阵分解(2) 推荐系统–矩阵分解(3) 推荐系统–矩阵分解(4) 推荐系统–矩阵分解(5) 推荐系统–矩阵分解(6) 9 应用于联邦学习的矩阵分解 这个部分主要参考以下两篇论文: 2008-Collaborative Filtering for Implicit Feedback Dat…

什么是联邦学习

联邦学习 1.1 联邦学习的概念 历史:联邦学习最早在 2016 年由谷歌提出,原本用于解决安卓手机终端用户在本地更新模型的问题; 本质:联邦学习本质上是一种分布式机器学习技术,或机器学习框架。 目标:联邦学…

循环自增_大学C语言—循环结构及应用

基础知识常见循环结构及形式for循环for(设置初始值;循环条件判断;设置循环增减量){语句1;语句2;…… 语句n;}while循环while(条件判断){语句1;语句2;……语句n;}do-while循环d…

dac0832控制电机驱动流程图_某驱动电机控制器拆解实拍照片

小编作为一个电控专业100%小白,机缘巧合获得某纯电动汽车驱动电机控制器一台,拆解之,权为业内人士参考之用,文中显得外行、用词不对及谬误之处还请各位大神不吝赐教!外观标牌背面拆解固定托架侧面拆解固定托架拆解固定…

推荐系统--安全联邦矩阵分解(7)

相关论文: Secure Federated Matrix Factorization 论文源代码见: https://github.com/Di-Chai/FedMF 1 摘要 为了保护用户隐私和满足法律法规,联邦(机器)学习近年来获得了广泛的关注。 联邦学习的关键原则是在不需要知道每个用…

联邦学习--数据攻击(1)

参考论文:Deep Leakage from Gradients(NeurIPS 2019) 源代码: https://github.com/mit-han-lab/dlg 核心思想:作者通过实验得到,从梯度可以反推用户的个人信息。并验证了其在计算机视觉和自然语言处理任务…

联邦学习--数据攻击(2)

参考论文:See through Gradients: Image Batch Recovery via GradInversion(CVPR 2021 ) 源代码: 核心思想:解决了Deep Leakage from Gradients(NeurIPS 2019)中batch大于1效果无效的情况。 缺点…

对抗攻击(1)

本文是根据李宏毅老师在B站上的视频整理而来,视频地址为: https://www.bilibili.com/video/BV1n3411y7xD?p65 1 无目标和有目标攻击的区别 无目标攻击:攻击后的标签不确定,只要是和原始标签差别越大越好。 有目标攻击&#xff…

自注意力机制Self-attention(1)

目录: 自注意力机制Self-attention(1) 自注意力机制Self-attention(2) 本文是对李宏毅老师的课程进行了整理。 视频地址为: https://www.bilibili.com/video/BV1Wv411h7kN?p23 1 问题引入 问&#xff1a…

id门禁卡复制到手机_手机NFC有哪些功能?怎么设置手机门禁卡?别浪费了手机的NFC功能...

NFC功能早前都运用一些手机旗舰机中,随着手机技术的发展,现在有许多的手机都有NFC的功能,那手机中的NFC只是个摆设吗?NFC不仅仅有不依靠数据网络、安全稳定的特点,其实还有许多你不知道的功能!比如可以用来…

自注意力机制Self-attention(2)

目录: 自注意力机制Self-attention(1) 自注意力机制Self-attention(2) 1 内容回顾 以b2b^2b2的计算过程为例来说明: query: q1Wqa1q^1 W^q a^1q1Wqa1, q2Wqa2q^2 W^q a^2q2Wqa2, q3Wqa3q^3 …

风格迁移模型测试效果

1 模型简介 Selfie2anime模型:动漫风格,训练集主要针对人物头像;对应论文为:U-gat-it: Unsupervised generative attentional networks with adaptive layer-instance normalization for image-to-image translation Hayao模型&a…