A review on the attention mechanism of deep learning笔记

原文链接

摘要

注意力可以说已经成为深度学习领域中最重要的概念之一。本文定义了一个适用于大多数注意结构的统一模型,根据四个标准对现有的注意模型进行分类:注意的柔软性、输入特征的形式、输入表示和输出表示(Fig 1),总结了与注意机制结合使用的网络体系结构,并描述了注意机制的一些典型应用,讨论了对深度学习的关注所带来的可解释性,并展示了其潜在的未来趋势。

1.Introduction

注意机制大大提高了知觉信息处理的效率和准确性
人的注意机制可以分为两类:一类是基于显著性的注意(如更响亮的声音),类似最大值池化;另一类是集中注意,有一个预先确定的目标,集中于特定任务。

在提供性能改进方面,注意力机制被应用于各种任务,如图像描述生成,文本分类,机器翻译,动作识别,图像分析,语音识别,推荐,图形等

在这里插入图片描述
注意力机制还在解释神经网络方面起到了一定的作用

在这里插入图片描述

2.注意力机制

首先大概讲解了2014年的论文D. Bahdanau, K. Cho, Y. Bengio, Neural machine translation by jointly learning to align and translate中所构建的网络结构(使用了注意力机制)

然后总结了一个统一的注意力模型:首先从输入信息中计算注意分布,然后根据注意分布计算上下文向量

在这里插入图片描述
在第一条支路上,网络首先编码得到元数据的特征K(key)。对不同的任务,K的形式不同:图片中特定部分的特征,文档中的词嵌入,RNN中的隐藏状态。
还要引入一个任务相关的向量q(query),也有可能是其他形式(如一个矩阵,两个向量等等)

然后网络使用函数f(分数函数/能量函数/兼容性函数)计算q和K的关系,得到能量分数e,反映在决定下个输出时,q对K的重要性

函数f十分重要,它定义了如何匹配K和q。下表展示了一些常见的分数函数,其中加性(第一个)函数和乘性(第二个)函数更常见

在这里插入图片描述
然后,使用注意力分布函数g将能量得分e映射到注意力权重α上
g就像softmax,将能量得分转化为概率分布。
除了softmax,g还有其他形式,如sparsemax,可以将某些输出确定为0(而不是所有输出都大于0),还有人使用了sigmoid

在第二条支路上,映入一个新的数据特征表示V(即value)。V与K的元素之间一一对应,最初甚至就是相同的(后来有人将二者分开计算)

实际上,Q,K和V是相同数据在自注意力机制下的三种不同的表达

得到V和权重α后,使用函数φ将二者结合得到上下文向量C,通常是将权重与V相乘后求和。

这样就可以使上下文向量由与该值相关联的更高的注意权重确定

3.注意力机制的分类

在这里插入图片描述
在这里插入图片描述

3.1 注意力机制的柔软性

软注意力如上文所述,使用K的加权平均来确定C,整个系统还可以通过标准的反向传播来训练

硬注意力不同,C是根据随机抽样的K计算得到的,这样系统就不好训练,可以通过最大化近似的变分下界(?)或者强化来等效训练

还有一种local attention,结合了硬注意与软注意,在计算上比软注意便宜,在训练上又比硬注意简单

3.2 输入特征的格式

按输入特征的格式,可将注意力机制分为两类:item-wise和location-wise

item-wise用于序列型的输入数据,可以将数据显式地分为单个项目
location-wise一般用于视觉任务,即无法直接获得单个输入项的情况

item软注意计算每个项目的权重并对其进行线性组合,location软注意接受整个特征图作为输入,通过注意模块生成转换版本

item硬注意随机选择某个或某些像母,location硬注意随机选取一个子区域

3.3 输入的表示

distinctive attention:模型包括单独的输入和对应的输出序列,K和Q属于两个独立的序列

co-attention:用于视觉问答任务,可以同时产生图像和问题注意,也可以交替分别产生。目前得到了广泛的应用

self(inner)attention:只根据输入序列来计算注意力——Transformer就是这种

hierarchical attention(层次注意,HAN):注意权重不经可以从原始输入序列计算,还可以从不同的抽象层次计算,如NLP中的单词层次和句子层次、文档层次;图像处理中的对象层次和部分层次(part-level)

3.4 输出的表示

single-output attention 每个时间步得到一个特征表示,即能量分数只用一个向量表示,每个时步仅得到一个向量

multi-head 基于可学习参数将输入序列(Q,K,V)线性投影到多个子空间,再在每个子空间的表示上应用缩放点乘注意,最后将输出连接到一起

multi-dimension 使用矩阵替换权重得分向量,可以计算相同数据的多个注意分布,以应对NLP中单词嵌入的多义问题

在这里插入图片描述

4、使用注意力机制的网络结构

4.1 编码器-解码器

在这里插入图片描述
在这里插入图片描述
编码器将可变长度的源序列x转化为固定长度的向量c,解码器将c转化为可变长度的目标序列y

问题是网络要把源数据的所有信息压缩到固定长度的c中,当源数据序列很长时很难实现。所以引入注意机制,不是生成固定的c,而是使用注意机制在各个时刻生成相应的ct

4.2 记忆网络

将额外的外部记忆引入神经网络
网络使用外部辅助存储单元将一些任务相关信息保存在存储单元中,需要时读取

将输入集转换为两个外部存储单元,一个用于寻址,一个用于输出
端到端记忆网络可以看作是注意的一种形式:键值对注意机制。与通常的注意力不同,他们使用两个外部记忆单元在一个大型序列数据库上对注意力进行建模,而不是仅对单个序列进行建模。换言之,我们可以将注意力机制视为一个将信息存储与计算分离的接口,这样,只需稍微增加网络参数,就可以大大提高网络容量。

在这里插入图片描述

4.3 没有RNN的网络

使用RNN,一方面计算效率低下,因为无法并行;另一方面计算复杂度较高。所以不用RNN

CNN,可通过堆叠多层CNN来捕捉长距离依赖,可以实现并行化,也降低了一些计算复杂度,还可以更容易地发现序列中的成分结构

Transformer,完全依赖于自注意力机制。由位置前馈网络(FFN)和multi-head层组成,网络可以通过堆叠多个自注意层来关注来自不同位置的不同子控件的信息,具有并行性,而且还可以大幅减小计算复杂度

5.应用(略)

6.注意力对解释性的帮助(略)

7.挑战和前景(略)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值