根据通用近似定理,前馈网络和循环网络都有很强的能力。但由于优化算法和计算能力的限制,在实践中很难达到通用近似的能力。特别是在处理复杂任务时,比如需要处理大量的输入信息或者复杂的计算流程时,目前计算机的计算能力依然是限制神经网络发展的瓶颈。
为了减少计算复杂度,通过部分借鉴生物神经网络的一些机制,我们引入了局部连接、权重共享以及汇聚操作来简化神经网络结构。虽然这些机制可以有效缓解模型的复杂度和表达能力之间的矛盾,但是我们依然希望在不“过度” 增加模型复杂度(主要是模型参数)的情况下来提高模型的表达能力。以阅读理解任务为例,给定的背景文章(Background Document)一般比较长,如果用循环神经网络来将其转换为向量表示,那么这个编码向量很难反映出背景文章的所有语义。在比较简单的任务(比如文本分类)中,只需要编码一些对分类有用的信息,因此用一个向量来表示文本语义是可行的。但是在阅读理解任务中,编码时还不知道可能会接收到什么样的问句。这些问句可能会涉及背景文章的所有信息点,因此丢失任何信息都可能导致无法正确回答问题。
神经网络中可以存储的信息量称为网络容量(Network Capacity)。一般来讲,利用一组神经元来存储信息时,其存储容量和神经元的数量以及网络的复杂度成正比。如果要存储越多的信息,神经元数量就要越多或者网络要越复杂,进 而导致神经网络的参数成倍地增加。
我们人脑的生物神经网络同样存在网络容量问题,人脑中的工作记忆大概只有几秒钟的时间,类似于循环神经网络中的隐状态。而人脑每个时刻接收的外界输入信息非常多,包括来自于视觉、听觉、触觉的各种各样的信息。单就视觉来说,眼睛每秒钟都会发送千万比特的信息给视觉神经系统。人脑在有限的资源下,并不能同时处理这些过载的输入信息。大脑神经系统有两个重要机制可以解决信息过载问题:注意力和记忆机制。
我们可以借鉴人脑解决信息过载的机制,从两方面来提高神经网络处理信 息的能力。一方面是注意力,通过自上而下的信息选择机制来过滤掉大量的无关信息;另一方面是引入额外的外部记忆,优化神经网络的记忆结构来提高神经网络存储信息的容量。
在计算能力有限情况下,注意力机制(Attention Mechanism)作为一种资源分配方案,将有限的计算资源用来处理更重要的信息,是解决信息超载问题的主要手段。
注意力是一种人类不可或缺的复杂认知功能,指人可以在关注一些信息的 同时忽略另一些信息的选择能力。在日常生活中,我们通过视觉、听觉、触觉等方 式接收大量的感觉输入。但是人脑还能在这些外界的信息轰炸中有条不紊地工 作,是因为人脑可以有意或无意地从这些大量输入信息中选择小部分的有用信 息来重点处理,并忽略其他信息。这种能力就叫做注意力(Attention)。注意力可 以作用在外部的刺激(听觉、视觉、味觉等),也可以作用在内部的意识(思考、回 忆等)。
注意力一般分为两种:
一种是自上而下的有意识的注意力,称为聚焦式注意力(Focus Attention)。 聚焦式注意力是指有预定目的、依赖任务的,主动有意识地聚焦于某一对象的注意力。
另一种是自下而上的无意识的注意力,称为基于显著性的注意力(Saliency- Based Attention)。基于显著性的注意力是由外界刺激驱动的注意,不需要主动 干预,也和任务无关。如果一个对象的刺激信息不同于其周围信息,一种无意识 的“赢者通吃”(Winner-Take-All)或者门控(Gating)机制就可以把注意力转向 这个对象。不管这些注意力是有意还是无意,大部分的人脑活动都需要依赖注意 力,比如记忆信息、阅读或思考等。
一个和注意力有关的例子是鸡尾酒会效应。当一个人在吵闹的鸡尾酒会上 和朋友聊天时,尽管周围噪音干扰很多,他还是可以听到朋友的谈话内容,而忽 略其他人的声音(聚焦式注意力)。同时,如果未注意到的背景声中有重要的词
聚焦式注意力也常称为选择 性注意力(Selective Atten- tion)。(比如他的名字),他会马上注意到(显著性注意力)
聚焦式注意力一般会随着环境、情景或任务的不同而选择不同的信息。比如 当要从人群中寻找某个人时,我们会专注于每个人的脸部;而当要统计人群的人 数时,我们只需要专注于每个人的轮廓。
当用神经网络来处理大量的输入信息时,也可以借鉴人脑的注意力机制,只 选择一些关键的信息输入进行处理,来提高神经网络的效率。在目前的神经网络 模型中,我们可以将最大汇聚(Max Pooling)、门控(Gating)机制近似地看作是 自下而上的基于显著性的注意力机制。除此之外,自上而下的聚焦式注意力也是 一种有效的信息选择方式。以阅读理解任务为例,给定一篇很长的文章,然后就 此文章的内容进行提问。提出的问题只和段落中的一两个句子相关,其余部分都 是无关的。为了减小神经网络的计算负担,只需要把相关的片段挑选出来让后续 的神经网络来处理,而不需要把所有文章内容都输入给神经网络。
除了上面介绍的基本模式外,注意力机制还存在一些变化的模型。
注意力机制可以单独使用,但更多地用作神经网络中的一个组件。
注意力机制主要是用来做信息筛选,从输入信息中选取相关的信息。注意力机制可以分为两步:一是计算注意力分布 α,二是根据 α 来计算输入信息的加权平均。我们可以只利用注意力机制中的第一步,将注意力分布作为一个软性的指针(pointer)来指出相关信息的位置。
为了增强网络容量,我们可以引入辅助记忆单元,将一些信息保存在辅助记 忆中,在需要时再进行读取,这样可以有效地增加网络容量。这个引入的辅助记 忆单元一般称为外部记忆(External Memory),以区别于循环神经网络的内部 记忆(即隐状态)。
在生物神经网络中,记忆是外界信息在人脑中的存储机制。大脑记忆毫无疑 问是通过生物神经网络实现的。虽然其机理目前还无法解释,但直观上记忆机 制和神经网络的连接形态以及神经元的活动相关。生理学家发现信息是作为一 种整体效应(collective effect)存储在大脑组织中。当大脑皮层的不同部位损伤 时,其导致的不同行为表现似乎取决于损伤的程度而不是损伤的确切位置 [Ko- honen,2012]。大脑组织的每个部分似乎都携带一些导致相似行为的信息。也就 是说,记忆在大脑皮层是分布式存储的,而不是存储于某个局部区域 [Thompson, 1975]。
人脑中的记忆具有周期性和联想性。
记忆周期 虽然我们还不清楚人脑记忆的存储机制,但是已经大概可以确定不 同脑区参与了记忆形成的几个阶段。人脑记忆的一个特点是,记忆一般分为长 期记忆和短期记忆。长期记忆(Long-Term Memory),也称为结构记忆或知识
(Knowledge),体现为神经元之间的连接形态,其更新速度比较慢。短期记忆 (Short-Term Memory)体现为神经元的活动,更新较快,维持时间为几秒至几分钟。短期记忆是神经连接的暂时性强化,通过不断巩固、强化可形成长期记忆。短期记忆、长期记忆的动态更新过程称为演化(Evolution)过程。
因此,长期记忆可以类比于人工神经网络中的权重参数,而短期记忆可以类
比于人工神经网络中的隐状态。
除了长期记忆和短期记忆,人脑中还会存在一个“缓存”,称为工作记忆 (Working Memory)。在执行某个认知行为(比如记下电话号码,算术运算)时,
工作记忆是一个记忆的临时存储和处理系统,维持时间通常为几秒钟。从时间上 看,工作记忆也是一种短期记忆,但和短期记忆的内涵不同。短期记忆一般指外 界的输入信息在人脑中的表示和短期存储,不关心这些记忆如何被使用;而工作 记忆是一个和任务相关的“容器”,可以临时存放和某项任务相关的短期记忆和 其它相关的内在记忆。工作记忆的容量比较小,一般可以容纳 4 组项目。
作为不严格的类比,现代计算机的存储也可以按照不同的周期分为不同的 存储单元,比如寄存器、内存、外存(比如硬盘等)。
联想记忆 大脑记忆的一个主要特点是通过联想来进行检索的。联想记忆(Asso- ciative Memory)是指一种学习和记住不同对象之间关系的能力,比如看见一个 人然后想起他的名字,或记住某种食物的味道等。联想记忆是指一种可以通过内 容匹配的方法进行寻址的信息存储方式,也称为基于内容寻址的存储(Content- Addressable Memory,CAM)。作为对比,现代计算机的存储方式是根据地址来 进行存储的,称为随机访问存储(Random Access Memory,RAM)。
和之前介绍的 LSTM 中的记忆单元相比,外部记忆可以存储更多的信息,并 且不直接参与计算,通过读写接口来进行操作。而 LSTM 模型中的记忆单元包含 了信息存储和计算两种功能,不能存储太多的信息。因此,LSTM 中的记忆单元 可以类比于计算机中的寄存器,而外部记忆可以类比于计算机中的内存单元。
借鉴人脑中工作记忆,可以在神经网络中引入一个外部记忆单元来提高网 络容量。外部记忆的实现途径有两种:一种是结构化的记忆,这种记忆和计算机 中的信息存储方法比较类似,可以分为多个记忆片段,并按照一定的结构来存储; 另一种是基于神经动力学的联想记忆,这种记忆方式具有更好的生物学解释性。
图8.1给出了不同领域中记忆模型的不严格类比。值得注意的是,由于人脑 的记忆机制十分复杂,这里列出的类比关系并不严格。
为了增强网络容量,一种比较简单的方式是引入结构化的记忆模块,将和任 务相关的短期记忆保存在记忆中,需要时再进行读取。这种装备外部记忆的神经 网络也称为记忆网络(Memory Network,MN)或记忆增强神经网络(Memory Augmented Neural Network,MANN)。
外部记忆从记忆结构、读写方式等方面可以演变出很多模型。比较典型的结构化外部记忆模型包括端到端记忆网络、神经图灵机等。
既然联想记忆具有存储和检索功能,我们可以利用联想记忆来增加网络容 量。和结构化的外部记忆相比,联想记忆具有更好的生物学解释性。比如,我们可 以将一个联想记忆模型作为部件引入 LSTM 网络中,从而在不引入额外参数的 情况下增加网络容量 [Danihelka 等人,2016];或者将循环神经网络中的部分连接权重作为短期记忆,并通过一个联想记忆模型进行更新,从而提高网络性能 [Ba 等人,2016]。在上述的网络中,联想记忆都是作为一个更大网络的组件,用来增 加短期记忆的容量。联想记忆组件的参数可以使用 Hebbian 方式来学习,也可以 作为整个网络参数的一部分来学习。
注意力机制是一种(不严格的)受人类神经系统启发的信息处理机制。比如 人视觉神经系统并不会一次性地处理所有接受到的视觉信息,而是有选择性地 处理部分信息,从而提高其工作效率。
在人工智能领域,注意力这一概念最早是在计算机视觉中提出。Itti 等人[1998] 提出了一种自下而上的注意力模型。该模型通过提取局部的低级视觉特征,得到 一些潜在的显著(salient)区域。在神经网络中,Mnih 等人[2014] 在循环神经网 络模型上使用了注意力机制来进行图像分类。Bahdanau 等人[2014] 使用注意力 机制在机器翻译任务上将翻译和对齐同时进行。目前,注意力机制已经在语音 识别、图像标题生成、阅读理解、文本分类、机器翻译等多个任务上取得了很好 的效果,也变得越来越流行。注意力机制的一个重要应用是自注意力。自注意力 可以作为神经网络中的一层来使用,有效地建模长距离依赖问题 [Vaswani 等人, 2017]。
通过引入外部记忆,神经网络在一定程度上可以解决模型容量问题。外部记 忆的代表性模型有神经图灵机 [Graves 等人,2014]、端到端记忆网络 [Sukhbaatar 等人,2015]、动态记忆网络 [Kumar 等人,2016] 等。这类引入外部记忆的模型也称 为记忆增强网络(Memory-Enhanced Network)。此外,基于神经动力学的联想 记忆也可以作为一种外部记忆,并具有更好的生物学解释性。Hopfield[1984] 将 能量函数的概念引入到神经网络模型中,提出了 Hopfield 网络。Hopfield 网络在 旅行商问题上获得当时最好结果,引起轰动。有一些学者将联想记忆模型作为部 件引入循环神经网络中来增加网络容量[Ba等人; Danihelka等人,2016; 2016], 但受限于联想记忆模型的存储和检索效率,这类方法收效有限。目前人工神经网 络中的外部记忆模型结构还比较简单,需要借鉴神经科学的研究成果,提出更有 效的记忆模型,增加网络容量。