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

系列文章目录

第1章 绪论
第2章 机器学习概述
第3章 线性模型
第4章 前馈神经网络
第5章 卷积神经网络
第6章 循环神经网络
第7章 网络优化与正则化
第8章 注意力机制与外部记忆
第9章 无监督学习
第10章 模型独立的学习方式
第11章 概率图模型
第12章 深度信念网络
第13章 深度生成模型
第14章 深度强化学习
第15章 序列生成模型


文章目录

  • 系列文章目录
  • 前言
  • 8.1 人脑中的注意力机制
    • 8.1.1问题引入—阅读理解问题
    • 8.1.2人脑中的注意力
    • 8.1.3注意力示例
    • 8.1.4注意的实现
  • 8.2 人工神经网络中的注意力机制
    • 8.2.1 软性注意力机制(soft attention mechanism)
    • 8.2.2 键值注意力(key-value pair attention)
    • 8.2.3 多头注意力(multi-head pair attention)
    • 8.2.4 结构化注意力(structural attention)在之前介绍中,我们假设所有的输入信息是同等重要的,是一种扁平(Flat)
    • 8.2.5 指针网络
  • 8.3 注意力机制的应用
    • 8.3.1 文本分类
    • 8.3.2 机器翻译
    • 8.3.3 看图说话
    • 8.3.4 阅读理解
  • 8.4 自注意力模型
    • 8.4.1问题引入
    • 8.4.2 自注意模型示例
    • 8.4.3QKV模式(Query-Key-Value)
  • 8.5 人脑中的记忆
  • 8.6 记忆增强神经网络
    • 8.5.1 端到端的记忆网络
    • 8.5.2 神经图灵机
      • 8.5.2.1 图灵机
      • 8.5.2.2 神经图灵机
  • 8.6 基于神经动力学的联想记忆
  • 总结


前言

如下图,可以看出,由全连接前馈网络到卷积网络,再到循环网络,最后到图网络,网络的能力是不断增强的;除此之外我们还可以通过增加注意力机制或外部记忆来增强网络的能力。所以本章围绕注意力机制和外部记忆展开。
第8章 注意力机制与外部记忆_第1张图片


8.1 人脑中的注意力机制

8.1.1问题引入—阅读理解问题

第8章 注意力机制与外部记忆_第2张图片
如上图紫色部分所示,通过词嵌入将上图中1-6句看做sorty,输入Words,通过词嵌入转化为词向量,通过RNN输出为story的输出向量;将上图第7句看做Query,同理得到其输出;将两部分输出组合,在经过一个NLP分类器,即可得到阅读理解的结果为office。但这样的模型存在以下问题:

  • 长存依赖问题:Story的输出向量无法完全表示story中所包含的文本信息。
  • 输出向量包含无关信息:像1、3、4句未包含问题相关的信息,但也被编入到Story的输出向量中。

8.1.2人脑中的注意力

人脑每个时刻接收的外界输入信息非常多,包括来源于视觉、听觉、触觉的各种各样的信息。但就视觉来说,眼睛每秒钟都会发送千万比特的信息给视觉神经系统。人脑通过注意力来解决信息超载问题。

8.1.3注意力示例

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

8.1.4注意的实现

  • 汇聚(pooling)
    是一种自下而上的方式,当给定信息时,人脑自发地将注意力集中到某些方面。
    :给定以下一张报纸,人脑会自发地将注意力集中到报纸上的图片以及一些大字而忽略小字的文本内容。

第8章 注意力机制与外部记忆_第3张图片

  • 会聚(focus)
    是一种自上而下的方式,当给一个问题时,人脑自发地将注意力集中到与问题相关的方面而忽略其他信息。
    :给定如下五张牌,让计算所有黑色牌的数字之和,人脑会自发地将注意力集中黑色牌上的数字而忽略其花色。
    第8章 注意力机制与外部记忆_第4张图片

8.2 人工神经网络中的注意力机制

8.2.1 软性注意力机制(soft attention mechanism)

注意力机制的计算过程,如下图所示将注意力q添加到 x i x_i xi中,
第8章 注意力机制与外部记忆_第5张图片

之后进行计算,其计算过程如下:

  1. 计算注意力打分函数的值
    第8章 注意力机制与外部记忆_第6张图片
  2. 计算注意力分布α
    第8章 注意力机制与外部记忆_第7张图片
  3. 根据α来计算输入信息的加权平均
    第8章 注意力机制与外部记忆_第8张图片

