attention加权机制

news2024/10/5 19:15:31
attention
1.在模型举例在机器翻译的任务当中,翻译得到的每个y的时候,更加关注于某个x,当翻译am的时候,就应该更关注输入当中的
是,让机器也具备这种关注的能力。
2.怎么关注?当翻译y1的时候,y1是通过H1得到的,x1通过特征提取又可以计算出h1,点积的方式可以计算
出两个向量的相似性。H和每个h之间的点积去计算,翻译y1的时候更应该专注哪个x/h。

self-attention:自注意力机制和attention一模一样,唯一不同在于输入不同,导致输出不同,输出不同导致作用不同。
应用场景:指代消减(指示代词消除减掉)

H和h之间的关系
score(h,H)=H*h(点积)

QKV的计算方式(计算H和h相关性的计算方式)

Attention:

我们都知道人工智能就是为了让机器模仿人的行为,对于人类来说注意力是非常重要的一件事情,有了注意力之后才能把目光放到重点的地方,今天我们就来了解一下,如何让机器的目光也把注意力放到重要的地方,并且再网络中添加注意力会又什么样的效果。

我们以机器翻译举例说明,首先如果直接输入一个字然后翻译一个字肯定是行不通的,因为从一种语言翻译到另外一种语言的话,它们的语序可能会发生变化,例如:比如英语的“red”对应法语的“rouge”,英语的“dress”对应法语“robe”,但是英语的“red dress”对应法语的“robe rouge”。

为了解决这个问题,发明了Encoder-Decoder编解码模型,它可以将我们所有的输入都给保存到一个语义向量C当中,这时候的C是包含整个句子的所有语义信息的,然后再用这个C输入到Decoder中去进行解码翻译,这样就很好的解决了上述问题,模型结构如下:

 

这时候再这个模型结构当中还有没有问题?

比如说C就是中间层,是由多个h构成的C,也就是说会的到一个固定的语义向量C,既然是固定的大小,那么它储存的信息肯定就是有限的,当句子不断的变长,会发现这个固定大小的语义向量C不能够很好的表示出来输入的句子了,就像让大家看一遍去翻译,duanmingwei is cool,可以很好的翻译出来,如果让大家看一遍文章翻译下边的一段话:

It was the best of times, it was the worst of times, it was the age of wisdom, it was the age of foolishness, it was the epoch of belief, it was the epoch of incredulity, it was the season of Light, it was the season of Darkness, it was the spring of hope, it was the winter of despair, we had everything before us, we had nothing before us, we were all going direct to Heaven, we were all going direct the other way — in short, the period was so far like the present period, that some of its noisiest authorities insisted on its being received, for good or for evil, in the superlative degree of comparison only.

是不是就会出问题,因为根本记不下来这篇文章,机器同理,给定了机器一定的神经单元个数,那么也就意味着它的记忆能力是有限的。这个时候让机器去翻译的话,它也会出现问题。在语句中提取的语义信息过大,那么这个固定的语义向量C就装不下了。

通过人类翻译文章的特点,得到了循环神经网络中的Attention机制。

Attention机制:

我们现在把Encoder网络中的隐藏层记为 把Decoder网络中的隐藏层记为 ,第t个输出词记为 ,我们原先的Decoder网络中的式子就可以写做:

 

 

我们要使得网络在翻译不同的句子时可以注意到并利用原文中不同的词语和语句段,那我们就可以把Decoder网络式子写作:

其中  指的是在时刻t的上下文向量(Context Vector)。我们把它定义为所有的原文隐藏层值  加权平均的结果  ,而如何分配权重就体现了输出这个  的时候应该给哪些原文词语更高的注意力。

 

 

 

 

 

在上述图当中,我们为每一个ht都分配了一个权重,那么这个权重就叫做全局对齐权重

全局对齐权重

