第六章 深度学习中的注意力机制

系列文章目录

第一章 机器学习技术分类

第二章 深度学习基础——层和函数

第三章 卷积神经网络模型的发展

第四章 ResNet

第五章 MobileNet

第六章 深度学习中的注意力机制


目录

系列文章目录

前言

一、经典注意力框架

1.自主性与非自主性注意力

2.非参数注意力汇聚:Nadaraya-Watson 核回归

3.带参数的注意力汇聚

4.注意力评分函数

4.1 加性注意力

4.2 缩放点积注意力

​4.3 mask softmax

 二、Seq2Seq中的注意力

1.Seq2Seq框架

​​​​​​​2.Bahdanau attention

​​​​​​​3.Seq2Seq中的attention

三、Transformer中的注意力

1.Scaled Dot-product Attention

​​​​​​​2.Multi-head Attention

参考文献

总结


前言

        灵长类动物的视觉系统接受了大量的感官输入,这些感官输入远远超过了大脑能够完全处理的程度。然而,并非所有刺激的影响都是相等的。意识的聚集和专注使灵长类动物能够在复杂的视觉环境中将注意力引向感兴趣的物体,例如猎物和天敌。只关注一小部分信息的能力对进化更加有意义,使人类得以生存和成功。

        Attention 机制很像人类看图片的逻辑,当我们看一张图片的时候,无法同时仔细观察图片中的一切,只能聚焦到某一个局部。通常我们大脑在简单了解眼前的场景后,能够很快把注意力聚焦到最有价值的局部来仔细观察,从而作出有效判断。将有限的注意力集中在重点信息上,可以节省资源,快速获得最有效的信息。

        Attention 机制最早是在计算机视觉里应用的,随后在 NLP 领域也开始应用了。因为 2018年BERT和GPT的效果出奇的好,进而走红,Transformer和 Attention 这些核心开始被大家重点关注。

一、经典注意力框架

        自经济学研究稀缺资源分配以来,人们正处在“注意力经济”时代,即人类的注意力被视为可以交换的、有限的、有价值的且稀缺的商品。许多商业模式也被开发出来去利用这一点:在音乐或视频流媒体服务上,人们要么消耗注意力在广告上,要么付钱来隐藏广告;为了在网络游戏世界的成长,人们要么消耗注意力在游戏战斗中,从而帮助吸引新的玩家,要么付钱立即变得强大。总之,注意力不是免费的。

        注意力是稀缺的,而环境中的干扰注意力的信息却并不少。比如人类的视觉神经系统大约每秒收到108位的信息,这远远超过了大脑能够完全处理的水平。幸运的是,人类的祖先已经从经验(也称为数据)中认识到“并非感官的所有输入都是一样的”。在整个人类历史中,这种只将注意力引向感兴趣的一小部分信息的能力,使人类的大脑能够更明智地分配资源来生存、成长和社交,例如发现天敌、找寻食物和伴侣。

1.自主性与非自主性注意力

        非自主性的注意力更依赖于突出性,自主性注意力则更依赖于任务的意志提示。

        非自主性的注意力可以简单地使用参数化的全连接层,甚至是非参数化的最大汇聚层或平均汇聚层。

        在注意力机制中,非自主性提示称为键(key),感官输入被称为值(value),每个值都与一个键配对。自主性提示被称为查询(query),注意力机制通过注意力汇聚(attention pooling)将查询(自主性提示)和键(非自主性提示)结合在一起,实现对值(感官输入)的选择倾向。

2.非参数注意力汇聚:Nadaraya-Watson 核回归

        查询(自主提示)和键(非自主提示)之间的交互形成了注意力汇聚,注意力汇聚有选择地聚合了值(感官输入)以生成最终的输出。

        任务:已知xi与yi,回归曲线y=f(x)

        Nadaraya-Watson核回归

        将查询x与键xi之间的关系模型建模为注意力权重,这个权重将被分配给每一个值yi。

        Nadaraya-Watson核回归等效于一个插值,如果将核函数看做“距离”,则插值权重就是距离占比。如果一个键xi越是接近给定的查询x,那么分配给这个键对应值yi的注意力权重就会越大,也就“获得了更多的注意力”。

        Nadaraya-Watson核回归是一个非参数模型。 因此,上面描述的是非参数的注意力汇聚(nonparametric attention pooling)模型。

3.带参数的注意力汇聚

        带参数版本的Nadaraya-Watson核回归

        使用高斯核来对查询和键之间的关系建模,然后把这个函数的输出结果输入到softmax函数中进行运算,将得到与键对应的值的概率分布(即注意力权重)。最后,注意力汇聚的输出就是基于这些注意力权重的值的加权和。

​​​​​​​4.注意力评分函数

 

​​​​​​​4.1 加性注意力

​​​​​​​4.2 缩放点积注意力

