🍥关键词:注意力机制、文本分类
🍥发表期刊: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的机器翻译模型
编码器
由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机制计算分两步:输入信息+计算注意力分布+计算上下文向量。其模型如下
- 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函数如下
- g:注意力分布函数,可以将能量分数e映射到注意力权重α
常见的g就是softmax,能够实现归一化,但是有一个缺点是softmax(z)>0恒成立,在有些需要稀疏概率分布的应用就不实用了,因此有人提出了sparsemax,能够使得某些输出变量分配的概率为0,其函数图像如下
- ϕ:将α和v的乘积归成一个向量
$$ c=ϕ({α_i},{v_i}) $$
$$ z_i=α_iv_i\,\,\,and\,\,\,c=\sum ^{n}_{i=1} { {z}_{i}} $$
此外,对于注意力机制的性能指标是非常重要的,最常见的方法就是消融实验(量化),或者可视化注意力权重评估(非量化),如下图
三、Taxonomy of attention
我们根据四个指标对注意力机制进行分类,如下图
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),以下是一个用于视觉问题回答任务的多输入注意力模型,该模型对图像和问题进行联合重构。共同注意力可以联合或交替进行,前者同时产生图像和问题注意,后者依次交替产生图像和问题注意。
此外,也有人提出了多层注意力,其意为注意力权重不仅可以从原始输入序列中计算出来,还可以从不同的抽象层次中计算出来。如Yang提出的文档分层注意力网络HAM,其包含词级和句级两个层次的注意力机制,先将重要词聚集到一个句子中,再将重要句子聚集到一篇文档中。
3.4 Output representation
注意力的输出表示有两大类,分别是单输出注意力和多输出注意力,单输出注意力即每个时间步有唯一的特征表示。多输出注意力又可细分为多头和多维注意力,其模型如下
多头注意力是将输入序列(Q,K,V)线性投射到多个子空间计算注意力,最后拼接起来,由于每个头都是在不同子特征空间,因此其泛化能力较好。至于多维注意力就是将单点的注意力分数换成向量注意力分数,由于每个注意力分数包含的信息更多了,自然可能效果会更好一些,尤其在情感分类上有一定借鉴意义。此外,前人提出了增加Frobenius惩罚,来强制区分相关模型,在情感分类上具有一定效果。
四、Network architectures with attention
以下介绍三种不同的注意力相关的神经网络结构
4.1 Encoder-decoder
最常见的自然是编码器-解码器网络,将输入序列x编码成一个固定长向量c,最后将其解码成新长度的序列y
4.2 Memory networks
记忆网络一般做法是引入了外部辅助记忆单元,在有需要时读取。而与注意力结合后,只需将辅助记忆单元替代key,随后通过注意力机制来匹配内容。
例子是以下的端到端记忆网络,它考研多次读取外部信息。其核心思想为将输入集转化为两个外部存储单元,一个用于寻址,一个用于输出,因此可以将这种注意力形式看作:键值对注意力机制。有意思的是,他们并非是建立在单个序列上,而是用两个外部记忆单元在一个大序列数据库上建立注意力模型,可以看作一个小型Hadoop工程,有信息存储和计算,网络的容量可以通过网络参数的少量增加而大量增加。
4.3 Networks without RNNs
- (a)最经典的RNN+Attention+Encoder-Decoder框架,其问题是处理过程不可并行
- (b)CNN++Attention+Encoder-Decoder框架,其优点是不依赖于前一个时间步计算,允许并行计算
- (c)当前大火的Transformer,并行计算效率更高
五、Applications
5.1 Applications in computer vision
最经典的CV中的注意力机制是空间注意力Spatial attention,它可以学习到图像应该被关注的部分,直观的表现就是裁剪图像将关键区域留下
Channel attention通道注意力,对图像的每个Channel计算注意力得分
Non-local attention非局部注意力,是self-attention在CV领域的应用,通过计算特征图中每个空间点之间的相关矩阵得到注意力掩码,然后由注意力引导密集的上下文信息进行融合
5.2 Applications in natural language processing
- 机器翻译任务,在翻译过程中有选择性的关注源句子的部分内容
- 文本分类任务,主要使用自注意力机制,在此基础上还可以和其他注意力机制进行结合,如分层自我注意、多维自我注意
- 预训练模型,主要是Transformer注意力发展而成的Bert体系
六、Attention for interpretability
这里有两种声音,一种是赞成注意力来作为解释神经网络的工具,因为它有注意力得分,非常的直观,如下图
但是也有反对的声音,理由也很简单,不同的注意力权重分布居然产生了相同的预测结果,这侧面说明注意力和其他的课解释性指标是有些区别,只能作为中间成分重要性的噪声预测器罢了。
因此该话题还是有待争议的。
七、Challenges and prospects
作者提出了Attention可以改进空间的5个方向
- 自注意力机制中query和key是否需要独立存在
- 构造注意力分布函数来降低注意力计算的复杂性
- 将NLP领域中的自注意力机制应用到CV领域中
- 自适应机制和注意力机制的结合来实现自动形成分层注意力,无需手动设计每层结构
- 更加有效的性能指标来评价注意力机制
八、Conclusion
博主看完这篇文章已是2023年2月了,虽时隔近一年,注意力机制在当下仍有很强的研究意义。由于是文本分类的专题,因此在此总结文本分类相关的借鉴意义
- 当下主流的还是使用自注意力self-attention来解决文本分类问题,在此基础上,可以往分层自我注意和多维自我注意研究
- 可以往共同注意力co-attention的研究,比如标签和文本之间互相做注意力
- 多维注意力中加上Frobenius等惩罚机制来提高模型的抗拟合性