递归神经网络入门教程
引言
递归神经网络是一类人工神经网络,可用于识别诸如文本、基因组、手写字迹、语音等序列数据的模式,也可用于识别传感器、股票市场、政府机构产生的数值型时间序列数据。递归网络可以说是最强大的神经网络,甚至可以将图像分解为一系列图像块,作为序列加以处理。由于递归网络拥有一种特定的记忆模式,而记忆也是人类的基本能力之一,所以下文会时常将递归网络与人脑的记忆活动进行类比。
前馈网络回顾
要理解递归网络,首先需要了解前馈网络的基础知识。这两种网络的名字都来自于它们通过一系列网络节点数学运算来传递信息的方式。前馈网络将信息径直向前递送(从不返回已经过的节点),而递归网络则将信息循环传递。
在前馈网络中,样例输入网络后被转换为一项输出;在进行有监督学习时,输出为一个标签。也就是说,前馈网络将原始数据映射到类别,识别出信号的模式,例如一张输入图像应当给予“猫”还是“大象”的标签。
我们用带有标签的图像定型一个前馈网络,直到网络在猜测图像类别时的错误达到最少。将参数,即权重定型后,网络就可以对从未见过的数据进行分类。已定型的前馈网络可以接受任何随机的图片组合,而输入的第一张照片并不会影响网络对第二张照片的分类。看到一张猫的照片不会导致网络预期下一张照片是大象。
这是因为网络并没有时间顺序的概念,它所考虑的唯一输入是当前所接受的样例。前馈网络仿佛患有短期失忆症;它们只有早先被定型时的记忆。
递归网络
递归网络与前馈网络不同,其输入不仅包括当前所见的输入样例,还包括网络在上一个时刻所感知到信息。以下是[由Elman提出的早期递归网络]的示意图(https://web.stanford.edu/group/pdplab/pdphandbook/handbookch8.html),图中最下行的BTSXPE代表当前的输入样例,而CONTEXT UNIT则表示前一时刻的输出。
递归网络在第t-1个时间步的判定会影响其在随后第t个时间步的判定。所以递归网络有来自当下和不久之前的两种输入,此二者的结合决定了网络对于新数据如何反应,与人类日常生活中的情形颇为相似。
递归网络与前馈网络的区别便在于这种不断将自身上一刻输出当作输入的反馈循环。人们常说递归网络是有记忆的。2 为神经网络添加记忆的目的在于:序列本身即带有信息,而递归网络能利用这种信息完成前馈网络无法完成的任务。
这些顺序信息保存在递归网络隐藏状态中,不断向前层层传递,跨越许多个时间步,影响每一个新样例的处理。
人类记忆会在体内不断进行不可见的循环,对我们的行为产生影响而不显现出完整样貌,而信息也同样会在递归网络的隐藏状态中循环。英语中有许多描述记忆反馈循环的说法。例如,我们会说“一个人被往日所为之事纠缠”,这其实就是在讲过去的输出对当前造成了影响。法国人称之为“Le passé qui ne passe pas”,即“过去之事不曾过去”。
让我们用数学语言来描述将记忆向前传递的过程: