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

本文涉及的产品
实时计算 Flink 版,1000CU*H 3个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
实时数仓Hologres,5000CU*H 100GB 3个月
简介: 注意力已经成为深度学习中最重要的概念之一。本文旨在对近年来提出的最新注意力模型作概述。我们建立了一个较为通用的模型,此外根据四个标准即注意力的柔软性、输入特征的形式、输入表示和输出表示来对当前注意力模型进行分类。最后讨论了注意力在深度学习可解释上的作用。

🍥关键词:注意力机制、文本分类
🍥发表期刊: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角度,进一步介绍通道注意力、空间注意力、混合注意力、自注意力等。
11641 57
|
算法 数据库 计算机视觉
Dataset之COCO数据集:COCO数据集的简介、下载、使用方法之详细攻略
Dataset之COCO数据集:COCO数据集的简介、下载、使用方法之详细攻略
|
机器学习/深度学习 人工智能 数据可视化
ShuffleNet:极致轻量化卷积神经网络(分组卷积+通道重排)
我们引入了一个高效计算的CNN结构名字叫做shuffleNet,这个结构被设计用来解决部署算力非常有限的移动设备问题,这个新的结构使用了两个新的操作,pointwise group convolution 和 channel shuffle能够在极大减少计算量的同时保持一定的精度。我们在ImageNet classification和MS COCO目标检测数据集上做实验论证了ShuffleNet和其他的结构相比有着很好的性能。比如,相比于mobilenet,shufflenet在ImageNet 分类任务上有着更低的top-1错误率(错误率是7.8%)需要的计算量为40MFLOPs。在一个AR
3151 0
ShuffleNet:极致轻量化卷积神经网络(分组卷积+通道重排)
|
7月前
|
机器学习/深度学习 存储
YOLOv11改进策略【模型轻量化】| PP-LCNet:轻量级的CPU卷积神经网络
YOLOv11改进策略【模型轻量化】| PP-LCNet:轻量级的CPU卷积神经网络
406 15
YOLOv11改进策略【模型轻量化】| PP-LCNet:轻量级的CPU卷积神经网络
|
9月前
|
人工智能
SynCamMaster:快手联合浙大、清华等大学推出的多视角视频生成模型
SynCamMaster是由快手科技联合浙江大学、清华大学等机构推出的全球首个多视角视频生成模型,能够结合6自由度相机姿势,从任意视点生成开放世界视频。该模型通过增强预训练的文本到视频模型,确保不同视点的内容一致性,支持多摄像机视频生成,并在多个应用场景中展现出巨大潜力。
195 4
SynCamMaster:快手联合浙大、清华等大学推出的多视角视频生成模型
|
缓存 监控 负载均衡
一文讲明Hystrix熔断器
这篇文章详细阐述了Hystrix熔断器的原理和应用,解释了分布式系统中服务雪崩的问题,并展示了如何在Spring Cloud框架中使用Hystrix进行熔断和降级处理。
一文讲明Hystrix熔断器
|
存储 测试技术 Go
用功能模型实现一个预约系统
【9月更文挑战第6天】本文介绍功能模型描述系统的功能需求和操作逻辑,常用数据流图(DFD)或用例图表示,关注系统如何处理输入、输出、数据存储和计算。在订餐系统中,功能模型涵盖预约界面交互、数据库访问、菜单列表查询及时段表管理。对象模型描述系统中的类和对象,功能模型则描述这些对象的功能实现;动态模型描述运行时行为。通过封装、抽象、继承、多态、交互、职责分离及数据和行为的统一,功能模型提高代码组织性和可维护性,增强系统灵活性和扩展性。
944 22
|
机器学习/深度学习 PyTorch 算法框架/工具
数据平衡与采样:使用 DataLoader 解决类别不平衡问题
【8月更文第29天】在机器学习项目中,类别不平衡问题非常常见,特别是在二分类或多分类任务中。当数据集中某个类别的样本远少于其他类别时,模型可能会偏向于预测样本数较多的类别,导致少数类别的预测性能较差。为了解决这个问题,可以采用不同的策略来平衡数据集,包括过采样(oversampling)、欠采样(undersampling)以及合成样本生成等方法。本文将介绍如何利用 PyTorch 的 `DataLoader` 来处理类别不平衡问题,并给出具体的代码示例。
2435 2
|
10月前
|
机器学习/深度学习 编解码 Java
YOLO11创新改进系列:卷积,主干 注意力,C3k2融合,检测头等创新机制(已更新100+)
《YOLO11目标检测创新改进与实战案例》专栏已更新100+篇文章,涵盖注意力机制、卷积优化、检测头创新、损失与IOU优化、轻量级网络设计等多方面内容。每周更新3-10篇,提供详细代码和实战案例,帮助您掌握最新研究和实用技巧。[专栏链接](https://blog.csdn.net/shangyanaf/category_12810477.html)
YOLO11创新改进系列:卷积,主干 注意力,C3k2融合,检测头等创新机制(已更新100+)
|
机器学习/深度学习 算法 Python
深入理解Python中的集成方法:Boosting
深入理解Python中的集成方法:Boosting
326 1