全局对齐权重αk很好的体现了在计算第k个输出词语时,应该给所有的 怎样的权重,其中  就代表着计算第k个输出词语时,分配到的权重大小。于是我们的  

 翻译一个句子的时候,每一步的  都应该是不同的,下图展示的是把法语句子“L’accord sur l’Espace économique européen a été signé en août 1992.” 翻译成英语句子“The agreement on the European Economic Area was signed in August 1992.”时,每一个输出英文词汇的αk构成的对齐矩阵:

 

 

上图中,每一列就代表着输出一个英语单词时,它的αk权重是如何分布于原文向量  中的,图中越亮的像素块对于着越大的权重。

 

这个图告诉了我们几个重要信息:

  • 1. 在预测每一个词语的时候,权重只会在少数几个词上表现出比较高的注意力,一般不会多于3-4个词语被同时赋予比较高的注意力;
  • 2. 通常来说,在上一时间刻中被分配很大权重的  ,在下一层中并不一定也会有高权重。连续输出几个词语时,注意力会快速地在不同原文词语之间切换。
  • 3. 很多时候,输出文本中的第  个词的注意力也集中在输入文本的第  个词上,就像是图中从左上到右下的这一条对角的亮带。

那么把attention带入到encoder-decoder中网络流程是什么样的?

 

截至到现在就剩下一个问题没解决了,就是αk怎么求的?

如何计算权值,其实权值的意义是什么?是不是就是为了衡量在翻译一个词Hi的时候,应该给每个ht分配的权重,因此如何过能设计出来一个函数,然他可以衡量H和每一个h的关系是不是就可以了。我们称这个函数为score函数,打分函数,意义就是在解码翻译每个H的时候,每个h的得分,肯定它们之间的关系越紧密的分越高。

 

在这里我们称e为关联能力,并且在经过一个softmax激活函数得到一个缩放后的0-1的值,来代表翻译Hi的时候每个小的ht所分配到的权重。

由于    一起构成了 被代入Decoder网络  中进行计算并被监督 ,因此是可以计算的,梯度顺着 ,我们知道这里的权重计算函数是可以被梯度下降优化的。 

 

 

 

 

 

那么通常这个eij是如何求出来的?

 

详解Attention计算流程?

Attention函数的本质可以被描述为一个查询(query)到一系列(键key-值value)对的映射。

 

将Source中的构成元素想象成是由一系列的<Key,Value>数据对构成,此时给定Target中的某个元素Query,通过计算Query和各个Key的相似性或者相关性,得到每个Key对应Value的权重系数,然后对Value进行加权求和,即得到了最终的Attention数值。所以本质上Attention机制是对Source中元素的Value值进行加权求和,而Query和Key用来计算对应Value的权重系数。

 

目前的NLP任务中Key=Value=输入端的隐变量hj。Query=输出端的隐变量Hi-1。

 

Attention的种类都有哪些?

  1. Soft-Attention
  2. Hard-Attention
  3. Global-Attention
  4. Local-Attention
  5. Self-Attention

Soft-Attention:

上述讲的Attention其实就是Soft-Attention,它的公式如下:

 

Soft-Attention的完整的工作流程图:

 

Hard-Attention:

我们刚才又说到,在求语义向量C的时候,进行了加权求平均的操作,但是在Hard-Attention里边放弃了这种方式,它在进行融合多个ht的时候,要么完全留下,要么完全抛弃。

有两种实现的方式:

  1. 取到α值最高的所对应的h,作为C
  2. 按照α的权值分布,随机采到一个隐藏层h,作为C

Hard-Attention的工作流程图:

 

它的缺点也很明显:

硬性注意力的一个缺点是基于最大采样或随机采样的方式来选择信息。因此最终的损失函数与注意力分布之间的函数关系不可导,因此无法使用在反向传播算法进行训练。为了使用反向传播算法,一般使用软性注意力来代替硬性注意力。

Self-Attention:

