注意力机制与外部记忆
==《神经网络与深度学习》By 邱锡鹏 ==
在实践中很难达到通用近似的能力。在处理复杂任务时,比如需要处理大量的输入信息或者复杂的计算流程时,目前计算机的计算能力依然时限制神经网络发展的瓶颈。
通过引入人脑的生物神经网络中两个重要机制可以解决信息过载问题:注意力和记忆机制。目的是在有限的资源条件下,提高神经网络处理信息的能力。
1 认知神经学中的注意力
注意力分为两种:
- 聚焦式注意力,指有预定目的、依赖人物的,主动有意识地聚焦于某一对象的注意力。
- 基于显著性的注意力,由外界刺激驱动的注意,不需要主动干预,也和任务无关。
鸡尾酒效应:
当一个人在吵闹的鸡尾酒会上和朋友聊天时, 尽管周围噪音干扰很多, 他还是可以听到朋友的谈话内容, 而忽略其他人的声音( 聚焦式注意力). 同时, 如果背景声中有重要的词( 比如他的名字), 他会马上注意到( 显著性注意力)
2 注意力机制
注意力机制作为一种资源分配方案,将有限的计算资源用来处理更重要的信息,是解决信息超载问题的主要手段。
注意力分布 为了从N个输入向量中选择出某个特定任务相关的信息,这时引入一个和任务相关的表示,称为查询向量,通过一个打分函数来计算每个输入向量和查询向量之间的相关性。 给定一个和任务相关的查询向量q,我们用注意力变量z表示选择信息的索引位置,为方便计算,采用“软性”的信息选择机制。令αn为注意力分布参数,s(x,q)为注意力打分函数:

加权平均: 注意力分布αn可以解释为在给定任务相关的查询q时,第n个输入向量受关注的程度。采用“软性”的信息选择机制对输入信息进行汇总:

以下是软性注意力机制的示例

2.1 硬性注意力
软性注意力,其选择的i学你系是所有输入向量在注意力分布下的期望。而影星注意力只关注某一输入向量。
两种实现方式:
- 选取最高概率的输入向量

- 通过在注意力分布式上随机采样的方式实现
影星注意力缺点是基于最大采样或随机采样的方式来选择信息,是的最终的损失函数与注意力分布之间的函数关系不可导,无法使用反向传播算法进行训练。因此,Hard Attention 需要使用强化学习来进行训练。
2.2 键值对注意力
用键值对(key-value pair) 格式来表示输入信息,其中“键”用来计算注意力分布,“值”用来计算聚合信息。
注意力函数为:

2.3 多头注意力
利用多个查询Q,来并行从输入信息中选取多组信息、每个注意力关注输入信息的不同部分。

2.4 结构化注意力
之前假设所有的输入信息是同等重要的,是一种扁平结构,注意力分布实际上实在所有输入信息上的多项分布。如若输入信息本身具有层次结构,比如文本可以分为词、句子、段落、篇章等不同粒度的层次,此时可以使用层次化的注意力来进行更好的信息选择。此外还可以假设注意力为上下文相关的二项分布,用一种图模型来构建更复杂的结构化注意力分布。
2.5 指针网络
注意力机制主要是用来做信息筛选,从输入信息选取相关的信息。注意力机制可以分为两步:计算注意力分布α,根据α来计算输入信息的加权平均。这里指利用注意力机制的第一步,将注意力分布作为一个软性的指针来指出相关的信息位置。
3 自注意力模型
如果要建立输入序列之间的长距离依赖关系, 可以使用以下两种方法: 一种
方法是增加网络的层数, 通过一个深层网络来获取远距离的信息交互; 另一种方法是使用全连接网络。全连接网络是一种非常直接的建模远距离依赖的模型, 但是无法处理变长的输入序列。 不同的输入长度, 其连接权重的大小也是不同的。这时我们就可以利用注意力机制来“动态” 地生成不同连接的权重, 这就是自注意力(亦称内部注意力)模型( Self-Attention Model)。

具体计算过程:
(1) 对于每个输入xi,首先将其线性映射到三个不同的空间,得到查询向量、键向量和值向量。
(2) 对于每一个查询想抢qn利用下面公式的键值对注意力机制,可以得到输出向量hn


自注意力模型的权重是动态生成,可以处理变长的信息序列。
自注意力模型可以作为神经网络中的一层来使用,既可以用来替换卷积层和循环层,也可以和它们交替使用。
自注意力模型计算的权重αij只依赖于qi和kj的相关性,而忽略了输入信息的位置信息。因此在单独使用时,自注意力模型一般需要加入位置编码信息来进行修正。
4 总结
注意力机制的一个重要应用是自注意力,自注意力可以作为神经网络中的一层来使用,有效地建模长距离依赖问题。
引入外部记忆,神经网络在一定程度上可以增加模型容量。记忆增强神经网络的代表性模型有神经图灵机、端到端记忆网络、动态记忆网络等。此外,将能量函数的该奶奶引入到神经网络模型中,提出Hopfield网络。目前人工神经网络的外部记忆模型结构还比较简单,需要借鉴神经科学的研究成果,提出更有效地记忆模型,增加网络容量。