3.8.注意力机制/外部记忆
最后更新于
这有帮助吗?
最后更新于
这有帮助吗?
为了减少计算复杂度,可以引入局部连接、权重共享、汇聚操作简化神经网络,但依旧希望在不“过度”增加模型复杂度的情况下提高模型表达能力。神经网络中可以存储的信息量称为网络容量(Network Capacity),人脑的生物神经网络也存在网络容量问题,如果信息量过载,则容量无法适应,所以提供了两个解决办法:
注意力:通过自上而下的信息选择机制来过滤大量无用信息。
外部记忆:优化神经网络记忆结构提高神经网络存储信息的容量。
注意力(Attention)可以作用在外部刺激(听觉、味觉、视觉),也可以用在内部意识(思考、回忆),一般分两种:
自上而下有意识的注意力,聚焦式注意力(Focus Attention),主动有意识地聚焦于某一对象的注意力。
自下而上的无意识的注意力,基于显著性的注意力(Saliency-Based Attention)
赢者通吃(Winner-Take-All)
门控(Gating)
注意力机制(Attention Mechanism)作为一种资源分配方案,将有限计算资源用来处理更重要的信息,解决容量超载。最大汇聚(Max Pooling)、门控(Gating)可以近似看成自下而上的基于显著性的注意力机制。它的计算分两步:
在所有输入信息上计算注意力分布
根据注意力分布计算输入信息的加权平均
注意力分布:为了从个输入向量中选择出和某个特定任务相关的信息,我们需要引入一个和任务相关的表示,称为查询向量(Query Vector),并通过一个打分函数计算输入向量和查询向量之间的相关性。
软性注意力机制(Soft Attention Mechanism)
前文的注意力是软性注意力,选择信息是所有输入向量在注意力分布下的期望,另外一种是只关注某一个输入向量,叫硬性注意力(Hard Attention)。
一种是选取最高概率的输入向量
另一种硬性注意力可以通过在注意力分布上随机采样的方式实现
反向传播算法一般使用软性注意力代替硬性注意力。
可以使用键值对(key-value pair)格式表示输入信息:
值:计算聚合信息
之前假设输入信息同等重要,是扁平(Flat)结构,如果本身具有层次(Hierarchical)结构,可使用层次化的注意力。
为了建立输入序列之间的长距离依赖关系,可使用两种方法:
增加网络层数,通过一个深层网络来获取远距离的信息交互
使用全连接网络。
全连接无法处理变长序列,不同输入长度权重大小不相同,所以可以使用注意力机制“动态”生成不同连接权重,这就是自注意力模型(Self-Attention Model),自注意力机制经常采用查询-键-值(QKV)模式。
短期
寄存器
短期记忆
状态(神经元活性)
中期
内存
工作记忆
外部记忆
长期
外存
长期记忆
可学习参数
存储方式
随机寻址
内容寻址
内容寻址为主
为增强网络容量,引入辅助记忆单元,引入的辅助单元称为外部记忆(External Memory),区别于神经网络的内部记忆(隐状态),这种装备的外部记忆神经网络称为记忆增强神经网络(Memory Augmented Neural Network, MANN),简称为记忆网络(Memory Network, NN)。
主网络C:控制器(Controller),负责信息处理和外界交互
外部记忆单元M:用来存储记忆,包含很多记忆片段(Memory Segment)
读取模块R,从外部记忆读取对应信息
写入模块W,将信息写入到外部记忆
端到端记忆网络(End-To-End Memory Network, MemN2N)采用一种可微的网络结构,可以多次从外部记忆中读取信息,在端到端记忆网络中,外部记忆单元是只读的。
多跳操作:为了实现更复杂计算,可以让主网络和外部记忆进行多轮交互,产生新的查询向量。
图灵机(Turing Machine)是一种抽象数学模型,可用来模拟任何可计算问题。
神经图灵机(Neural Turing Machine,NTM)主要包含两部分:
控制器为一个前馈或循环神经网络
神经图灵机对外部记忆的访问时是可写的,非只读。
联想记忆模型(Associative Memory Model)主要通过神经网络的动态演化进行联想
输入的模式和输出模式在同一空间,这种模型叫做自联想模型(Auto-Associative Model),它通过前馈神经网络或循环神经网络来实现,又称为自编码器(Auto-Encoder,AE)。
输入的模式和输出的模式不在同一空间,这种模型称为异联想模型(Hetero-Associative Model)。
Hopfield网络(Hopfield Network)是一种循环神经网络模型,由一组互相连接的神经元组成,它可以认为是所有神经元都相互连接的不分层神经网络,每个神经元既是输入单元又是输入单元。
Hopfield网络更新可以分异步和同步两种,异步更新是每次更新一个神经元,神经元的更新顺序可以是随机或事先固定的,同步更新是指一次更新所有的神经元,需使用一个时钟来同步。
能量函数,在Hopfield网络中,我们给每个不同网络状态定义一个标量属性,称为“能量”,Hopfield网络的能量函数(Energy Function)的定义如:
给定一个外部输入,网络经过演化会达到某个稳定状态,这些稳定状态称为吸引点(Attractor),Hopfield网络中通常会有多个吸引点,每个吸引点都是一个能量的局部最优点。
联想记忆
信息存储:赫布规则(Hebbian Rule)
存储容量
称为注意力分布(Attention Distribution)
为注意力打分函数
加性模型:
点积模型:
缩放点积模型:
双线性模型:
其中为可学习的参数
为输入向量的维度
如果输入维度比较高,点积模型的值通常有比较大的方差,从而使得Softmax函数的梯度比较小,因此缩放点积模型可以解决该问题。
键:计算注意力分布
用表示组输入信息。
多头注意力(Multi-Head Attention)使用多个查询,并行从输入信息中选择多组信息
是向量拼接
注意力机制:一是计算注意力分布,二是根据计算输入信息的加权平均,可以只使用注意力机制中的第一步,将注意力分布作为一个软性指针(Pointer)来指出相关位置。指针网络(Pointer Network)是一种序列到序列的模型。
外部记忆定义为矩阵,此处是记忆片段的数量,是每个记忆片段的大小。