8.2.2 键值注意力(key-value pair attention)

用键计算注意力分布α,用值计算注意力的加权平均。
第8章 注意力机制与外部记忆_第9张图片第8章 注意力机制与外部记忆_第10张图片

8.2.3 多头注意力(multi-head pair attention)

利用多个查询 Q = [ q 1 , … , q M ] Q=[q_1,…,q_M] Q=[q1,qM],同时从输入信息中选取多组信息,每个“注意力头”关注输入信息的不同部分。
a t t ( ( K , V ) , Q ) = a t t ( ( K , V ) , q 1 ) ⊕ … ⊕ a t t ( ( K , V ) , q M ) att((K,V),Q)=att((K,V),q_1) \oplus …\oplus att((K,V),q_M) att((K,V),Q)=att((K,V),q1)att((K,V),qM)

8.2.4 结构化注意力(structural attention)在之前介绍中,我们假设所有的输入信息是同等重要的,是一种扁平(Flat)

结构,注意力分布实际上是在所有输入信息上的多项分布.但如果输入信息本身具有层次(Hierarchical)结构,比如文本可以分为词、句子、段落、篇章等不同粒度的层次,我们可以使用层次化的注意力来进行更好的信息选择 [Yang et al.,2016].此外,还可以假设注意力为上下文相关的二项分布,用一种图模型来构建更复杂的结构化注意力分布[Kim et al., 2017]。

8.2.5 指针网络

只使用注意力机制的第一步,将注意力分布作为一个软性的指针(pointer)来指出相关的信息。
图8.2给出了指针网络的示例,其中1, 2, 3 为输入数字20, 5, 10经过循环神经网络的隐状态,0 对应一个特殊字符 ‘<’.当输入 ‘>’ 时,网络一步一步输出三个输入数字从大到小排列的下标。
第8章 注意力机制与外部记忆_第11张图片

8.3 注意力机制的应用

8.3.1 文本分类

将文本表示为向量,之后进行注意力向量与文本向量计算之间的计算,将计算结果送入分类器即得到文本分类结果。
第8章 注意力机制与外部记忆_第12张图片
第8章 注意力机制与外部记忆_第13张图片
第8章 注意力机制与外部记忆_第14张图片

8.3.2 机器翻译

将Encoder文本中每个词对应的向量输出,之后与Decoder输入文本的单词向量进行计算,再进行一些列的操作来获得预测出的文本。
第8章 注意力机制与外部记忆_第15张图片

8.3.3 看图说话

将图片的每聚焦部分对应一个单词。
第8章 注意力机制与外部记忆_第16张图片

看图说话注意力

8.3.4 阅读理解

第8章 注意力机制与外部记忆_第17张图片

8.4 自注意力模型

8.4.1问题引入

当使用神经网络来处理一个变长的向量序列时,我们通常可以使用卷积网络或循环网络进行编码来得到一个相同长度的输出向量序列,但这种方法只建立了输入信息的短距离局部依赖关系。
第8章 注意力机制与外部记忆_第18张图片
如果要建立输入序列之间的长距离依赖关系,可以使用以下两种方法:一种方法是增加网络的层数,通过一个深层网络来获取远距离的信息交互;另一种方法是使用全连接网络。全连接网络是一种非常直接的建模远距离依赖的模型,但是无法处理变长的输入序列。不同的输入长度,其连接权重的大小也是不同的。这时我们就可以利用注意力机制来“动态”地生成不同连接的权重,这就是自注意力模型(Self-Attention Model)
第8章 注意力机制与外部记忆_第19张图片
上图中全连接模型中的实线权重为固定连接,自注意力模型中的虚线权重由注意力机制动态生成

8.4.2 自注意模型示例

第8章 注意力机制与外部记忆_第20张图片

8.4.3QKV模式(Query-Key-Value)

