参考视频:
Attention-based Model 李宏毅 2015
点击查看【bilibili】
Self-attention 李宏毅 2021春
点击查看【bilibili】
本书 第 8 章 注意力机制与外部记忆
点击查看【bilibili】
Attention机制详解(一)——Seq2Seq中的Attention

前面的章节提到,根据通用近似定理,前馈神经网络 and 循环神经网络都有很强的通用近似能力。但实际上,由于计算机计算能力有限,限制了神经网络的近似能力。

减少计算复杂度的方法:

  • 使用局部连接、权重共享、汇聚/池化操作等来简化神经网络结构
    • 仍存在的问题:神经网络的存储(记忆)容量和神经元的数量及网络的复杂度成正比。eg. 要处理阅读理解问题,可能涉及整篇文章,虽然 RNN/LSTM 有记忆,但记忆容量的增加(存储整篇文章的信息)依赖于参数的增加,大量的参数使得计算资源不够用,而且容易导致过拟合
  • 模仿人脑解决信息过载问题
    • 注意力:通过自上而下的信息选择机制来过滤掉大量的无关信息
      • 从大量输入信息中选择小部分有用的信息来重点处理,并忽略掉其他信息
      • 基于注意力的模型,记忆容量增大,参数并不会增加
      • 网络容量:神经网络中可以存储的信息量
    • 外部记忆:优化神经网络的记忆结构来过提高神经网络存储信息的容量

第 8 章 注意力机制与外部记忆 - 图1

8.1 认知神经学中的注意力