自监督(Self-Attention)英文也有叫Intra- Attention的,简单来说相比于在输出Hk和输入h之间寻找对齐关系的其他Attention方法,Self-Attention可以在一段文本内部寻找不同部分之间的关系来构建这段文本的表征。因此它多用于非seq2seq任务,因为通常Encoder-Decoder网络只能构建在seq2seq任务中,对于非seq2seq问题原先的Attention就没有办法排上用场了。自监督方法非常适合于解决阅读理解,文本摘要和建立文本蕴含关系的任务。

Attention得到的是输入句x和目标句y之间的依赖关系,忽略了输入句中文字间和目标句中文字间的关系。而自然语言的任务中,更多的任务只有x,需要从x中提取文本特征,而句子内部的关系也是重要的文本特征。Self-Attention探寻的是句子内部的词依赖关系(词组依赖、指代关系等),捕获句子的内部结构,因此能够更好地获取文本特征。

Self Attention顾名思义,指的不是xy之间的Attention机制,而是x内部元素之间或者y内部元素之间发生的Attention机制,也可以理解为x = y这种特殊情况下的注意力计算机制,此时的Key、Value、Qery来源于同一个文本,但是确实是3个不同的矩阵。例如:输入一个句子,那么里面的每个词都要和该句子中的所有词进行attention计算。

在self-attention中

 

上图显示的就是当算法处理到红色字的表征时,它应该给文中其他文字的表征多大的注意力权重。

  1. 词组依赖

 

 

2.指代关系(its 指代 law)

 

介绍论文中Self-Attention机制中采用的attention计算方法Scaled Dot-Product Attention。

Scaled Dot-Product Attention公式也可以看上述表中总结的4中计算e的方法的最后一种。

 

公式中SoftMax()函数对矩阵进行按行作用,self-attention中Source和Target是一样的,因此m=n。dk=dv=64,词向量维度为512。

放缩点积注意力模型(Scaled Dot-Product Attention)与正常的点积注意力模型的区别在于增加了一个Scale操作。其中因子  起到调节作用,使得内积不至于太大(如果太大,softmax可能进入无梯度区域),让训练过程中具有更稳定的梯度。

 

attention计算过程(矩阵形式)

  1. 计算Query,Key和Value矩阵。将词嵌入转化成矩阵X中,X矩阵中的每一行对应于输入句子中的一个单词。然后将其乘以训练的权值矩阵获得Query,Key和Value矩阵。(可以通过改变WQ、WV、WK矩阵的维度使得最后输出的Attention矩阵与输入矩阵X具有相同的维度)。

 2. 结果矩阵按行进行SoftMax后与V相乘,获得Thinking和Machines的attention矩阵。

 

 

  1. Scaled Dot-Product Attention的计算过程(向量形式)

1)对于每个单词,创建一个Query向量,一个Key向量和一个Value向量。这些向量是通过词嵌入乘以我们训练过程中创建的3个训练矩阵而产生的。

 

  1. 计算公式

 

 

这个softmax的分数决定了当前单词在每个句子中每个单词位置的表示程度。很明显,当前单词对应句子中此单词所在位置的softmax的分数最高。

3)将每个Value向量乘以softmax后的得分。这里实际上的意义在于保存对当前词的关注度不变的情况下,降低对不相关词的关注。

4)累加加权值的向量,即为self-attention层的输出(对于第一个单词)。

总的画一下self-attention的图:

 

 

Attention 带来的算法改进

Attention机制为机器翻译任务带来了曙光,具体来说,它能够给机器翻译任务带来以下的好处:

Attention显著地提高了翻译算法的表现。它可以很好地使Decoder网络注意原文中的某些重要区域来得到更好的翻译。

Attention解决了信息瓶颈问题。原先的Encoder-Decoder网络的中间状态只能存储有限的文本信息,现在它已经从繁重的记忆任务中解放出来了,它只需要完成如何分配注意力的任务即可。

Attention减轻了梯度消失问题。Attention在网络后方到前方建立了连接的捷径,使得梯度可以更好的传递。

