Attention:何为注意力机制?

本文来自公众号“AI大道理”

人类利用有限的注意力资源从大量信息中快速筛选出高价值信息,这是人类在长期进化中形成的一种生存机制,人类视觉注意力机制极大地提高了视觉信息处理的效率与准确性。

attention从注意力模型的命名方式看,借鉴了人类的注意力机制。

1、从机器翻译说起

Seq2Seq模型,想要解决的主要问题是:如何把机器翻译中,变长的输入X映射到一个变长输出Y的问题。

序列模型可以较好地学习到句子的语法知识,但是,在应用Sequence学习机器翻译问题时,仍然存在两个明显的问题:

1、把输入X的所有信息有压缩到一个固定长度的隐向量Z。当输入句子长度很长,特别是比训练集中最初的句子长度还长时,模型的性能急剧下降;

2、把输入X编码成一个固定的长度Z,对于句子中每个词都赋予相同的权重。但是词与词之间的翻译一般有对应关系,如果对输入的每个词赋予相同权重,这样做没有对应翻译的区分度,往往使模型性能下降。

attention能解决以上两个问题。

Attention关键就是学习出来一个权重分布,然后这个作用可以作用在特征上。这个权重作用在不同的载体上,就可以在实际中得到具体应用。

作用在不同时刻上,如机器翻译。

2、soft attention

对输入X的不同部分赋予不同的权重,实现了句子中不同部分词汇的对齐翻译,同时在对应位置上浓缩了句子的相关信息,达到了软区分(soft attention)相关信息更好地提取知识的目的。

Soft attention在编码器提取知识到隐变量的阶段时,不是将原句中所有的信息进行抽象学习。反之,它释放了编码器提取所有信息的压力。

因此,针对一个很长的句子,编码器可以从中提取更有效的信息实现机器翻译。

Attention机制,使得我们允许Decoder在每一步输出时使用隐变量Z中的不同部分的特征知识。此外,Attention机制让模型根据隐变量Z和已经生成的单词决定加强Z中不同部分特征的学习。

其主要的用法是先计算一个权重因子α,然后根据α的大小对隐变量Z(图中用h表示)进行加权求和。

其中,α值越大,对应的h隐变量对解码翻译的信息贡献越大。

在引入Attention机制之前,Decoder解码翻译时根据固定的隐变量Z进行提取知识学习,然而引入Attention之后,隐变量Z在不同时刻发生了变化。

Attention模型的关键就是这里,即由固定的中间语义表示Z换成了受到注意力因子影响后的动态隐变量C,从而达到对齐翻译的效果。

3、Self Attention

传统的Attention机制过度依赖在Encoder-Decoder架构上;

传统的Attention机制依赖于Decoder的循环解码器,所以依赖于RNN,LSTM等循环结构;

传统的Attention依赖RNN结构,无法做到并行训练,训练速度受到影响;

传统的Attention计算本质是通过对比输入空间和输出空间的特征,学习Attention权重因子。

Self Attention脱离了Encoder-Decoder架构和RNN/CNN结构,并且针对输入空间特征或者输出空间特征单独学习权重因子,它不需要同时依赖两个空间的联系。

适合针对一个空间维度特征的知识进行学习,所以Self Attention也经常被称为intra Attention(内部Attention)。

模型架构

该模型的架构如图1所示,依然符合seq2seq的架构,由encoder和decoder组成。在编码器中由许多重复的网络块组成,一个网络块由一个多头attention层和一个前向神经网络组成(而非单独使用attention模型),整个编码器栈式搭建了N个块。

Decoder与encoder类似,除了编码器到解码器的学习外,还有解码器到解码器的学习。

同时,为了能够更深层次的搭建网络结构,该模型使用了残差结构(Add)和对层的规范化(Norm)。

Scaled Dot-Product Attention的具体计算方法如下:

Attention的输入有Q,K,V分别代表query, key, value三个概念。

和传统的Additive Attention对比,这里的query相当于Decoder循环层的输出,key和value相当于Encoder输出的隐特征向量。 

Scaled Dot-Product Attention也有三个计算步骤:

1、Q和K进行点乘得到初步权重因子,并对Q,K点乘结果进行缩放处理,这里除以\sqrt{dk}变量。对该步骤的计算,论文给出的解释是:假设Q和K都是独立的随机变量,满足均值为0,方差为1,则点乘后结果均值为0,方差为dk。也即方差会随维度dk的增大而增大,而大的方差导致极小的梯度。所以为了防止梯度消失,论文中用内积除以维度的开方,使之变为均值为0,方差为1;

