第1章 绪论
第2章 机器学习概述
第3章 线性模型
第4章 前馈神经网络
第5章 卷积神经网络
第6章 循环神经网络
第7章 网络优化与正则化
第8章 注意力机制与外部记忆
第9章 无监督学习
第10章 模型独立的学习方式
第11章 概率图模型
第12章 深度信念网络
第13章 深度生成模型
第14章 深度强化学习
第15章 序列生成模型
如下图,可以看出,由全连接前馈网络到卷积网络,再到循环网络,最后到图网络,网络的能力是不断增强的;除此之外我们还可以通过增加注意力机制或外部记忆来增强网络的能力。所以本章围绕注意力机制和外部记忆展开。
如上图紫色部分所示,通过词嵌入将上图中1-6句看做sorty,输入Words,通过词嵌入转化为词向量,通过RNN输出为story的输出向量;将上图第7句看做Query,同理得到其输出;将两部分输出组合,在经过一个NLP分类器,即可得到阅读理解的结果为office。但这样的模型存在以下问题:
人脑每个时刻接收的外界输入信息非常多,包括来源于视觉、听觉、触觉的各种各样的信息。但就视觉来说,眼睛每秒钟都会发送千万比特的信息给视觉神经系统。人脑通过注意力来解决信息超载问题。
鸡尾酒会效应:当一个人在吵闹的鸡尾酒会上和朋友聊天时,尽管周围噪音干扰很多,他还是可以听到朋友的谈话内容,而忽略其他人的声音。同时,如果注意到的背景声中有重要的词(比如他的名字),他会马上注意到。
注意力机制的计算过程,如下图所示将注意力q添加到 x i x_i xi中,
之后进行计算,其计算过程如下:
利用多个查询 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)
结构,注意力分布实际上是在所有输入信息上的多项分布.但如果输入信息本身具有层次(Hierarchical)结构,比如文本可以分为词、句子、段落、篇章等不同粒度的层次,我们可以使用层次化的注意力来进行更好的信息选择 [Yang et al.,2016].此外,还可以假设注意力为上下文相关的二项分布,用一种图模型来构建更复杂的结构化注意力分布[Kim et al., 2017]。
只使用注意力机制的第一步,将注意力分布作为一个软性的指针(pointer)来指出相关的信息。
图8.2给出了指针网络的示例,其中1, 2, 3 为输入数字20, 5, 10经过循环神经网络的隐状态,0 对应一个特殊字符 ‘<’.当输入 ‘>’ 时,网络一步一步输出三个输入数字从大到小排列的下标。
将文本表示为向量,之后进行注意力向量与文本向量计算之间的计算,将计算结果送入分类器即得到文本分类结果。
将Encoder文本中每个词对应的向量输出,之后与Decoder输入文本的单词向量进行计算,再进行一些列的操作来获得预测出的文本。
看图说话注意力
当使用神经网络来处理一个变长的向量序列时,我们通常可以使用卷积网络或循环网络进行编码来得到一个相同长度的输出向量序列,但这种方法只建立了输入信息的短距离局部依赖关系。
如果要建立输入序列之间的长距离依赖关系,可以使用以下两种方法:一种方法是增加网络的层数,通过一个深层网络来获取远距离的信息交互;另一种方法是使用全连接网络。全连接网络是一种非常直接的建模远距离依赖的模型,但是无法处理变长的输入序列。不同的输入长度,其连接权重的大小也是不同的。这时我们就可以利用注意力机制来“动态”地生成不同连接的权重,这就是自注意力模型(Self-Attention Model)
上图中全连接模型中的实线权重为固定连接,自注意力模型中的虚线权重由注意力机制动态生成
假设输入序列为 = [1, ⋯ , ] ∈ ℝ×,输出序列为 = [1, ⋯ , ] ∈ℝ×,自注意力模型的具体计算过程如下:
在人脑中,记忆在大脑皮层是分布式存储的,而不是存储于某个局部区域,人脑中的记忆具有周期性和联想性。
记忆周期:
虽然我们还不清楚人脑记忆的存储机制,但是已经大概可以确定不同脑区参与了记忆形成的几个阶段.人脑记忆的一个特点是,记忆一般分为长期记忆和短期记忆。
长期记忆(Long-Term Memory):
也称为结构记忆或知识(Knowledge),体现为神经元之间的连接形态,其更新速度比较慢。
短期记忆(Short-Term Memory):
体现为神经元的活动,更新较快,维持时间为几秒至几分钟.短期记忆是神经连接的暂时性强化,通过不断巩固、强化可形成长期记忆。
演化(Evolution)过程:
短期记忆、长期记忆的动态更新过程称为演化(Evolution)过程。
联想记忆 :
大脑记忆的一个主要特点是通过联想来进行检索的,联想记忆是指一种可以通过内容匹配的方法进行寻址的信息存储方式,也称为基于内容寻址的存储。
外部记忆(External Memory):
为了增强网络容量,我们可以引入辅助记忆单元,将一些和任务相关的信息保存在辅助记忆中,在需要时再进行读取,这样可以有效地增加网络容量.这个引入的辅助记忆单元一般称为外部记忆。
记忆网络典型结构:
给定一组需要存储的信息 1 ∶ = { 1 , ⋯ , } _{1∶} = \{_1, ⋯ , _ \} m1∶N={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(k−1),产生新的
查询向量:
q ( k ) = q ( k − 1 ) + r ( k − 1 ) q^{(k)}=q^{(k-1)}+r^{(k-1)} q(k)=q(k−1)+r(k−1)
其中 ( 0 ) ^{(0)} q(0) 为初始的查询向量, r ( 0 ) r^{(0)} r(0)= 0.
假设第轮交互的外部记忆为 ( ) ^{()} A(k)和 ( ) ^{()} C(k),主网络从外部记忆读取信息为:
在 轮交互后,用 = (() + ()) 进行预测.这种多轮的交互方式也称为多跳(Multi-Hop)操作.
图灵机结构:
图灵机组件构成:
(1)一条无限长的纸带:纸带上有一个个方格,每个方格可以存储一个符号.
(2) 一个符号表:纸带上可能出现的所有符号的集合,包含一个特殊的空白符.
(3) 一个读写头:指向纸带上某个方格的指针,每次可以向左或右移动一个位置,并可以读取、擦除、写入当前方格中的内容.
(4) 一个状态寄存器:用来保存图灵机当前所处的状态,其中包含两个特殊的状态:起始状态和终止状态.
(5) 一套控制规则:根据当前机器所处的状态以及当前读写头所指的方格上的符号来确定读写头下一步的动作,令机器进入一个新的状态.
神经图灵机组成: