3.8.注意力机制/外部记忆

    为了减少计算复杂度,可以引入局部连接、权重共享、汇聚操作简化神经网络,但依旧希望在不“过度”增加模型复杂度的情况下提高模型表达能力。神经网络中可以存储的信息量称为网络容量(Network Capacity),人脑的生物神经网络也存在网络容量问题,如果信息量过载,则容量无法适应,所以提供了两个解决办法:

  1. 注意力:通过自上而下的信息选择机制来过滤大量无用信息。

  2. 外部记忆:优化神经网络记忆结构提高神经网络存储信息的容量。

1.认知中的注意力

    注意力(Attention)可以作用在外部刺激(听觉、味觉、视觉),也可以用在内部意识(思考、回忆),一般分两种:

  1. 自上而下有意识的注意力,聚焦式注意力(Focus Attention),主动有意识地聚焦于某一对象的注意力。

  2. 自下而上的无意识的注意力,基于显著性的注意力(Saliency-Based Attention)

    1. 赢者通吃(Winner-Take-All)

    2. 门控(Gating)

2.注意力机制

    注意力机制(Attention Mechanism)作为一种资源分配方案,将有限计算资源用来处理更重要的信息,解决容量超载。最大汇聚(Max Pooling)、门控(Gating)可以近似看成自下而上的基于显著性的注意力机制。它的计算分两步:

  1. 在所有输入信息上计算注意力分布

  2. 根据注意力分布计算输入信息的加权平均

    注意力分布:为了从NN个输入向量[x1,...,xN][x_1,...,x_N]中选择出和某个特定任务相关的信息,我们需要引入一个和任务相关的表示,称为查询向量(Query Vector),并通过一个打分函数计算输入向量和查询向量之间的相关性。

αn=exp(s(xn,q))j=1Nexp(s(xj,q))\alpha_n = \frac{\exp(s(x_n,q))}{\sum_{j=1}^N \exp(s(x_j, q))}

  • αn\alpha_n称为注意力分布(Attention Distribution)

  • s(x,q)s(x,q)为注意力打分函数

    • 加性模型:s(x,q)=vTtanh(Wx+Uq)s(x,q) = v^T \tanh(Wx + Uq)

    • 点积模型:s(x,q)=xTqs(x,q) = x^Tq

    • 缩放点积模型:s(x,q)=xTqDs(x,q) = \frac{x^T q}{D}

    • 双线性模型:s(x,q)=xTWqs(x,q) = x^T W q

  • 其中W,U,vW,U,v为可学习的参数

  • DD为输入向量的维度

如果输入维度DD比较高,点积模型的值通常有比较大的方差,从而使得Softmax函数的梯度比较小,因此缩放点积模型可以解决该问题。

    软性注意力机制(Soft Attention Mechanism)

2.1.硬性注意力

    前文的注意力是软性注意力,选择信息是所有输入向量在注意力分布下的期望,另外一种是只关注某一个输入向量,叫硬性注意力(Hard Attention)。

  1. 一种是选取最高概率的输入向量

    att(X,q)=xn^att(X,q) = x_{\hat{n}}

  2. 另一种硬性注意力可以通过在注意力分布上随机采样的方式实现

反向传播算法一般使用软性注意力代替硬性注意力。

2.2.键值对注意力

    可以使用键值对(key-value pair)格式表示输入信息:

  • 键:计算注意力分布α\alpha

  • 值:计算聚合信息

    用(K,V)=[(k1,v1),...,(kN,vN)](K,V) = [(k_1,v_1),...,(k_N,v_N)]表示NN组输入信息。

2.3.多头注意力

    多头注意力(Multi-Head Attention)使用多个查询Q=[q1,...,qM]Q = [q_1,...,q_M],并行从输入信息中选择多组信息

att((K,V),Q)=att((K,V),q1)...att((K,V),qM)att((K,V),Q) = att((K,V), q_1) \oplus ... \oplus att((K,V), q_M)

\oplus是向量拼接

2.4.结构化注意力

    之前假设输入信息同等重要,是扁平(Flat)结构,如果本身具有层次(Hierarchical)结构,可使用层次化的注意力。

2.5.指针网络

    注意力机制:一是计算注意力分布α\alpha,二是根据α\alpha计算输入信息的加权平均,可以只使用注意力机制中的第一步,将注意力分布作为一个软性指针(Pointer)来指出相关位置。指针网络(Pointer Network)是一种序列到序列的模型。

3.自注意力模型

    为了建立输入序列之间的长距离依赖关系,可使用两种方法:

  1. 增加网络层数,通过一个深层网络来获取远距离的信息交互

  2. 使用全连接网络。

    全连接无法处理变长序列,不同输入长度权重大小不相同,所以可以使用注意力机制“动态”生成不同连接权重,这就是自注意力模型(Self-Attention Model),自注意力机制经常采用查询-键-值(QKV)模式。

4.人脑中的记忆

记忆周期
计算机
人脑
神经网络

短期

寄存器

短期记忆

状态(神经元活性)

中期

内存

工作记忆

外部记忆

长期

外存

长期记忆

可学习参数

存储方式

随机寻址

内容寻址

内容寻址为主

5.记忆增强神经网络

    为增强网络容量,引入辅助记忆单元,引入的辅助单元称为外部记忆(External Memory),区别于神经网络的内部记忆(隐状态),这种装备的外部记忆神经网络称为记忆增强神经网络(Memory Augmented Neural Network, MANN),简称为记忆网络(Memory Network, NN)。

  1. 主网络C:控制器(Controller),负责信息处理和外界交互

  2. 外部记忆单元M:用来存储记忆,包含很多记忆片段(Memory Segment)

  3. 读取模块R,从外部记忆读取对应信息

  4. 写入模块W,将信息写入到外部记忆

5.1.端到端记忆

    端到端记忆网络(End-To-End Memory Network, MemN2N)采用一种可微的网络结构,可以多次从外部记忆中读取信息,在端到端记忆网络中,外部记忆单元是只读的。

    多跳操作:为了实现更复杂计算,可以让主网络和外部记忆进行多轮交互,产生新的查询向量。

5.2.神经图灵机

    图灵机(Turing Machine)是一种抽象数学模型,可用来模拟任何可计算问题。

    神经图灵机(Neural Turing Machine,NTM)主要包含两部分:

  1. 外部记忆定义为矩阵MRD×NM \in R^{D \times N},此处NN是记忆片段的数量,DD是每个记忆片段的大小。

  2. 控制器为一个前馈或循环神经网络

神经图灵机对外部记忆的访问时是可写的,非只读。

6.基于神经动力学的联想记忆

    联想记忆模型(Associative Memory Model)主要通过神经网络的动态演化进行联想

  1. 输入的模式和输出模式在同一空间,这种模型叫做自联想模型(Auto-Associative Model),它通过前馈神经网络或循环神经网络来实现,又称为自编码器(Auto-Encoder,AE)。

  2. 输入的模式和输出的模式不在同一空间,这种模型称为异联想模型(Hetero-Associative Model)。

6.1.Hopfield网络

    Hopfield网络(Hopfield Network)是一种循环神经网络模型,由一组互相连接的神经元组成,它可以认为是所有神经元都相互连接的不分层神经网络,每个神经元既是输入单元又是输入单元。

    Hopfield网络更新可以分异步和同步两种,异步更新是每次更新一个神经元,神经元的更新顺序可以是随机或事先固定的,同步更新是指一次更新所有的神经元,需使用一个时钟来同步。

    能量函数,在Hopfield网络中,我们给每个不同网络状态定义一个标量属性,称为“能量”,Hopfield网络的能量函数(Energy Function)的定义如:

E=12sTWsbTsE = - \frac{1}{2} s^T Ws - b^T s

    给定一个外部输入,网络经过演化会达到某个稳定状态,这些稳定状态称为吸引点(Attractor),Hopfield网络中通常会有多个吸引点,每个吸引点都是一个能量的局部最优点。

  • 联想记忆

  • 信息存储:赫布规则(Hebbian Rule)

  • 存储容量

最后更新于