注意力:从大量输入信息中选择小部分有用的信息来重点处理,并忽略掉其他信息

  • 聚焦式注意力/选择性注意力:自上而下的有意识的注意力
    • 有预定目的、以来任务的,主动有意识地聚焦于某一对象的注意力
    • 聚焦式注意力一般会随着环境、情景或任务的不同而选择关注不同的信息
    • 注意力机制通常默认指聚焦式注意力
  • 基于显著性的注意力:自下而上的无意识的注意力
    • 由外界刺激驱动的注意,不需要主要干预,也很任务无关
    • eg. 最大汇聚/池化、门控机制可以近似地看作基于显著性的注意力

      鸡尾酒会效应:当一个人在吵闹的鸡尾酒会上和朋友聊天,尽管周围噪声干扰很多,但他依然可以听到朋友的谈话内容,而忽略其他人的声音(聚焦式注意力);同时,如果背景声中有重要的词,比如他的名字,他会马上注意到(显著性注意力

8.2 注意力机制

注意力机制:作为一种资源分配方案,将有限的计算资源用来处理一些关键的信息输入(信息筛选,从输入信息中选取相关信息),提高神经网络的效率,是解决信息超载问题的主要手段

  • 为了节省计算资源,不需要将所有信息都输入神经网络,只需从输入信息 X 中选择一些和任务相关的信息
  • 注意力机制可以单独使用,但更多地用作神经网络中的一个组件

注意力机制的计算分为两步:

  • ① 在所有输入信息上计算注意力分布 α
  • ② 根据注意力分布 α 来计算输入信息的加权平均

注意力机制的具体计算过程:

  • 输入向量 第 8 章 注意力机制与外部记忆 - 图2:表示 N 组输入信息,第 8 章 注意力机制与外部记忆 - 图3 表示其中一组输入信息
  • 查询向量 第 8 章 注意力机制与外部记忆 - 图4:和任务相关的表示
  • 打分函数 第 8 章 注意力机制与外部记忆 - 图5:用于计算输入向量 x 和查询向量 q 之间的相关性,有几种不同的计算方式 | 注意力打分函数计算方式 | 公式 | | —- | —- | | 加性模型 |
    | | 点积模型(常用,计算效率高) |

    缺点:输入向量的维度 D 较高时,点积模型的值通常有较大的方差,从而导致 softmax 函数的梯度比较小 | | 缩放点积模型 |

    一种泛化的点积模型,可以解决上面提到的点积模型的缺点 | | 双线性模型 |

    相比点积模型,在计算相似度时引入了非对称性 |

  • 注意力变量 z:第 8 章 注意力机制与外部记忆 - 图6 表示被选择信息的索引位置,即表示选择了第 z 个向量

  • 注意力分布 第 8 章 注意力机制与外部记忆 - 图7:在给定任务相关的查询 q 时,第 n 个输入向量受关注的程度
    • 第 8 章 注意力机制与外部记忆 - 图8
  • 软性注意力机制第 8 章 注意力机制与外部记忆 - 图9
    • 采用一种软性的信息选择机制对输入信息进行汇总(根据 α 计算输入信息的加权平均
    • 软性注意力,选择的信息是所有输入向量在注意力分布下的期望

image.png

8.2.1 注意力机制的变体

注意力机制 区别
软性注意力(普通) 选择的信息是所有输入向量在注意力分布下的期望(由 α 计算输入向量的加权平均)
硬性注意力 只关注某一个输入向量,两种实现方式:
- 选择最高概率的一个输入向量:
- 在注意力分布式上随机采样

缺点:基于最大采样或随机采样的方式实现,是的最终的损失函数与注意力分布之间的函数关系不可导,无法使用反向传播算法进行训练,通常要使用强化学习来进行训练。因此,为了使用反向传播法,一般使用软性注意力代替硬性注意力 | | 键值注意力 | 用键值对格式表示输入信息
- 键:用于计算注意力分布
- 值:用于计算聚合信息 att


当 K=V,键值对模式等价于普通的注意力机制 | | 多头注意力 | 利用多个查询 来并行地从输入信息中选取多组信息,每个注意力关注输入信息的不同部分
, 表示向量拼接 | | 结构化注意力 |
- 上面介绍的注意力都是假设所有的输入信息是同等重要的,是扁平结构;
- 如果输入信息本身具有层次(eg. 文本)或结构化(eg. 图),则可以用层次化或结构化的注意力
| | 指针网络 |
- 只利用注意力机制计算过程的第一步,将注意力分布作为一个软性的指针来指出相关信息的位置;
- 是一种(异步的)序列到序列模型,输入序列是 ,输出序列是输入序列的下标(索引)
|

image.png

8.3 自注意力模型

背景:

  • 循环神经网络虽然理论上可以建立长距离依赖关系,但由于信息传递的容量以及梯度消失问题,实际上只能建立短距离的依赖关系
  • 建立输入序列之间的长距离依赖关系(比如阅读理解,可能需要联系整个输入序列上下文的信息)的方法:
    • 增加网络的层数,通过一个深层网络来获取远距离的信息交互
    • 使用全连接网络(是一种非常直接的建立远距离依赖的模型),但是无法处理变长的输入序列

自注意力模型/内部注意力模型:利用注意力机制来动态地生成不同连接的权重 第 8 章 注意力机制与外部记忆 - 图12

  • 为了提高模型能力,自注意力模型经常采用查询-键-值(QKV)模式

image.png

自注意力模型的计算过程

  • ① 对于输入序列 X,将其映射到三个不同的空间:
    • 查询向量矩阵:第 8 章 注意力机制与外部记忆 - 图14
    • 键向量矩阵:第 8 章 注意力机制与外部记忆 - 图15
    • 值向量矩阵:第 8 章 注意力机制与外部记忆 - 图16
  • ② 对每一个查询向量 第 8 章 注意力机制与外部记忆 - 图17,利用键值对注意力机制,得到输出向量 第 8 章 注意力机制与外部记忆 - 图18
    • 第 8 章 注意力机制与外部记忆 - 图19
    • 第 8 章 注意力机制与外部记忆 - 图20 为输出和输入向量序列的位置
    • 第 8 章 注意力机制与外部记忆 - 图21 表示第 n 个输出关注到第 j 个输入的权重
    • 自注意力模型模型通常使用点积来计算注意力打分 s,不过下图使用的是缩放点击,则输出向量序列可以简写为 第 8 章 注意力机制与外部记忆 - 图22

image.png

自注意力模型示例:
image.png

  • 自注意力模型可以作为神经网络的一层来使用,既可以用来替换卷积层和循环层,也可以和它们一起交替使用(比如输入序列 X 可以是卷积层或循环层的输出)
  • 自注意力模型计算的权重 第 8 章 注意力机制与外部记忆 - 图25 只依赖于 第 8 章 注意力机制与外部记忆 - 图26第 8 章 注意力机制与外部记忆 - 图27 的相关性,而忽略了输入信息的位置信息,因此在单独使用时,自注意力模型一般需要位置编码信息来进行修正
  • 自注意力模型可以扩展为多头自注意力模型,在多个不同的投影空间中捕捉不同的交互信息:

image.png

8.4 人脑中的记忆

记忆周期 计算机 人脑 神经网络
短期 寄存器 短期记忆 (隐)状态(神经元活性/内部状态),更新较快
中期 内存 工作记忆 外部记忆
长期 外存 长期记忆/结构记忆/知识 可学习参数(神经元之间的连接形态),更新慢
存储方式 随机寻址 内容寻址 内容寻址为主
  • 演化过程:短期记忆、长期记忆的动态更新过程

  • 联想记忆

    • 人脑:指一种学习和记住不同对象之间关系的能力,eg. 记住某种食物的味道,看见一个人想起名字
    • 神经网络:指一种可以通过内容匹配的方法进行寻址的信息存储方式,也称为基于内容寻址的存储(CAM) ,区别于现代计算机根据地址进行存储的存储方式(随机访问存储 RAM)

外部记忆:在神经网络中引入外部记忆单元来提高网络容量
外部记忆的实现途径:

8.5 记忆增强神经网络 MANN

  • 外部记忆:为了增强网络容量引入的辅助记忆单元,存储一些和任务相关的信息,在需要时再进行读取
    • 区别于 内部记忆:循环神经网络的隐状态
    • 外部记忆的优点:引入外部记忆,可以将神经网络的参数与记忆容量分离,即在少量增加网络参数的条件下可以大幅增加网络容量。因此,可以将注意力机制看作一个接口,将信息的存储与计算分离
  • 记忆增强网络 MANN / 记忆网络 MN:装备外部记忆的神经网络

记忆网络的典型结构:

  • 主网络(控制器)C:负责信息处理、与外界的交互(接受外界的输入信息并产生输出到外界)、通过读写模块与外部记忆交互
  • 外部记忆单元 第 8 章 注意力机制与外部记忆 - 图29:是结构化的记忆,用来存储大部分信息,一般分为很多记忆片段
  • 读取模块 R:根据主网络生成的查询向量 第 8 章 注意力机制与外部记忆 - 图30,从外部记忆单元中读取相应的信息 第 8 章 注意力机制与外部记忆 - 图31
  • 写入模块 W:根据主网络生成的查询向量 第 8 章 注意力机制与外部记忆 - 图32 和要写入的信息 a 来更新外部记忆 第 8 章 注意力机制与外部记忆 - 图33

image.png

这种结构化的外部记忆是带有地址的,按地址读取和写入。但类似人脑的联想记忆能力需要按照内容寻址的方式进行定位,然后进行读写操作。按内容寻址通常由注意力机制实现,因此,结构化的外部记忆也是一种联想记忆

读取模型 R 的实现步骤 公式 类比于计算机
计算注意力分布
计算机寻址的过程
信息加权平均
计算机“内容读取”的过程

第 8 章 注意力机制与外部记忆 - 图35

8.5.1 端到端记忆网络 MemN2N

端到端记忆网络:采用一种可微的网络结构,可以多次从外部记忆中读取信息

  • 外部记忆单元是只读的

将一组要存储的信息 第 8 章 注意力机制与外部记忆 - 图36 转换成两组记忆片段,分别存放在两个外部记忆单元中:

  • 第 8 章 注意力机制与外部记忆 - 图37:用于寻址
  • 第 8 章 注意力机制与外部记忆 - 图38:用于输出

A、C 可以看作键值对的形式

计算流程:

  • 主网络根据输入 x 生成 q
  • 使用键值对注意力机制从外部记忆中读取相关信息 第 8 章 注意力机制与外部记忆 - 图39
  • 产生输出 第 8 章 注意力机制与外部记忆 - 图40第 8 章 注意力机制与外部记忆 - 图41 为预测函数,当应用到分类任务时,可以设为 softmax 函数

多跳操作:让主网络和外部记忆进行多轮交互,以实现更复杂的计算
第 k 轮操作:

  • 著网络根据上次从外部记忆读取的信息 第 8 章 注意力机制与外部记忆 - 图42 产生新的查询向量 第 8 章 注意力机制与外部记忆 - 图43
  • 从外部记忆读取信息 第 8 章 注意力机制与外部记忆 - 图44
  • 产生输出 第 8 章 注意力机制与外部记忆 - 图45 进行预测

为了简化起见,每轮交互的外部记忆可以共享使用,即 第 8 章 注意力机制与外部记忆 - 图46
image.png

8.5.2 神经图灵机 NTM

神经图灵机主要由两个部件构成:

  • 外部记忆第 8 章 注意力机制与外部记忆 - 图48,N 是记忆片段的数量,D 是每个记忆片段的大小
    • 神经图灵机的外部记忆是可读写的
  • 控制器为一个前馈或循环神经网络

在每个时刻 t,

  • 控制器接受当前时刻的输入 第 8 章 注意力机制与外部记忆 - 图49、上一时刻的输出 第 8 章 注意力机制与外部记忆 - 图50 和上一时刻从外部记忆中读取的信息 第 8 章 注意力机制与外部记忆 - 图51
  • 并产生输出 第 8 章 注意力机制与外部记忆 - 图52
  • 同时生成和读写外部记忆相关的三个向量:
    • 查询向量
    • 删除向量
    • 增加向量
  • 然后对外部记忆进行读写操作,生成读向量 第 8 章 注意力机制与外部记忆 - 图53 和新的外部记忆 第 8 章 注意力机制与外部记忆 - 图54
    • 读操作:从外部记忆 第 8 章 注意力机制与外部记忆 - 图55 中读取信息 第 8 章 注意力机制与外部记忆 - 图56
      • 通过注意力机制进行基于内容的寻址,及计算注意力分布 第 8 章 注意力机制与外部记忆 - 图57
      • 计算读向量 第 8 章 注意力机制与外部记忆 - 图58
    • 写操作:分为两个子操作:
      • 删除:根据注意力分布按比例地在每个记忆片段中删除 第 8 章 注意力机制与外部记忆 - 图59
      • 增加:根据注意力分布按比例地给每个记忆片段中加入 第 8 章 注意力机制与外部记忆 - 图60
      • 计算下一时刻的外部记忆第 8 章 注意力机制与外部记忆 - 图61

image.png

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

联想记忆模型:通过神经网络的动态演化来进行联想(相较于外部记忆具有更好的生物学解释性)

  • 功能:联想记忆模型可以利用神经动力学的原理来实现按内容寻址的信息存储和检索 第 8 章 注意力机制与外部记忆 - 图63image.png

8.6.1 Hopfield 网络

神经网络除了作为机器学习模型外,还可以作为一种记忆的存储和检索模型

Hopfield 网络:是一种循环神经网络模型,所有神经元都互相连接,不分层

  • 每个神经元既是输入单元,又是输出单元,没有隐藏神经元
  • 一个神经元和自身没有反馈链接,不同神经元之间的连接权重是对称的

image.png

更新规则:

  • 连接权重 第 8 章 注意力机制与外部记忆 - 图66
    • 第 8 章 注意力机制与外部记忆 - 图67
  • 第 i 个神经元的更新规则 第 8 章 注意力机制与外部记忆 - 图68

Hopfield 网络的两种更新方式:

  • 异步方式:每次更新一个神经元,神经元的更新顺序是随机或实现固定的
  • 同步方式:一次更新所有神经元,需要一个时钟进行同步

能量函数 第 8 章 注意力机制与外部记忆 - 图69

  • Hopfield 网络是稳定的,即能量函数经过多次迭代后会达到收敛状态
    • 权重对称保证能量函数在神经元激活时单调递减,而不对称权重可能导致周期性振荡或混乱
  • 吸引点:即稳定状态,每个吸引点为一个能量的局部最优点
    • 将吸引点看作网络中存储的模式(Pattern):输入向量 x 落在一个吸引点的管辖区域,网络最终会收敛到这个吸引点
  • 检索过程:网络输入 x 作为起始状态,随时间收敛到吸引点 u 的过程
    • Hopfield 的检索是基于内容寻址的检索,具有联想记忆能力

image.png

信息存储:指将一组向量 第 8 章 注意力机制与外部记忆 - 图71 存储在网络中的过程

  • 存储过程主要是调整神经元之间的连接权重 第 8 章 注意力机制与外部记忆 - 图72

存储容量:联想记忆模型能够可靠地存储存储和检索模式的最大数量

  • 通过改进网络结构、学习方式以及引入更复杂的运算,可以有效改善联想记忆网络的容量

8.7 总结和深入阅读

  • 注意力机制:从输入信息中选取相关信息,重点关注

    • 自注意力:可以有效建模长距离依赖问题
  • 外部记忆:神经网络在一定程度上可以增加模型容量

    • 记忆增强神经网络
      • 神经图灵机
      • 端到端记忆网络
      • 动态记忆网络
    • 基于神经动力学的联想记忆:更好的生物解释性
      • Hopfield 网络

习题

参考:《神经网络与深度学习-邱锡鹏》习题解答

习题 8-1 分析 LSTM 模型中隐藏层神经元数量和参数数量之间的关系


习题 8-2 分析缩放点积模型可以缓解 Softmax 函数梯度消失的原因


习题 8-3 当将自注意力模型作为一个神经层使用时,分析它和卷积层以及循环层在建模长距离依赖关系的效率和计算复杂度方面的差异


习题 8-4 试设计用集合、树、栈或队列来组织外部记忆,并分析它们的差异


习题 8-5 分析端到端记忆网络和神经图灵机对外部记忆操作的异同点


习题 8-6 证明 Hopfield 网络的能量函数随时间单调递减