第8章 注意力机制与外部记忆_第21张图片
假设输入序列为 = [1, ⋯ , ] ∈ ℝ×,输出序列为 = [1, ⋯ , ] ∈ℝ×,自注意力模型的具体计算过程如下:

  1. 对于每个输入 _ xi,我们首先将其线性映射到三个不同的空间,得到查询向量 ∈ R _ ∈ ℝ^{_} qiRDk、键向量 ∈ R _∈ ℝ^{_ } kiRDk和值向量 ∈ R _ ∈ ℝ^{} viRDv,对于整个输入序列,线性映射过程可以简写为:
    = ∈ R × = ∈ R × = ∈ R × = _ ∈ ℝ^{×} \\ = _ ∈ ℝ^{×} \\ = _ ∈ ℝ^{×} Q=WqXRDk×NK=WkXRDk×NV=WvXRDk×N
    其中 W ∈ R × D x , ∈ R × , ∈ R × W_∈ℝ^{_×D_x}, _ ∈ ℝ^{_×_} ,_ ∈ℝ^{_×_} WqRDk×Dx,WkRDk×Dx,WvRDv×Dx分别为线性映射的参数矩阵, = [ 1 , ⋯ , ] , = [ 1 , ⋯ , ] , = [ 1 , ⋯ , ] = [_1, ⋯ , _ ], = [_1, ⋯ , _ ], = [_1, ⋯ , _ ] Q=[q1,,qN],K=[k1,,kN],V=[v1,,vN]分别是由查询向量、键向量和值向量构成的矩阵。
  2. 对于每一个查询向量 ∈ _ ∈ qnQ,利用键值对注意力机制,可以得到输出向量 _ hn:
    = a t t ( ( , ) , ) = ∑ j = 1 N α n j v j = ∑ j = 1 N s o f t m a x ( s ( k j , q n ) ) v j _ = att((, ), _)\\ =\sum_{j=1}^{N}\alpha _{nj}v_j\\ =\sum_{j=1}^{N}softmax(s(k_j,q_n))v_j\\ hn=att((K,V),qn)=j=1Nαnjvj=j=1Nsoftmax(s(kj,qn))vj
    其中, ∈ [1, ]为输出和输入向量序列的位置, α \alpha_{} αnj 表示第个输出关注到第j个输入的权重
    如果使用缩放点积来作为注意力打分函数,输出向量序列可以简写为
    = s o f t m a x ( K T Q D k ) = softmax(\frac{K^TQ}{\sqrt {D_k}}) H=Vsoftmax(Dk KTQ)
    其中softmax(⋅)为按列进行归一化的函数。

8.5 人脑中的记忆

在人脑中,记忆在大脑皮层是分布式存储的,而不是存储于某个局部区域,人脑中的记忆具有周期性和联想性。

记忆周期
虽然我们还不清楚人脑记忆的存储机制,但是已经大概可以确定不同脑区参与了记忆形成的几个阶段.人脑记忆的一个特点是,记忆一般分为长期记忆和短期记忆。

长期记忆(Long-Term Memory)
也称为结构记忆或知识(Knowledge),体现为神经元之间的连接形态,其更新速度比较慢。

短期记忆(Short-Term Memory)
体现为神经元的活动,更新较快,维持时间为几秒至几分钟.短期记忆是神经连接的暂时性强化,通过不断巩固、强化可形成长期记忆。

演化(Evolution)过程
短期记忆、长期记忆的动态更新过程称为演化(Evolution)过程。

联想记忆
大脑记忆的一个主要特点是通过联想来进行检索的,联想记忆是指一种可以通过内容匹配的方法进行寻址的信息存储方式,也称为基于内容寻址的存储。

8.6 记忆增强神经网络

外部记忆(External Memory)
为了增强网络容量,我们可以引入辅助记忆单元,将一些和任务相关的信息保存在辅助记忆中,在需要时再进行读取,这样可以有效地增加网络容量.这个引入的辅助记忆单元一般称为外部记忆。

记忆增强神经网络(记忆网络)
装备外部记忆的神经网络。
第8章 注意力机制与外部记忆_第22张图片

