【论文解读】A review on the attention mechanism of deep learning

本文涉及的产品
RDS DuckDB + QuickBI 企业套餐,8核32GB + QuickBI 专业版
简介: 注意力已经成为深度学习中最重要的概念之一。本文旨在对近年来提出的最新注意力模型作概述。我们建立了一个较为通用的模型,此外根据四个标准即注意力的柔软性、输入特征的形式、输入表示和输出表示来对当前注意力模型进行分类。最后讨论了注意力在深度学习可解释上的作用。

🍥关键词:注意力机制、文本分类
🍥发表期刊:Neurocomputing 2021
🍥原始论文:A review on the attention mechanism of deep learning

Abstract

注意力已经成为深度学习中最重要的概念之一。本文旨在对近年来提出的最新注意力模型作概述。我们建立了一个较为通用的模型,此外根据四个标准即注意力的柔软性、输入特征的形式、输入表示和输出表示来对当前注意力模型进行分类。最后讨论了注意力在深度学习可解释上的作用。

一、Introduction

注意力是人类利用有限的处理资源从海量信息中快速选择高价值信息的一种手段,从而提高了知觉信息处理的效率和准确性。

人类的注意力机制有两类,拿人类谈话举例,人在谈话过程中更加注意响亮和想要听的信息。前者称为显著性注意,由外部刺激驱动,类似Deep Learning中的Pooling和Gate,后者称为集中注意,由自身预定目的决定,类似Deep Learning中的下游任务。Deep Learning中主要使用的也是根据特定的任务设计的。

注意力机制也可以看做是资源分配的手段,来解决信息过载问题。在计算资源有限的情况下来处理更多的重要信息

注意力机制在DL可解释上也有一定的作用

二、Attention mechanism

2.1 An example of attention model:RNNsearch

一个使用Attention的机器翻译模型
image.png

编码器

由BiRNN组成

  • 计算BiRNN输入序列的隐藏状态

$$ (h_1,…,h_t)=BiRNN(x_1,…,x_T) $$

  • 将正反向RNN提取的Hidden states连接在一起称之为annotation

$$ h_i={[{h_i}^{⊤};h_i]}^⊤ $$

解码器

由Attention块和RNN组成

  • 计算第单个注意力权重,其中a是可学习参数

$$ e_{tj}=a(s_{t-1},h_j) $$

  • 计算最终单个注意力权重

$$ {α}_{tj}=\frac {exp({e}_{tj})} {\sum ^{T}_{k=1} {exp({e}_{tk})}} $$

  • 计算上下文向量

$$ {c}_{t}=\sum ^{T}_{j=1} { {α}_{tj}h_j} $$

最终计算输出值

$$ p(y_t∣y_1,…,y_{t−1},x)=RNN(c_t) $$

通过这样的方式,源句子信息可以分布在整个序列中,而不是通过编码器将所有信息编码成一个固定长度的向量,解码器可以在每个时间步有选择地检索它。

2.2 A unified attention model

我们总结了一般的Attention模型,它的Attention机制计算分两步:输入信息+计算注意力分布+计算上下文向量。其模型如下

image.png

  • K:原始数据特征向量,称之为key,如图像区域特征、词嵌入、RNN隐藏层状态,RNNsearch中的annotation
  • Q:任务表示向量,称之为query,如RNNsearch中的$s_{t-1}$
  • V:原始数据特征向量新的表示,称之为value,往往用于神经网络计算上下文向量,value的每个值都与key的每个值对应,RNNsearch中的annotation
  • f:评分函数,评价query和key之间的相关性,计算得出能量分数e,能量分数e反映了query相对于key在决定下一个输出中的重要性

$$ e=f(q,K) $$

常见的f函数如下
image.png

  • g:注意力分布函数,可以将能量分数e映射到注意力权重α

常见的g就是softmax,能够实现归一化,但是有一个缺点是softmax(z)>0恒成立,在有些需要稀疏概率分布的应用就不实用了,因此有人提出了sparsemax,能够使得某些输出变量分配的概率为0,其函数图像如下

image.png

  • ϕ:将α和v的乘积归成一个向量

$$ c=ϕ({α_i},{v_i}) $$

$$ z_i=α_iv_i\,\,\,and\,\,\,c=\sum ^{n}_{i=1} { {z}_{i}} $$

此外,对于注意力机制的性能指标是非常重要的,最常见的方法就是消融实验(量化),或者可视化注意力权重评估(非量化),如下图

image.png

三、Taxonomy of attention

我们根据四个指标对注意力机制进行分类,如下图
image.png
image.png

3.1 The softness of attention

上述提到的统一注意力模型的方式是软注意力,软注意力是指用所有Keys的加权平均来构建上下文向量。而硬注意力是随机采样Keys,虽计算成本降低,但随机性强使得难以优化,一般用最大近似变量下限或REINFORCE来训练