Attention提供了一些可解释性。通过观察网络运行过程中产生的注意力的分布,我们可以知道网络在输出某句话时都把注意力集中在哪里;而且通过训练网络,我们还得到了一个免费的翻译词典(soft alignment)!还是如下图所示,尽管我们未曾明确地告诉网络两种语言之间的词汇对应关系,但是显然网络依然学习到了一个大体上是正确的词汇对应表。

 

 

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

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

相关文章

论文笔记 A Comprehensive Survey on Graph Neural Networks(GNN综述)

前言 近年来&#xff0c;深度学习促进了很多机器学习任务的发展&#xff0c;这些任务很多都表示在规则的欧几里得空间中表示。但是图作为具有复杂关系和对象之间相互依赖&#xff0c;其数据是从非欧几里得域生成的&#xff0c;最近也有很多关于图数据深度学习方法的研究。 在…

工业4.0 管理壳学习笔记(6)-数字铭牌

每一台机器都有一个铭牌&#xff0c;铭牌中表明了机器的名称&#xff0c;型号&#xff0c;出厂日期&#xff0c;产品编号&#xff0c;制造日期等信息。。在数字化世界中&#xff0c;机器铭牌不仅要求人类可读&#xff0c;而且需要机器可读。人们开始对数字化产品铭牌的格式和内…

【视觉高级篇】22 # 如何用仿射变换来移动和旋转3D物体?

说明 【跟月影学可视化】学习笔记。 三维仿射变换&#xff1a;平移 对于平移变换来说&#xff0c;如果向量 P(x0​x_0​x0​​, y0y_0y0​​, z0​z_0​z0​​) 沿着向量 Q(x1x_1x1​​, y1​y_1​y1​​, z1​z_1​z1​​) 平移&#xff0c;只需要让 P 加上 Q&#xff0c;就…

BI系统用户访问数据分析

商业智能&#xff08;Business Intelligence&#xff0c;简称&#xff1a;BI&#xff09;&#xff0c;又称商业智慧或商务智能&#xff0c;指用现代数据仓库技术、线上分析处理技术、数据挖掘和数据展现技术进行数据分析以实现商业价值。 ——百度百科 文章目录前言一、痛点梳理…

新手入门学传奇开区技术常见问题跟解答

首先&#xff0c;欢迎各位新GM加入传奇爱好者&#xff0c;虽然是新加入&#xff0c;但是GM们对传奇的了解也大相径庭&#xff0c;有的是资深GM&#xff0c;而多数则是纯新人&#xff0c;今天又有坛友提出了疑问&#xff0c;对自己的前进方向很迷茫&#xff0c;所以写一篇新人关…

奇异值分解(SVD)和np.linalg.svd()函数用法

一、简介 奇异值分解是一种十分重要但又难以理解的矩阵处理技术&#xff0c;在机器学习中是最重要的分解没有之一的存在。那么&#xff0c;奇异值分解到底是在干什么呢&#xff1f; 矩阵 A 表示的是高维数据&#xff0c;通常情况下高维数据分布并不是雨露均沾的&#xff0c;而往…

matlab图像的增强

1.灰度变换增强 &#xff08;1&#xff09;图像直方图 &#xff08;2&#xff09;图像直方图的均衡化 2.频域滤波增强 &#xff08;1&#xff09;低通滤波器 &#xff08;2&#xff09;高通滤波器 &#xff08;3&#xff09;同态滤波器 3.彩色增强 &#xff08;1&#xff09;真…

[附源码]JAVA毕业设计高校智能排课系统(系统+LW)

[附源码]JAVA毕业设计高校智能排课系统&#xff08;系统LW&#xff09; 目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术…

Ubuntu搭建Hadoop环境

本文是在一个全新的Ubuntu 22.04 虚拟机上安装Hadoop 3.3.4。 环境 Ubuntu 22.04JDK 11Hadoop 3.3.4 安装Hadoop 首先安装JDK&#xff1a; # apt install openjdk-11-jdk-headless安装好以后查看&#xff1a; # java -version openjdk version "11.0.17" 2022-…