2、步骤1中得到的权重分值进行归一化处理,即用softmax计算,使所有权重因子和为1;

3、根据归一化后的权重系数对value进行加权求和。

在整个模型中,从编码器到解码器的地方都使用了self attention结构,K、V和Q分别是编码器的层输出(这里K=V)和解码器中self attention的输入,这其实跟主流的机器翻译模型中的additive attention一样,进行传统的翻译对齐任务。

然后,在编码器和解码器中都使用了self-attention结构来学习文本的表示,K=V=Q,即里面的每个词都要和该句子中的所有词进行attention计算,其主要目的是学习句子内部的词依赖关系,捕获句子中的内部结构。

4、视觉中的Atttention

视觉中的Atttention其实也是学出一个权重分布,再拿这个权重分布施加在原来特征之上。

不过施加权重的方式略有差别,视觉应用中一般有以下几种施加方式:

  • 加权可以保留所有分量做加权(soft attention);

  • 可以在分布中以某种采样策略选取部分分量做加权(hard attention);

  • 加权可以作用在原图上;

  • 加权可以作用在空间尺度上,给不同空间区域加权;

  • 加权可以作用在Channel尺度上,给不同通道特征加权;

  • 加权可以作用在不同时刻历史特征上,结合循环结构添加权重,例如前面两章节介绍的机器翻译,或者后期会关注的视频相关的工作。

5、Hard Attention

机器翻译中的Attention和Self Attention,都属于Soft Attention的类型。

Hard Attention和Soft Attention的学习原理,这种结合强化学习“随机”采样图像局部区域的过程与我前两章内容介绍的Attention(Soft Attention)具有一定的区别:

Soft Attention是依赖特征之间的关系学习权重,Hard Attention主要在局部特征区域进行随机crop的过程;

Soft Attention可以嵌入到网络中应用Loss收敛学习权重,Hard Attention主要依赖强化学习训练权重(自然语言中有依赖蒙特卡罗方法),无法嵌入到网络中收敛学习;

Soft Attention的特征采样权重经过Softmax处理以后,所有的权重大小在0~1之间,大部分是小数形式,特征关系的采集是特征值和权重的累积和;Hard Attention的特征采集权重一般是局部区域作为一个整体(权重可以理解为只有0, 1两个情况),局部特征之间的关系需要经过神经网络进一步学习。

hard attention 的两种体现。一种是 picture crop,直接对一张图进行裁剪。把一些没有用的东西去掉。这种方式优点是简单暴力,直观。缺点是,不够general,不同图片,问题不太一样,没有明确的标准。另外一种是用RL不断学习,把像素关闭。

对比机器视觉任务上的Soft Attention和机器翻译上的Soft Attention,可以发现机器视觉上的Soft Attention似乎都是在输入空间上做的特征提取,这和机器翻译中的Attention定义似乎有些区别。

在机器翻译上的Soft Attention一般都是联系对比输入空间和输出空间的特征并提取Attention权重。如果只对输入空间做特征分析,一般属于Self Attention的定义。

6、视觉应用中的Self Attention

学出了non-local位置信息之间的关联。

对于2D图像,就是图像中任何像素对当前像素的关系权值;对于3D视频,就是所有帧中的所有像素,对当前帧的像素的关系权值。

  1. 首先对输入的 feature map X 进行线性映射(说白了就是 1*1*1 卷积,来压缩通道数),然后得到 θ,φ,g 特征;

  2. 通过reshape操作,强行合并上述的三个特征除通道数外的维度,然后对θ和φ进行矩阵点乘操作,得到类似协方差矩阵的东西(这个过程很重要,计算出特征中的自相关性,即得到每帧中每个像素对其他所有帧所有像素的关系);

  3. 然后对自相关特征进行 Softmax 操作,得到0~1的weights,这里就是我们需要的 Self-attention 系数;

  4. 最后将 attention系数,对应乘回特征矩阵 g 中,然后再上扩展channel数(1*1卷积),与原输入 feature map X 做残差运算,获得non-local block的输出。

7、Attention机制的本质思想