在此基础上,Luong还提出了机器翻译的全局注意和局部注意机制。全局注意类似软注意,而局部注意是软注意和硬注意的结合,因为它只考虑词源的一个子集。

3.2 Forms of input feature

根据输入特征是否为逐项序列,注意力机制可分为逐项式和位置式。逐项式如NLP中的文本,每个词之间是有逐项序列关系。而位置式如CV中的图像,需要先通过如卷积来提取非逐项的特征。

3.3 Input representation

普遍的注意力模型输入有两个两个特征:①单一的输入和相应的输出序列 ②Key和Query属于两个独立的序列,这类注意力称之为distinctive attention

也有人提出了共同注意力(co-attention),以下是一个用于视觉问题回答任务的多输入注意力模型,该模型对图像和问题进行联合重构。共同注意力可以联合或交替进行,前者同时产生图像和问题注意,后者依次交替产生图像和问题注意。

image.png

此外,也有人提出了多层注意力,其意为注意力权重不仅可以从原始输入序列中计算出来,还可以从不同的抽象层次中计算出来。如Yang提出的文档分层注意力网络HAM,其包含词级和句级两个层次的注意力机制,先将重要词聚集到一个句子中,再将重要句子聚集到一篇文档中。

3.4 Output representation

注意力的输出表示有两大类,分别是单输出注意力和多输出注意力,单输出注意力即每个时间步有唯一的特征表示。多输出注意力又可细分为多头和多维注意力,其模型如下

image.png

多头注意力是将输入序列(Q,K,V)线性投射到多个子空间计算注意力,最后拼接起来,由于每个头都是在不同子特征空间,因此其泛化能力较好。至于多维注意力就是将单点的注意力分数换成向量注意力分数,由于每个注意力分数包含的信息更多了,自然可能效果会更好一些,尤其在情感分类上有一定借鉴意义。此外,前人提出了增加Frobenius惩罚,来强制区分相关模型,在情感分类上具有一定效果。

四、Network architectures with attention

以下介绍三种不同的注意力相关的神经网络结构

4.1 Encoder-decoder

最常见的自然是编码器-解码器网络,将输入序列x编码成一个固定长向量c,最后将其解码成新长度的序列y

image.png

4.2 Memory networks

记忆网络一般做法是引入了外部辅助记忆单元,在有需要时读取。而与注意力结合后,只需将辅助记忆单元替代key,随后通过注意力机制来匹配内容。

例子是以下的端到端记忆网络,它考研多次读取外部信息。其核心思想为将输入集转化为两个外部存储单元,一个用于寻址,一个用于输出,因此可以将这种注意力形式看作:键值对注意力机制。有意思的是,他们并非是建立在单个序列上,而是用两个外部记忆单元在一个大序列数据库上建立注意力模型,可以看作一个小型Hadoop工程,有信息存储和计算,网络的容量可以通过网络参数的少量增加而大量增加

4.3 Networks without RNNs

  • (a)最经典的RNN+Attention+Encoder-Decoder框架,其问题是处理过程不可并行
  • (b)CNN++Attention+Encoder-Decoder框架,其优点是不依赖于前一个时间步计算,允许并行计算
  • (c)当前大火的Transformer,并行计算效率更高
    image.png

五、Applications

5.1 Applications in computer vision

最经典的CV中的注意力机制是空间注意力Spatial attention,它可以学习到图像应该被关注的部分,直观的表现就是裁剪图像将关键区域留下

image.png

Channel attention通道注意力,对图像的每个Channel计算注意力得分

image.png

Non-local attention非局部注意力,是self-attention在CV领域的应用,通过计算特征图中每个空间点之间的相关矩阵得到注意力掩码,然后由注意力引导密集的上下文信息进行融合

image.png

5.2 Applications in natural language processing

  • 机器翻译任务,在翻译过程中有选择性的关注源句子的部分内容
  • 文本分类任务,主要使用自注意力机制,在此基础上还可以和其他注意力机制进行结合,如分层自我注意、多维自我注意
  • 预训练模型,主要是Transformer注意力发展而成的Bert体系

六、Attention for interpretability

这里有两种声音,一种是赞成注意力来作为解释神经网络的工具,因为它有注意力得分,非常的直观,如下图

image.png

但是也有反对的声音,理由也很简单,不同的注意力权重分布居然产生了相同的预测结果,这侧面说明注意力和其他的课解释性指标是有些区别,只能作为中间成分重要性的噪声预测器罢了。

因此该话题还是有待争议的。

七、Challenges and prospects

作者提出了Attention可以改进空间的5个方向

  • 自注意力机制中query和key是否需要独立存在
  • 构造注意力分布函数来降低注意力计算的复杂性
  • 将NLP领域中的自注意力机制应用到CV领域中
  • 自适应机制和注意力机制的结合来实现自动形成分层注意力,无需手动设计每层结构
  • 更加有效的性能指标来评价注意力机制

八、Conclusion

