自注意力机制(Self-Attention)

目录

一、注意力机制和自注意力机制的区别

二、引入自注意力机制的目的

三、Self-Attention详解

3.1 单个输出

3.2 矩阵形式

四、Multi-head Self-attention

 五、Positional Encoding

六、Self-Attention和RNN的区别


一、注意力机制和自注意力机制的区别

Attention机制与Self-Attention机制的区别

传统的Attention机制发生在Target的元素和Source中的所有元素之间。

简单讲就是说Attention机制中的权重的计算需要Target来参与。即在Encoder-Decoder 模型中,Attention权值的计算不仅需要Encoder中的隐状态而且还需要Decoder中的隐状态。

Self-Attention:

不是输入语句和输出语句之间的Attention机制,而是输入语句内部元素之间或者输出语句内部元素之间发生的Attention机制。

例如在Transformer中在计算权重参数时,将文字向量转成对应的KQV,只需要在Source处进行对应的矩阵操作,用不到Target中的信息。

二、引入自注意力机制的目的

神经网络接收的输入是很多大小不一的向量,并且不同向量向量之间有一定的关系,但是实际训练的时候无法充分发挥这些输入之间的关系而导致模型训练结果效果极差。比如机器翻译问题(序列到序列的问题,机器自己决定多少个标签),词性标注问题(一个向量对应一个标签),语义分析问题(多个向量对应一个标签)等文字处理问题。

针对全连接神经网络对于多个相关的输入无法建立起相关性的这个问题,通过自注意力机制来解决,自注意力机制实际上是想让机器注意到整个输入中不同部分之间的相关性

三、Self-Attention详解

针对输入是一组向量,输出也是一组向量,输入长度为N(N可变化)的向量,输出同样为长度为N 的向量。

3.1 单个输出

对于每一个输入向量a,经过蓝色部分self-attention之后都输出一个向量b,这个向量b是考虑了所有的输入向量对a1产生的影响才得到的,这里有四个词向量a对应就会输出四个向量b。

下面以b1的输出为例

首先,如何计算sequence中各向量与a1的关联程度,有下面两种方法

        Dot-product方法是将两个向量乘上不同的矩阵w,得到q和k,做点积得到α,transformer中就用到了Dot-product。

        上图中绿色的部分就是输入向量a1和a2,灰色的Wq和Wk为权重矩阵,需要学习来更新,用a1去和Wq相乘,得到一个向量q,然后使用a2和Wk相乘,得到一个数值k。最后使用q和k做点积,得到α。α也就是表示两个向量之间的相关联程度。

        上图右边加性模型这种机制也是输入向量与权重矩阵相乘,后相加,然后使用tanh投射到一个新的函数空间内,再与权重矩阵相乘,得到最后的结果。

        可以计算每一个α(又称为attention score),q称为query,k称为key

 另外,也可以计算a1和自己的关联性,再得到各向量与a1的相关程度之后,用softmax计算出一个attention distribution,这样就把相关程度归一化,通过数值就可以看出哪些向量是和a1最有关系。

 下面需要根据 α′ 抽取sequence里重要的资讯:

 先求v,v就是键值value,v和q、k计算方式相同,也是用输入a乘以权重矩阵W,得到v后,与对应的α′ 相乘,每一个v乘与α'后求和,得到输出b1。

如果 a1 和 a2 关联性比较高, α1,2′ 就比较大,那么,得到的输出 b1 就可能比较接近 v2 ,即attention score决定了该vector在结果中占的分量;

3.2 矩阵形式

用矩阵运算表示b1的生成:

Step 1:q、k、v的矩阵形式生成

写成矩阵形式:

 

把4个输入a拼成一个矩阵I,这个矩阵有4个column,也就是a1到a4,I乘上相应的权重矩阵W,得到相应的矩阵Q、K、V,分别表示query,key和value。

三个W是我们需要学习的参数

Step 2:利用得到的Q和K计算每两个输入向量之间的相关性,也就是计算attention的值α, α的计算方法有多种,通常采用点乘的方式。

先针对q1,通过与k1到k4拼接成的矩阵K相乘,得到\alpha _{1,n}拼接成的矩阵。

同样,q1到q4也可以拼接成矩阵Q直接与矩阵K相乘:

 

公式为:

矩阵形式:

矩阵A中的每一个值记录了对应的两个输入向量的Attention的大小α,A'是经过softmax归一化后的矩阵。

Step 3:利用得到的A'和V,计算每个输入向量a对应的self-attention层的输出向量b:

 

写成矩阵形式:

 对self-attention操作过程做个总结,输入是I,输出是O:

矩阵Wq、 Wk 、Wv是需要学习的参数。

四、Multi-head Self-attention

self-attention的进阶版本Multi-head Self-attention,多头自注意力机制

因为相关性有很多种不同的形式,有很多种不同的定义,所以有时不能只有一个q,要有多个q,不同的q负责不同种类的相关性。

对于1个输入a

 首先,和上面一样,用a乘权重矩阵W得到q^i,然后再用q^i乘两个不同的W,得到两个不同的q^{i,n},i代表的是位置,1和2代表的是这个位置的第几个q。

