注意力机制 ——学习笔记


一、生物神经网络的注意力

1.1 生物注意力的种类

视觉注意力

       注意力是指人的心理活动指向和集中于某种事物的能力。比如我们当前看到的画面中,除了我们想要关注的目标本身外,还有许多我们不需要关注的环境或其他对象也占据了很大的画面,但是这毫不影响我们对于想要关注的对象的关注度。在这个过程中,我们的进化系统早已经为我们进化生成了强大的注意力机制,也就是过滤无关信息的能力。

听觉注意力

        同样除了视觉方向的注意力,在听觉触觉等其他方向,生物也具有注意力。比如我们走在路上听到的声音来自四面八方,而我们却能够清楚的辨别出身边人说出的话,而不受周围环境的噪声影响,而目前有些较为老旧的语音识别设备是不具有这种抗噪能力的,也就是说不具备像人类的听觉注意力机制。还可以举一个例子,在开会的时候,总有人在下面窃窃私语,而不受到会议发言人的声音影响,这也来源于注意力机制。

语言注意力

        在人类的自然语言方向,注意力的应用更加的广泛,一篇长篇大论,有人总能快速读完,提取出重要信息,同样也是使用了带有注意力的特征提取能力。在辩论的时候,总有人能够抓住对方话语的漏洞予以反击;在会议讨论中,总有人能够对大家的发言直击重点,提出总结性发言。其实这些案例都是注意力机制的功劳,应用好注意力,会使人类处理事务的能力大大提升。

1.2 生物注意力的优势

        提高信息提取速度、增加信息提取的准确度、增大早期信息保存的完整度。

1.3 注意力与记忆力的关系

        注意力是记忆力的基础,记忆力是注意力的结果。没有良好的注意力就没有良好的记忆力,良好的记忆力是建立在良好的注意力基础上的。回忆会提高对于某事物的记忆力, 相当于增加了对某事物的注意力。

1.4 人工神经网络的注意力

        人工神经网络的注意力机制的灵感来源可以归结到生物神经网络的注意力机制上来,功能与生物神经网络的注意力机制一样。
        没有注意力的人工神经网络,是对当前的信息平均的提取特征,这种方法就类似人类看到了画面,眼睛却没有聚焦一样。虽然也提取到了事物的特征,但是这种方法,第一是速度慢,第二是准确度不高,第三是很容易遗忘以前的信息。
        在目前的神经网络模型中,可以将maxpooling和gating机制近似地看作是自下而上的基于显著性的注意力机制。

二、为什么要使用注意力?

2.1 从算力的角度分析

计算能力的限制: 当要记住很多信息,模型就要变得更复杂,然而目前计算能力依然是限制神经网络发展的瓶颈。

2.2 从算法角度分析

优化算法的限制:虽然局部连接、权重共享以及pooling等优化操作可以让神经网络变得简单一些,有效缓解模型复杂度和表达能力之间的矛盾;但是,如循环神经网络中的长距离以来问题,信息“记忆”能力并不高。

三、注意力的种类

3.1 普通注意力

注意力公式:
在这里插入图片描述
        Q是查询向量、K是键向量、V是值向量。Q、K、V来自不同的输入和输出。
        将输入信息X看做是存储器中存储的内容,元素由地址Key (键)和值Value组成,当前有个Key=Query的查询,目标是取出存储器中对应的Value值,即Attention值。
        一般把编码器的输入数据称为被查询的键向量K,把解码器的输出称为查询到的向量Q,(Q.kT)就是内积,在实际神经网络模型中Q和K都是矩阵(包含批次),所以K需要转置。

        所以给神经网络加注意力的目的就是不光要神经网络的输出关注全局信息,也就是关注概要,也要关注局部细节信息,也就是注意力信息。
        SEQ+注意力+随机向量(词之间没有关系,词的向量是随机的),这种模型效果很差,一般不怎么用。
        SEQ+注意力+词向量,这种模型早期(2015 年之前)被用作各种简单的翻译,但是效果依然不够好,对于长篇的文章翻译效果很差。

3.2 自注意力

        自注意力:关注一句话内部词与词之间的关系,当Q、K、V都是同一句话中的词的时候,就是自注意力。当把一句话的每个词都定为Q和K的时候,得到的就是Q=K=V,那么什么时候会关注词内部之间的关系呢?比如他打了他,就需要关注词内部的关系,很明显两个他是指不同的人。

        所谓Self Attention,其实就是Attention(X,X,X), X就是前面说的输入序列。Self-attention即K=V=Q,例如输入一个句子,那么里面的每个词都要和该句子中的所有词进行attention计算。目的是学习句子内部的词依赖关系,捕获句子的内部结构。更准确来说,Google 所用的是Self Multi-Head Attention.

3.3 单头(自)注意力

        目前已知生物都是单头。同一时间只能关注一个目标。其重点是关注输入和输出之间的相关性。
在这里插入图片描述