记忆网络典型结构

  • 主网络:也称为控制器(Controller),负责信息处理,以及与外界的交互(接受外界的输入信息并产生输出到外界).主网络还同时通过读写模块和外部记忆进行交互。
  • 外部记忆单元:外部记忆单元用来存储信息,一般可以分为很多记忆片段(Memory Segment),这些记忆片段按照一定的结构来进行组织。记忆片段一般用向量来表示,外部记忆单元可以用一组向量 = [ 1 , ⋯ , ] = [_1, ⋯ , _ ] M=[m1,,mN]来表示.这些向量的组织方式可以是集合、树、栈或队列等.大部分信息存储于外部记忆中,不需要全时参与主网络的运算。
  • 读取模块:根据主网络生成的查询向量 _ qr,从外部记忆单元中读取相应的信息 = ( , ) = (, _) r=R(M,qr)
  • 写入模块 :根据主网络生成的查询向量 _ qw 和要写入的信息 来更新外部记忆 = ( , , ) = (, _, ) M=W(M,qw,a)

8.5.1 端到端的记忆网络

给定一组需要存储的信息 1 ∶ = { 1 , ⋯ , } _{1∶} = \{_1, ⋯ , _ \} m1N={m1,,mN},首先将其转换成两组记忆片段 = [ 1 , ⋯ , ] = [_1, ⋯ , _ ] A=[a1,,aN] = [ 1 , ⋯ , ] = [_1, ⋯ , _ ] C=[c1,,cN],分别存放在两个外部记忆单元中,其中用来进行寻址, 用来进行输出.主网络根据输入生成,并使用键值对注意力机制来从外部记忆中读取相关信息:
在这里插入图片描述
并产生输出:
y = f ( q + r ) y=f(q+r) y=f(q+r)
其中(⋅)为预测函数.当应用到分类任务时,(⋅)可以设为Softmax函数.

多跳操作:
让主网络和外部记忆进行多轮交互。在第轮交互中,主网络根据上次从外部记忆中读取的信息 ( − 1 ) ^{(−1)} r(k1),产生新的
查询向量:
q ( k ) = q ( k − 1 ) + r ( k − 1 ) q^{(k)}=q^{(k-1)}+r^{(k-1)} q(k)=q(k1)+r(k1)
其中 ( 0 ) ^{(0)} q(0) 为初始的查询向量, r ( 0 ) r^{(0)} r(0)= 0.
假设第轮交互的外部记忆为 ( ) ^{()} A(k) ( ) ^{()} C(k),主网络从外部记忆读取信息为:
在这里插入图片描述
在 轮交互后,用 = (() + ()) 进行预测.这种多轮的交互方式也称为多跳(Multi-Hop)操作.
第8章 注意力机制与外部记忆_第23张图片

8.5.2 神经图灵机

8.5.2.1 图灵机

图灵机结构
第8章 注意力机制与外部记忆_第24张图片
图灵机组件构成
(1)一条无限长的纸带:纸带上有一个个方格,每个方格可以存储一个符号.
(2) 一个符号表:纸带上可能出现的所有符号的集合,包含一个特殊的空白符.
(3) 一个读写头:指向纸带上某个方格的指针,每次可以向左或右移动一个位置,并可以读取、擦除、写入当前方格中的内容.
(4) 一个状态寄存器:用来保存图灵机当前所处的状态,其中包含两个特殊的状态:起始状态和终止状态.
(5) 一套控制规则:根据当前机器所处的状态以及当前读写头所指的方格上的符号来确定读写头下一步的动作,令机器进入一个新的状态.

8.5.2.2 神经图灵机

神经图灵机组成

  • 由控制器和外部记忆组成;
  • 外部记忆定义为矩阵 ∈ R × ∈ ℝ^{×} MRD×N,这里 是记忆片段的数量, 是每个记忆片段的大小,外部记忆是可读写的;
  • 控制器为一个前馈或循环神经网络。
    第8章 注意力机制与外部记忆_第25张图片
    神经图灵机工作流程
  • 在每个时刻,控制器接受当前时刻的输入 _ xt、上一时刻的输出 − 1 _{−1} ht1 和上一时刻从外部记忆中读取的信息 − 1 _{−1} rt1,并产生输出 _ ht,同时生成和读写外部记忆相关的三个向量:查询向量 _ qt、删除向量 _ et 和增加向量 _ at
  • 然后对外部记忆 m m_ mt 进行读写操作,生成读向量 _ rt 和新的外部记忆 + 1 _{+1} Mt+1
    读操作:
    在这里插入图片描述
    第8章 注意力机制与外部记忆_第26张图片
    写操作:
    删除和增加
    第8章 注意力机制与外部记忆_第27张图片

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


总结

你可能感兴趣的:(神经网路和深度学习,人工智能,深度学习)