这上面这个图中,有两个head,代表这个问题有两种不同的相关性。

同样,k和v也需要有多个,两个k、v的计算方式和q相同,都是先算出来ki和vi,然后再乘两个不同的权重矩阵。

对于多个输入向量也一样,每个向量都有多个head:

 

算出来q、k、v之后怎么做self-attention呢?

和上面讲的过程一样,只不过是1那类的一起做,2那类的一起做,两个独立的过程,算出来两个b。

对于1:

 对于2:

这只是两个head的例子,有多个head过程也一样,都是分开算b。

最后,把b^{i,1},b^{i,2}拼接成矩阵再乘权重矩阵W,得到b^i,也就是这个self- attention向量ai的输出,如下图所示:

五、Positional Encoding

在训练self attention的时候,实际上对于位置的信息是缺失的,没有前后的区别,上面讲的a1,a2,a3不代表输入的顺序,只是指输入的向量数量,不像rnn,对于输入有明显的前后顺序,比如在翻译任务里面,对于“机器学习”,机器学习依次输入。而self-attention的输入是同时输入,输出也是同时产生然后输出的。

如何在Self-Attention里面体现位置信息呢?就是使用Positional Encoding

也就是新引入了一个位置向量e^i,非常简单,如下图所示:

每一个位置设置一个vector,叫做positional vector,用e^i表示,不同的位置有一个专属的ei。

如果ai加上了ei,就会体现出位置的信息,i是多少,位置就是多少。

vector长度是人为设定的,也可以从数据中训练出来。

六、Self-Attention和RNN的区别

Self-attention和RNN的主要区别在于:

1.Self-attention可以考虑全部的输入,而RNN似乎只能考虑之前的输入(左边)。但是当使用双向RNN的时候可以避免这一问题。
2.Self-attention可以容易地考虑比较久之前的输入,而RNN的最早输入由于经过了很多层网络的处理变得较难考虑。
3.Self-attention可以并行计算,而RNN不同层之间具有先后顺序。

1.Self-attention可以考虑全部的输入,而RNN似乎只能考虑之前的输入(左边)。但是当使用双向RNN的时候可以避免这一问题。

比如,对于第一个RNN,只考虑了深蓝色的输入,绿色及绿色后面的输入不会考虑,而Self-Attention对于4个输入全部考虑

 2.Self-attention可以容易地考虑比较久之前的输入,而RNN的最早输入由于经过了很多层网络的处理变得较难考虑。

比如对于最后一个RNN的黄色输出,想要包含最开始的蓝色输入,必须保证蓝色输入在经过每层时信息都不丢失,但如果一个sequence很长,就很难保证。而Self-attention每个输出都和所有输入直接有关。

 3.Self-attention可以并行计算,而RNN不同层之间具有先后顺序。

Self-attention的输入是同时输入,输出也是同时输出。

参考:

第四节 2021 - 自注意力机制(Self-attention)(上)_哔哩哔哩_bilibili

(53条消息) Attention机制与Self-Attention机制的区别_At_a_lost的博客-CSDN博客_attention和self attention的区别

自注意力机制 - 知乎 (zhihu.com)

Self-Attention 自注意力机制 - 知乎 (zhihu.com)

【自然语言处理】:自注意力机制(self-attention)原理介绍 - Geeksongs - 博客园 (cnblogs.com)

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

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

相关文章

慌了!ChatGPT吃我饭,还要掀我碗?

ChatGPT面世,各种被AI取代“失业言论”笼罩在人们头顶,本文聚焦这一问题,推荐关注ChatGPT的小伙伴阅读。 一时间火爆全网的新晋网红——ChatGPT,就问:还有谁不认识? 谷歌计划在旗舰搜索引擎中添加对话式人…

GPT/GP2/GPT3

GPT,GPT-2,GPT-3 论文精读【论文精读】_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1AF411b7xQ?spm_id_from333.999.0.0&vd_source4aed82e35f26bb600bc5b46e65e25c22 笔记:李沐老师GPT系列讲解 - 知乎今天分享的是李沐大神讲解…

IT伦理与道德:Google的“不作恶”准则

不作恶(Do not be evil)是Google公司的一条不成文的口号和行为准则。对于这条准则,很多人是怀疑和嘲讽的态度,但“不作恶”确实是Google公司一直以来倡导和坚持的。在物欲横流的今天和尔虞我诈的商业竞争中,能够提倡这…

数智赋能 制造当自强

党的二十大报告指出,要“建设现代化产业体系”,“推动制造业高端化、智能化、绿色化发展”。随着新一代信息技术与制造业的持续深度融合,以高端化、智能化、绿色化为目标,为工业创新赋能既是大势所趋,又任重而道远。 制…

excel VBA 编程,数据处理,并画图,详细代码,加解释

基础的东西就不讲了,详情请看:入门瞧一瞧这里 本教程所用数据和代码连接:本节教程所需要的数据和代码 下载原始数据后打开, 右击下图的 Summary 并选择 View Cpde 查看代码 主要的代码在 Sheet3(RawData) 以及 Module1 中&#…

太实用了!Excel VBA常用代码!

