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


    系列文章目录

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



    前言

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


    8.1 人脑中的注意力机制

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

    在这里插入图片描述
    如上图紫色部分所示,通过词嵌入将上图中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)
      是一种自下而上的方式,当给定信息时,人脑自发地将注意力集中到某些方面。
      :给定以下一张报纸,人脑会自发地将注意力集中到报纸上的图片以及一些大字而忽略小字的文本内容。

    在这里插入图片描述

    • 会聚(focus)
      是一种自上而下的方式,当给一个问题时,人脑自发地将注意力集中到与问题相关的方面而忽略其他信息。
      :给定如下五张牌,让计算所有黑色牌的数字之和,人脑会自发地将注意力集中黑色牌上的数字而忽略其花色。
      在这里插入图片描述

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

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

    注意力机制的计算过程,如下图所示将注意力q添加到 x i x_i xi中,
    在这里插入图片描述

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

    1. 计算注意力打分函数的值
      在这里插入图片描述
    2. 计算注意力分布α
      在这里插入图片描述
    3. 根据α来计算输入信息的加权平均
      在这里插入图片描述

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

    用键计算注意力分布α,用值计算注意力的加权平均。
    在这里插入图片描述在这里插入图片描述

    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.3 注意力机制的应用

    8.3.1 文本分类

    将文本表示为向量,之后进行注意力向量与文本向量计算之间的计算,将计算结果送入分类器即得到文本分类结果。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    8.3.2 机器翻译

    将Encoder文本中每个词对应的向量输出,之后与Decoder输入文本的单词向量进行计算,再进行一些列的操作来获得预测出的文本。
    在这里插入图片描述
    在这里插入图片描述

    8.3.3 看图说话

    将图片的每聚焦部分对应一个单词。
    在这里插入图片描述

    看图说话注意力

    8.3.4 阅读理解

    在这里插入图片描述

    8.4 自注意力模型

    8.4.1问题引入

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

    8.4.2 自注意模型示例

    在这里插入图片描述

    8.4.3QKV模式(Query-Key-Value)

    在这里插入图片描述
    假设输入序列为𝑿 = [𝒙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)
    为了增强网络容量,我们可以引入辅助记忆单元,将一些和任务相关的信息保存在辅助记忆中,在需要时再进行读取,这样可以有效地增加网络容量.这个引入的辅助记忆单元一般称为外部记忆。

    记忆增强神经网络(记忆网络)
    装备外部记忆的神经网络。
    在这里插入图片描述

    记忆网络典型结构

    • 主网络𝐶:也称为控制器(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.5.2 神经图灵机

    8.5.2.1 图灵机

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

    8.5.2.2 神经图灵机

    神经图灵机组成

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

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

    8.6.1 联想记忆

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

    自联想模型(Auto Associative Model)
    输入的模式和输出的模式在同一空间,自联想模型可以通过前馈神经网络或者循环神经网络来实现,也常称为自编码器(Auto-Encoder,AE)。

    异联想模型(Hetero-Associative Model)
    输入的模式和输出的模式不在同一空间,从广义上讲,大部分机器学习问题都可以被看作异联想,因此异联想模型可以作为分类器使用。

    8.6.2 Hopfield网络

    1. 网络介绍

    Hopfield网络(Hopfield Network)是一种循环神经网络模型,由一组互相连接的神经元组成。Hopfield 网络也可以认为是所有神经元都互相连接的不分层的神经网络。每个神经元既是输入单元,又是输出单元,没有隐藏神经元。一个神经元和自身没有反馈相连,不同神经元之间连接权重是对称的。

    四个节点的Hopfield网络

    在这里插入图片描述

    2. 网络更新

    假设一个Hopfield网络有𝑀 个神经元,第𝑖 个神经元的更新规则为:
    在这里插入图片描述
    其中𝑏𝑖 为偏置, 𝑤 𝑖 𝑗 𝑤_{𝑖𝑗} wij为神经元𝑖 和𝑗 之间的连接权重,其具有以下性质:
    在这里插入图片描述
    Hopfield 网络更新:分为异步和同步两种方式。
    异步更新:指每次更新一个神经元,神经元的更新顺序可以是随机或事先固定的。
    同步更新:指一次更新所有的神经元,需要有一个时钟来进行同步.第 𝑡 时刻的神经元状态为 𝒔 𝑡 = [ 𝑠 𝑡 , 1 , 𝑠 𝑡 , 2 , ⋯ , 𝑠 𝑡 , 𝑀 ] T 𝒔_𝑡 = [𝑠_{𝑡,1}, 𝑠_{𝑡,2}, ⋯ , 𝑠_{𝑡,𝑀}]^T st=[st,1,st,2,,st,M]T其更新规则为( s 0 = x s_0 = x s0=x):
    在这里插入图片描述

    3.能量函数

    Hopfield网络的能量函数(Energy Function)𝐸 定义为 :
    在这里插入图片描述
    Hopfield网络稳定:Hopfield网络是稳定的,即能量函数经过多次迭代后会达到收敛状态。

    权重对称:权重对称是一个重要特征,因为它保证了能量函数在神经元激活时单调递减,而不对称的权重可能导致周期性振荡或者混乱。

    吸引点(Attractor):给定一个外部输入,网络经过演化,会达到某个稳定状态.这些稳定状态称吸引点。

    Hopfield网络的能量函数

    在这里插入图片描述

    4. 联想记忆

    Hopfield网络存在有限的吸引点(Attractor),即能量函数的局部最小点.每个吸引点𝒖都对应一个“管辖”区域ℛ𝒖.若输入向量𝒙落入这个区域,网络最终会收敛到𝒖.因此,我们可以把吸引点看作网络中存储的模式(Pattern).
    将网络输入 𝒙 作为起始状态,随时间收敛到吸引点 𝒖 上的过程作为检索过程.即使输入向量 𝒙 只包含部分信息或包含噪声,只要其位于对应存储模式的“吸引”区域内,那么随着时间演化,网络最终会收敛到其对应的存储模式.因此,Hopfield的检索是基于内容寻址的检索,具有联想记忆能力。

    5. 信息存储

    信息存储是指将一组向量𝒙1, ⋯ , 𝒙𝑁 存储在网络中的过程.存储过程为调整神经元之间的连接权重,因此可以看作一种学习过程.一种最简单的学习方式为:神经元 𝑖 和 𝑗 之间的连接权重通过下面公式得到
    在这里插入图片描述
    其中 𝑥 𝑖 ( 𝑛 ) 𝑥^{(𝑛)}_𝑖 xi(n) 是第𝑛个输入向量的第𝑖维特征,如果 𝑥 𝑖 𝑥_𝑖 xi 𝑥 𝑗 𝑥_𝑗 xj 在输入向量中相同的概率越多,则 𝑤 𝑖 𝑗 𝑤_{𝑖𝑗} wij越大。

    赫布规则(Hebbian Rule):在人脑神经网络中,如果两个神经元经常同时激活,则它们之间的连接加强;如果两个神经元经常不同时激活,则连接消失。

    6. 存储容量

    对于联想记忆模型来说,存储容量为其能够可靠地存储和检索模式的最大数量.


    总结

  • 相关阅读:
    路由router
    基于UE高渲染的API开发
    集成电路技术——如何制造芯片(1)
    【NLP】第12章 检测客户情绪以做出预测
    【 Tkinter界面-练习04】 画板作画详细揭示
    DDD与数据事务脚本
    【VCED】Jina
    【数据分享】《中国法律年鉴》1987-2022
    ATF启动(五):服务注册
    tomcat web.xml文件中的session-config
  • 原文地址:https://blog.csdn.net/qq_40940944/article/details/128086081