博主看完这篇文章已是2023年2月了,虽时隔近一年,注意力机制在当下仍有很强的研究意义。由于是文本分类的专题,因此在此总结文本分类相关的借鉴意义

  • 当下主流的还是使用自注意力self-attention来解决文本分类问题,在此基础上,可以往分层自我注意和多维自我注意研究
  • 可以往共同注意力co-attention的研究,比如标签和文本之间互相做注意力
  • 多维注意力中加上Frobenius等惩罚机制来提高模型的抗拟合性
目录
相关文章
|
机器学习/深度学习 人工智能 自然语言处理
视觉 注意力机制——通道注意力、空间注意力、自注意力
本文介绍注意力机制的概念和基本原理,并站在计算机视觉CV角度,进一步介绍通道注意力、空间注意力、混合注意力、自注意力等。
15644 58
|
机器学习/深度学习 人工智能 数据可视化
ShuffleNet:极致轻量化卷积神经网络(分组卷积+通道重排)
我们引入了一个高效计算的CNN结构名字叫做shuffleNet,这个结构被设计用来解决部署算力非常有限的移动设备问题,这个新的结构使用了两个新的操作,pointwise group convolution 和 channel shuffle能够在极大减少计算量的同时保持一定的精度。我们在ImageNet classification和MS COCO目标检测数据集上做实验论证了ShuffleNet和其他的结构相比有着很好的性能。比如,相比于mobilenet,shufflenet在ImageNet 分类任务上有着更低的top-1错误率(错误率是7.8%)需要的计算量为40MFLOPs。在一个AR
4052 0
ShuffleNet:极致轻量化卷积神经网络(分组卷积+通道重排)
|
算法 数据库 计算机视觉
Dataset之COCO数据集:COCO数据集的简介、下载、使用方法之详细攻略
Dataset之COCO数据集:COCO数据集的简介、下载、使用方法之详细攻略
|
安全 大数据 云计算
内附PPT下载 | 肖力:企业安全体系发展与最佳实践
阿里巴巴副总裁、阿里云安全事业部总经理、阿里巴巴集团第一位安全工程师肖力为大家带来企业安全体系发展与最佳实践的介绍。内容包括企业安全体系的演变,阿里在整个企业安全体系各个基础风险域当中的一些最佳实践,以及云计算对安全体系的影响。
2700 0
|
机器学习/深度学习 算法 计算机视觉
卷积神经网络(CNN)的工作原理深度解析
【6月更文挑战第14天】本文深度解析卷积神经网络(CNN)的工作原理。CNN由输入层、卷积层、激活函数、池化层、全连接层和输出层构成。卷积层通过滤波器提取特征,激活函数增加非线性,池化层降低维度。全连接层整合特征,输出层根据任务产生预测。CNN通过特征提取、整合、反向传播和优化进行学习。尽管存在计算量大、参数多等问题,但随着技术发展,CNN在计算机视觉领域的潜力将持续增长。
1531 3
|
机器学习/深度学习 数据采集 人工智能
深度学习中的大模型「幻觉」问题:解析、原因及未来展望
深度学习中的大模型「幻觉」问题:解析、原因及未来展望
3317 0
|
机器学习/深度学习 边缘计算 自动驾驶
【初探GSConv】轻量化卷积层直接带来的小目标检测增益!摘录于自动驾驶汽车检测器的架构
【初探GSConv】轻量化卷积层直接带来的小目标检测增益!摘录于自动驾驶汽车检测器的架构
1371 0
【初探GSConv】轻量化卷积层直接带来的小目标检测增益!摘录于自动驾驶汽车检测器的架构
|
安全 Linux 网络安全
【工具使用】几款优秀的SSH连接客户端软件工具推荐FinalShell、Xshell、MobaXterm、OpenSSH、PUTTY、Terminus、mRemoteNG、Terminals等
【工具使用】几款优秀的SSH连接客户端软件工具推荐FinalShell、Xshell、MobaXterm、OpenSSH、PUTTY、Terminus、mRemoteNG、Terminals等
144353 0
|
Linux iOS开发 MacOS
[已解决]ModuleNotFoundError: No module named ‘tqdm‘
[已解决]ModuleNotFoundError: No module named ‘tqdm‘
|
机器学习/深度学习 计算机视觉
【YOLOv8改进】MPDIoU:有效和准确的边界框损失回归函数 (论文笔记+引入代码)
YOLO目标检测专栏介绍了YOLO的有效改进和实战案例,包括卷积、主干网络、注意力机制和检测头的创新。提出了一种新的边界框回归损失函数MPDIoU,它基于最小点距离,能更好地处理不同宽高比的预测框,包含重叠、中心点距离和尺寸偏差的全面考虑。MPDIoU损失函数在YOLACT和YOLOv7等模型上的实验显示了优于现有损失函数的性能。此外,还介绍了WIoU_Scale类用于计算加权IoU,以及bbox_iou函数实现不同IoU变体的计算。详细实现和配置可在相应链接中查阅。