​4.3 mask softmax

        在某些情况下,并非所有的值都应该被纳入到注意力汇聚中。例如文本序列中没有意义的特殊词元。为了仅将有意义的词元作为值来获取注意力汇聚,可以指定一个有效序列长度(即词元的个数),以便在计算softmax时过滤掉超出指定范围的位置。任何超出有效长度的位置都被掩蔽并置权重为0。

        比如一个batch_data有10个数据,每个数据是一个句子,每个句子不可能是一样长的。短的句子需要填充0元素,同时有lengths就专门记录每个句子的实际长度。对每一个数据中大于length的元素,在softmax之前使用-INF填充。

 二、Seq2Seq中的注意力

​​​​​​​1.Seq2Seq框架

        seq2seq是一种常见的NLP模型结构,全称是:sequence to sequence,翻译为“序列到序列”。顾名思义:从一个文本序列得到一个新的文本序列。典型的任务有:机器翻译任务,文本摘要任务。谷歌翻译在2016年末开始使用seq2seq模型,并发表了2篇开创性的论文:Sutskever等2014年发表的Sequence to Sequence Learning with Neural Networks和Cho等2014年发表的Learning Phrase Representations using RNN Encoder–Decoder for Statistical Machine Translation。

        上图为深入学习机器翻译任务中的seq2seq模型。seq2seq模型中的编码器和解码器一般采用的是循环神经网络RNN(Transformer模型还没出现的过去时代)。编码器将长度可变的序列转换为固定形状的context向量,然后解码器根据context向量解码出英语单词序列。编码器和解码器之间只有一个context向量来传递信息,而这个context向量的长度是基于编码器RNN的隐藏层神经元数量的(在实际应用中,可能是256、512或1024)。

​​​​​​​2.Bahdanau attention

        基于RNN的seq2seq模型的编码器将所有信息都编码到了一个context向量中,便是这类模型的瓶颈。一方面单个向量很难包含所有文本序列的信息;另一方面当输入信息太长时,会丢失掉一些信息。

        面对以上问题,Bahdanau等2014发布的Neural Machine Translation by Jointly Learning to Align and Translate 和 Luong等2015年发布的Effective Approaches to Attention-based Neural Machine Translation 两篇论文中,提出了一种叫做注意力attetion的技术。通过attention技术,seq2seq模型极大地提高了机器翻译的质量。

​​​​​​​3.Seq2Seq中的attention

        带注意力的Seq2Seq与经典的Seq2Seq模型主要有两个不同点:

        首先,编码器会把更多的数据传递给解码器。编码器把所有时间步的hidden state传递给解码器,而不是只传递最后一个 hidden state。

        其次,解码器在产生输出之前,做了一个额外的attention处理。attention注意力机制,使得seq2seq模型可以有区分度、有重点地关注输入序列。

        带注意力的seq2seq模型解码器全流程:

        1>注意力模型的解码器RNN的输入包括:一个word embedding 向量,和一个初始化好的解码器 hidden state,图中是hinit。

        2>RNN 处理上述的 2 个输入,产生一个输出和一个新的hidden state,图中为h4。

      

        4>我们把 h4和C4拼接起来,得到一个橙色向量。

        5>我们把这个橙色向量输入一个前馈神经网络,根据前馈神经网络的输出向量得到输出单词:假设输出序列可能的单词有N个,那么这个前馈神经网络的输出向量通常是N维的,每个维度的下标对应一个输出单词,每个维度的数值对应的是该单词的输出概率。

        6>在下一个时间步重复1-6步骤。

三、Transformer中的注意力

1.Scaled Dot-product Attention

        虽然 Attention 有许多种实现方式,但是最常见的还是 Scaled Dot-product Attention。

        Scaled Dot-product Attention 共包含 2 个主要步骤:

        1>计算注意力权重:使用某种相似度函数度量每一个query向量和所有key向量之间的关联程度。对于长度为m的Query序列和长度为n的Key序列,该步骤会生成一个尺寸为m*n的注意力分数矩阵。

        特别地,Scaled Dot-product Attention使用点积作为相似度函数,这样相似的queries和 keys会具有较大的点积。

        由于点积可以产生任意大的数字,这会破坏训练过程的稳定性。因此注意力分数还需要乘以一个缩放因子来标准化它们的方差,然后用一个softmax标准化。这样就得到了最终的注意力权重wij,表示第i个query向量与第j个key向量之间的关联程度。

        2>更新 token embeddings:将权重wij与对应的value向量v1,... ,vn相乘以获得第i个query向量更新后的语义表示。

        上述流程可以表示为:

​​​​​​​2.Multi-head Attention

        Scaled Dot-product Attention的做法会为上下文中的相同单词分配非常大的分数。而在实践中,相关词往往比相同词更重要。因此,多头注意力 (Multi-head Attention) 出现了。

       

参考文献

10. 注意力机制 — 动手学深度学习 2.0.0 documentation

https://easyaitech.medium.com/

https://github.com/datawhalechina/learn-nlp-with-transformers/blob/main/docs/

第三章:注意力机制 · Transformers快速入门


总结

        attention可以简单理解为:一种有效的加权求和技术,其艺术在于如何获得权重,也就是如何设计注意力评分函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值