如果把Attention机制从上文讲述例子中的Encoder-Decoder框架中剥离,并进一步做抽象,可以更容易看懂Attention机制的本质思想。

从概念上理解,是为注意力机制。

可以把Attention理解为从大量信息中有选择地筛选出少量重要信息并聚焦到这些重要信息上,忽略大多不重要的信息。

从计算上理解,是为权重分配机制。

不论何种注意力机制,本质上就是分配权重。其主要聚焦的过程体现在权重系数的计算上,权重越大越聚焦于其对应的特征值上,即权重代表了信息的重要性,而对应特征是其需要重点学习的知识。hard-attention分配的权重不是0就是1,而soft-attetion分配的权重则是0-1。

从QKV上理解,是为匹配机制。

QK的计算得出了相关性,相关性越高的权重越大,也即越匹配。因此,若想从一张图中找出狗,注意力机制就要让权重匹配上狗,将狗的这一块区域凸显出来。

 ——————

浅谈则止,细致入微AI大道理

扫描下方“AI大道理”,选择“关注”公众号

—————————————————————

 

—————————————————————

投稿吧   | 留言吧

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

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

相关文章

小红书如何营销?各大品牌小红书运营投放营销策划方案合集(13份)

传统企业如何通过短视频进行营销?短视频营销策划方案合集 我是 左木杨,我的营销知识库已经收集了10000品牌营销方案,欢迎全国对营销感兴趣的朋友一起加入进来。 今天为大家精选了13份知名品牌小红书营销策划方案: 涵盖&#xf…

小红书内容营销的必读推荐 小红书运营策划方案上海氖天

小红书内容营销是指以小红书为载体,运用内容开展营销活动,主要包括生产吸引人的内容、分享珍贵的内容、借助小红书各类工具宣传内容、吸引更多用户等。 1,做内容,就是针对某一群体,提供懒人版问题解决方法,…

小红书新媒体运营推广策略

小红书是以美妆、时尚穿搭内容为主的产品种草社区,也是很多年轻人愿意使用的平台,随着更多领域的开放,其他专业领域的博主也是快速入驻,成熟领域的头部账号相对饱和,没有丰富的专业知识储备和别具一格的表现方式最好不…

小红书整体框架及玩法

省时查报告-专业、及时、全面的行研报告库 省时查方案-专业、及时、全面的营销策划方案库 【免费下载】2023年2月份热门报告合集 小红书爆文笔记进阶指南 最新亲测国内可用ChatGPT使用教程(3分钟搞定) 2023全域用户经营白皮书 ChatGPT的发展历程、原理、…

如何实现小红书差异化运营?

时间步入2022下半年,虽然大型营销节点暂时迎来空窗期,但品牌方仍在持续性用户心智种草,不断提升曝光,为新品销售及下一次大促充分准备。 小红书作为年轻群体的生活方式平台和消费决策入口,已经成为品牌广告投放的重要渠…

讯飞星火大模型详细内测体验:看它能否应对这些挑战?

名人说:一花独放不是春,百花齐放花满园。——《增广贤文》 作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 一、简要介绍二、分类问题测试0️⃣自我介绍1️⃣语言理解2️⃣知识问答3️⃣逻辑推…

上海移动HG6145D光猫之超级用户登录方法

0.部分资料介绍的超级账号:CMCCAdmin 超级密码:aDm8H%MdA,目前已经失效 。其实在2021年之前是可以用的。 1.获取MAC地址: arp -a 192.168.1.1或 arp -a 注意要和光猫同一网段 2.开启Telnet 浏览器输入http:/192.168.1.1/cgi-bin/telnetenable.cgi?telne…

QHashIterator-官翻

QHashIterator Class template <typename Key, typename T> class QHashIterator QHashIterator 类为 QHash 和 QMultiHash 提供 Java 风格的常量迭代器。更多内容… 头文件:#include qmake:QT core 所有成员列表&#xff0c;包括继承的成员废弃的成员 公共成员函数…

如何让你的网页生成一个像siri一样的语音助手

首先你要知道两个概念语音识别 &#x1f984; 与语音合成 &#x1f432;。 语音识别: 语音识别&#xff08;speech recognition&#xff09;技术&#xff0c;也被称为自动语音识别&#xff08;英语&#xff1a;Automatic Speech Recognition, ASR&#xff09;、电脑语音识别&am…

为什么Siri总是像个智障?智能助手背后的技术到底有多难?