3.4 多头(自)注意力

        多个头就可以产生多个注意力。同一时间可以关注多个目标。其重点关注多个输入和输出之间的相关性。
        把一个注意力变成多个注意力,通过神经网络变换,把一句话的向量分成Q、 K、V三部分大小和原语句一样的向量,比如长度为4向量,转换后为[4,4,4],接着将每部分向量经过神经网络再分成4个长度的值,就是[[4, 4,4,4][4,4,4,4][4,4,4,4]],然后再让Q、K、V中每个对应位置的值做注意力,每次拿到的对应位置的三个值Q、K、V就是一组的注意力输入值。总共4组Q、K、V的值。多头注意力就是通过一次计算, 同时拿到这4组注意力。最后对4组注意力拼接,得出总的多头注意力。

        多头注意力其实就是希望通过一次计算同时拿到这句话中的多个细节。回顾传统的注意力模型,每次计算只能拿到对于一个词的注意力,想要拿到多个词之间的注意力,就需要进行多次的计算。同时由于多头.注意力是通过神经网络来分配头的,所以多头注意力.有了学习的过程,能够让每个头的注意力不一样,还获得了学习能力,得到的注意力更好。而传统的注意力只有一个计算过程。

        多头attention (Multi-head attention) : Query, Key, Value 首先进过一个线性变换,然后输入到放缩点积attention,注意这里要做h次,也就是所谓的多头,每一次算一个头, 头之间参数不共享,每次Q,K, v进行线性变换的参数是不一样的。然后将h次的放缩点积attention结果进行拼接,再进行一次线性 变换得到的值作为多头attention的结果。

        多头的本质是多个独立的attention计算,作为一个集成的作用,防止过拟合;从attention is all your need论文中输入序列是完全一样的;相同的Q,K,v,通过线性转换,每个注意力机制函数只负责最终输出序列中一个子空间,即1/head,而且互相独立。

        注意力为什么要学习,加了神经网络的注意力模型就代替了原来的RNN模型。原来的做法是RNN+注意力+词向量,现在只需要注意力+词向量。原来是RNN来学习词的向量之间的关系,然后再通过注意力分配侧重点,现在一个注意力,既可以学习词之间的关系,还可以保证学习的侧重点,而且这种关系比以往的RNN+注意力更加紧密。一旦注意力模型具有了学习能力,有它就足够了。多头注意力内部就是在做自注意.力,所以多头注意力包含了自注意力。

四、注意力的位置

4.1 注意力和模型分离

        计算量小,容易训练,速度快,效果一般,图像注意力一般都加在模型外面,也就是注意力和模型分开训练。训练注意力会生成注意力蒙板,加注意力的地方就是高亮部分,然后将蒙板和模型合起来使用。图像注意力一般在通道上添加,将NCHW转成NHWC,然后将NHW合并为N。

4.2 注意力和模型一体

        计算量大,训练困难,速度慢,效果很好,自然语义方面的模型一般都将注意力和模型融合在一起训练,这样效果会更好。

五、注意力的模型

自然语义方向

  1. Transformer模型
  2. Bert模型
  3. GPT模型

视觉方向

  1. 视觉注意力相关论文
    ● Look Closer to See Better: Recurrent Attention Convolutional Neural Network for Fine-grained Image Recognition .
    ● Multiple Granularity Descriptors for Fine-grained Categorization
    ● Recurrent Models of Visual Attention
    ● Multiple 0bject Recognition with Visual Attention
    ● RARE2012: A multi-scale rarity-based saliency detection with its comparative statistical analysis

  2. RA-CNN(循环注意神经网络)
            RA-CNN模型主要使用了递归方法来分析局部信息,从局部的信息中提取必要的特征。同时,在RA-CNN 中的子网络( sub-network)中存在分类结构,也就是说从不同区域的图片里面,都能够得到一个对鸟类种类划分的概率。
            除此之外,还引入了attention 机制,让整个网络结构不仅关注整体信息,还关注局部信息,也就是所谓的Attention Proposal Sub-Network (APN)。这个APN结构是从整个图片(full-image) 出发,迭代式地生成子区域,并且对这些子区域进行必要的预测,并将子区域所得到的预测结果进行必要的整合,从而得到整张图片的分类预测概率。
            RA-CNN模型并没有在图像视觉领域流行起来,其原因之一是注意力网络训练起来比较困难,由于在RA-CNN中,Q、K、V的值是被放在一个神经网络中,让网络自己去学习的,相当于要训练两个模型。另外增加了注意力的模型在使用过程中,由于参数量和计算量都增加了不少,会降低侦测速度。

六、注意力的应用

(1)注意力在图像视觉方向的应用

  1. 图像检测方向
  2. 图像分类方向
  3. 图像生成方向
  4. 图像分割方向

(2)注意力在自然语义处理方向的应用
(3)语义方向的应用
(4)强化学习方向的应用
(5)图模型方向的应用(图注意力)

七:SEQ2SEQ注意力机制

在这里插入图片描述

  1. 将query和每个key进行相似度计算得到权重,常用的相似度函数有点积,拼接,感知机等。
  2. 使用一个softmax函数对这些权重进行归一化。
  3. 权重和相应的键值value进行加权求和得到最后的attention。
  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值