基于人工神经网络的车牌识别系统的研究(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客 &#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜…

用HTTP proxy module配置一个简单反向代理服务器

预备知识 反向代理 反向代理&#xff08;reverse proxy&#xff09;方式是指用代理服务器来接受Internet上的连接请求&#xff0c;然后将 请求转发给内部网络中的上游服务器&#xff0c;并将从上游服务器上得到的结果返回给Internet上请求 连接的客户端&#xff0c;此时代理服…

自定义表单、自定义流程、自定义页面、自定义报表应用开发平台

真正的大师,永远都怀着一颗学徒的心&#xff01; 一、项目简介 Java开发框架&#xff0c;自定义表单、自定义页面、自定义流程、自定义报表应用开发平台 二、实现功能 支持系统文件在线管理 支持代码在线编辑 支持URL 路由 支持黑白名单 支持定时任务 支持在线监控 支持…

Java+JSP+MySQL基于SSM的会议交接平台的设计与实现-计算机毕业设计

项目介绍 随着社会竞争压力的不断加强&#xff0c;企事业单位内部的会议都在不断的增加&#xff0c;有效的会议可以提高企事业内部的沟通&#xff0c;更好的做出符合战略目标的决策&#xff0c;但是传统的会议交接有一定的问题存在&#xff0c;首先就是必须面对面进行传达&…

突破卡脖子技术 AVS3标准在世界杯实现移动端规模化商用

11月25日,在2022卡塔尔世界杯B组第二轮比赛中,亚洲球队又一次脱颖而出,伊朗连进2球,2:0战胜威尔士,双方鏖战至最后时刻,奉上了一场精彩的比赛。 作为2022卡塔尔世界杯持权转播商,中国移动咪咕上线“睛彩视界”独家视角,通过国家自主的AVS3、Audio Vivid编解码标准为用户带来“…

基于51单片机智能IC卡燃气表控制(仿真+源程序+全套资料)

资料编号&#xff1a;199 功能介绍&#xff1a; 采用51单片机作为主控CPU&#xff0c;使用按键进行模拟冲卡&#xff08;模拟缴费冲卡&#xff09;&#xff0c;通过按键来控制当前是否使用燃气&#xff0c;并且LCD1602实时显示当前燃气可用量剩余多少&#xff0c;当燃气不足时…

ARM-A架构入门基础(三)MMU

14天学习训练营导师课程&#xff1a;周贺贺《ARMv8/ARMv9架构-快速入门》 1. MMU&#xff08;Memory Management Unit&#xff09; 内存管理单元&#xff0c;MMU的意义在于将软件程序的虚拟地址转换为真实的物理地址。 2. MMU种类 Secure EL1&0 translation regime, wh…

基于约束关系的图表设计

标准的基于 GUI 的图形设计工具仅支持有限的“对齐向导”风格的定位&#xff0c;具有基本的对象分组系统&#xff0c;并实现对齐或分布对象的原始功能。这些工具没有办法记住对象之间的约束和关系&#xff0c;也没有办法定义和重用抽象。我一直不满意现有的设计工具&#xff0c…

[附源码]Python计算机毕业设计Django二次元信息分享平台的设计及实现

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;我…

短视频不知道怎么定位?教你三个自我商业定位的方法,收藏学习

上一篇内容是我在我赢助手小禾呈序上讲了哪几类产品更适合私域变现&#xff0c;当然我相信有很多做抖音但没想好怎么变现的对吧&#xff1f; 如果说你还停留在我也不知道我可以靠什么赚钱这样的一个状态当中。那我给你三个自我商业定位的方法。 第一个方法&#xff0c;从工作上…

虹科Pico汽车示波器学院 | 第二课直播精彩回顾

直播精彩回顾&#xff08;11.19&#xff09; 第二课主题&#xff1a;《为什么使用示波器&#xff0c;可加速技师的技术水平提升&#xff1f;》 11月19日&#xff0c;虹科Pico汽车示波器学院第二课成功开课。第二课中&#xff0c;戈老师向学员们讲解了&#xff1a; 汽车示波器…