前两天有两位朋友留言想收集一些VBA的常用代码,今天开始会陆续分享一些! 记得收藏好哦,因为今后你应用到稍大型Excel VBA程序时,这其中某些代码肯定会用到。 来看看都是哪些常用代码: 下面先举一个简单的例子&#xf…

用chatGPT写一段SAP的代码

ChatGPT 是 OpenAI 发布的最新语言模型,比其前身 GPT-3 有显著提升。与许多大型语言模型类似,ChatGPT 能以不同样式、不同目的生成文本,并且在准确度、叙述细节和上下文连贯性上具有更优的表现。它代表了 OpenAI 最新一代的大型语言模型&…

解密Prompt系列9. 模型复杂推理-思维链COT基础和进阶玩法

终于写了一篇和系列标题沾边的博客,这一篇真的是解密prompt!我们会讨论下思维链(chain-of-Thought)提示词究竟要如何写,如何写的更高级。COT其实是Self-ASK,ReACT等利用大模型进行工具调用方案的底层逻辑,因此在Agent调…

C++与C语言、python的区别? 信奥赛的有没有用? 如何进行编程学习规划?

问题罗列一下: C与C语言有什么区别,python与C的区别,及普及程度 信奥赛起源、存在的意义。 应该如何给孩子规划学习(什么年龄段学、学多久、每个学段该做什么) 不同学段参加什么比赛、结果能给孩子带来什么。 1、C与C语…

招聘 | 微软小冰-实习生-NLP、CV等算法岗

发布招聘—>加我即可 小冰AI招算法实习生啦! 1.参与面向虚拟人社交对话应用场景的需求分析及算法应用研究; 2.参与大规模预训练模型的架构设计,针对其在小样本/零样本/增量学习问题的应用潜力展开研究; 3.负责配合算法工程师和…

与 GPT-4 对打!谷歌推出新模型PaLM 2

来源:数据观综合(转载请注明来源) 编辑:蒲蒲 5月10日周三举行的谷歌年度开发者大会Google I/O 2023上,谷歌亮出了人工智能(AI)领域开发的最新成果。 谷歌CEO Sundar Pichai开场就指出&#xff0…

很多方面超过 GPT-4!谷歌推出新模型PaLM 2

来源:数据观综合(转载请注明来源) 编辑:蒲蒲 5月10日周三举行的谷歌年度开发者大会Google I/O 2023上,谷歌亮出了人工智能(AI)领域开发的最新成果。 谷歌CEO Sundar Pichai开场就指出&#xff0…

4月21日 PhD Debate预告 | 因果推理(Causal Inference)与时间序列(Time Series)

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 2023年4月21日10:00,PhD Debate第十五期,题为“因果推理(Causal Inference)与时间序列(Time Series)” 特别邀请了圣地亚哥加利福尼亚大学…

Windows 98 发布 | 历史上的今天

整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来。 今天是 2023 年 6 月 25 日,在 1951 年的这一天,世界上第一部彩色电视节目播出。电视经过了许多年的发展,人类的娱乐途径随着互联网的到来变…

跨境电商如何通过实时聊天服务改善客户体验?

关键词:跨境电商,实时聊天,客户服务 实时聊天是客户从跨境电商卖家那里获得即时帮助的沟通渠道。它促进了客户与跨境电商品牌人工代理之间的实时1:1交互,以解决客户问题。 企业通常在其网站上嵌入实时聊天支持,使网站…

SaleSmartly聊天机器人如何帮助您的电商业务

从基于规则的机器人到虚拟助手,聊天机器人正在成为网络交互的标准。越来越多的企业正在使用它们来吸引客户、改善客户服务并增强用户体验。现在有非常多的软件也提供聊天机器人的帮助,比如SaleSmartly(ss客服),本文以它…

扬帆际海:shopee跨境电商客服回复流程

在虾皮这个平台上客服的工作重要性比国内电商的客服重要性大很多。很多时候如果客服沟通不畅就会有各种麻烦,毕竟国内跟海外都是有语言差异的,如果不好好处理,遇到客户投诉,可能会导致封店。shopee售后处理不好会有什么影响&#…

独立站电商优选的客服工具

遇到难题,寻找在线客服肯定是解决问题的首选途径了。但大多数独立站跨境电商网站的客服响应速度很难达到及时响应,一般普遍响应的时间从十几分钟到几小时、几十小时不等,甚至还有客服处于‘失联’状态。 去年黑五大促,Louella在某…

除了ChatGPT,还有哪些好玩的AI?

随着人工智能技术的不断发展,越来越多的人开始对其产生了浓厚的兴趣。为了满足人们的需求,许多公司和网站推出了各种免费好玩的AI应用程序。尤其是ChatGPT出来后,彻底大爆发 “我把这一时刻称为人工智能应用的寒武纪大爆发,”-Ins…

博士申请 | 香港中文大学(深圳)宋方达老师组招收贝叶斯统计方向博士生

合适的工作难找?最新的招聘信息也不知道? AI 求职为大家精选人工智能领域最新鲜的招聘信息,助你先人一步投递,快人一步入职! 香港中文大学(深圳) 香港中文大学(深圳)是一…