导读&#xff1a;本文带你简单了解一下智能助手背后的会话式人工智能技术。 作者&#xff1a;木羊同学 来源&#xff1a;大数据DT&#xff08;ID&#xff1a;hzdashuju&#xff09; 01 大话智能助理 智能助理应该是当前人工智能技术最为成功的落地方向之一。我还记得&#xff0…

一文把 JavaScript 中的 this 聊得明明白白

文章目录 1.this 是什么&#xff1f;2.this的指向2.1 全局上下文的 this 指向2.2 函数&#xff08;普通函数&#xff09;上下文中的 this 指向2.3 事件处理程序中的 this 指向2.4 以对象的方式调用时 this 的指向2.5 构造函数中的 this 指向2.6 在 类上下文中 this 的指向。2.7…

投递简历用什么邮箱最好用?

春招已经开始了&#xff0c;你却还没明白一个问题&#xff1a;为什么你的简历邮件&#xff0c;没有回音&#xff1f;但也许企业根本没有收到你的邮件。邮件&#xff0c;其实是求职中一门不可缺少的基础课。选什么邮箱&#xff1f;邮件如何命名&#xff1f;简历如何命名&#xf…

程序员如何写简历

【面试】程序员如何写简历 一份好的简历可以在整个申请面试以及面试过程中起到非常重要的作用。 一 简历的重要性 简历就像是我们的门面&#xff0c;是 HR 对我们求职者的第一映像&#xff0c;它在很大程度上决定了是否能够获得面试机会。 网申&#xff1a;简历必然经过 HR 的…

大厂程序员手把手教你如何写简历!!(附简历模板)

本文 https://github.com/youngyangyang04/leetcode-master 已经收录&#xff0c;里面还有leetcode刷题攻略、各个类型经典题目刷题顺序、思维导图&#xff0c;可以fork到自己仓库&#xff0c;有空看一看一定会有所收获&#xff0c;如果对你有帮助也给一个star支持一下吧&#…

程序员如何写一份更好的简历

简历中的常见错误 1. 信息过多&#xff0c;缺乏重点 信息过多的常见表现是十几行的技能列表&#xff0c; 我举一个血淋淋的例子&#xff1a; 20 行的技能列表&#xff0c;这位求职者开始就把自己了解的所有工具都列出来&#xff0c;希望能够突显自己的经验和学习能力&#xf…

邮箱投递简历,如何正确书写正文和主题?

前言 又快到了一年一度的春招和毕业季。身边还有许多准备从事IT行业的朋友没有找到工作&#xff0c;基兄特此整理了一份关于自己找工作的经验&#xff08;也参考了网上的部分数据和内容&#xff09;。 本文的内容主要分为邮箱投递简历&#xff0c;如何正确书写正文和主题&#…

【干货】如何打造HR无法拒绝的简历?测试开发大牛带手把手你写简历!

通过率90%&#xff0c;优秀的软件测试简历长什么样&#xff1f; 也许口才好的人会觉得简历不重要&#xff0c;能说就行了&#xff0c;那是因为你没有体会过石沉大海的感觉&#xff01; 很多人觉得疑惑&#xff0c;为什么我投了那么多简历&#xff0c;都没有接到面试通知&…

chatgpt赋能python:Python获取数据:更高效的数据获取与分析

Python获取数据&#xff1a;更高效的数据获取与分析 Python是一种高级的编程语言&#xff0c;常用于数据分析、机器学习、Web开发等领域。它的简单易学、高效便捷的特点使其成为了许多数据分析工作的首选语言。本文将介绍如何使用Python获取数据并进行分析。 为什么选择Pytho…

chatgpt赋能python:Python预处理:提高数据分析效率的重要一步

Python预处理&#xff1a;提高数据分析效率的重要一步 在数据分析的过程中&#xff0c;数据预处理是不可避免的一步&#xff0c;能否有效地进行数据预处理&#xff0c;对于后续的数据分析效率以及结果的准确性至关重要。Python作为一种先进的编程语言&#xff0c;不仅在数据分…

PHP使用CURL请求微信接口返回为空

先贴请求代码 /*** 发送post请求* param string $url 需要请求的地址* return json $output 返回的json字符串*/ function postUrl($url, $data){$data json_encode($data);$headerArray array("Content-type:application/json;charsetutf-8","Accept:appli…