深入探究递归神经网络:大牛级的训练和优化如何修成?深入探究递归神经网络:大牛级的训练和优化如何修成?
不同于传统FNN,RNN无需在层面之间构建,同时引入定向循环,能够更好地处理高维度信息的整体逻辑顺序。本文
中,MIT的Nikhil Buduma将带您深入探析RNN的原理、训练和优化等各方面的内容,以及RNN已经获取的一些成就。
在深度学习领域,传统的前馈神经网络(feed-forward neural net,简称FNN)具有出色的表现,取得了许多成功,它
曾在许多不同的任务上——包括手写数字识别和目标分类上创造了记录。甚至到了今天,FNN在解决分类任务上始终
都比其他方法要略胜一筹。
尽管如此,大多数专家还是会达成共识:FNN可以实现的功能仍然相当有限。究其原因,人类的大脑有着惊人的计算
功能,而“分类”任务仅仅是其中很小的一个组成部分。我们不仅能够识别个体案例,更能分析输入信息之间的整体逻辑
序列。这些信息序列富含有大量的内容,信息彼此间有着复杂的时间关联性,并且信息长度各种各样。例如视觉、开
车、演讲还有理解能力,这些都需要我们同时处理高维度的多种输入信息,因为它们时时都在变化,而这是FNN在建
模时就极为匮乏的。
现在的问题在于如何学习信息的逻辑顺序,解决这一问题有一个相当靠谱的途径,那就是递归神经网络(Recurrent
Neural Net,简称RNN)。
RNN是什么?是什么?
RNN建立在与FNN相同的计算单元上,两者之间区别在于:组成这些神经元相互关联的架构有所不同。FNN是建立在
层面之上,其中信息从输入单元向输出单元单向流动,在这些连通模式中并不存在不定向的循环。尽管大脑的神经元
确实在层面之间的连接上包含有不定向循环,我们还是加入了这些限制条件,以牺牲计算的功能性为代价来简化这一
训练过程。因此,为了创建更为强大的计算系统,我们允许RNN打破这些人为设定强加性质的规定:RNN无需在层面无需在层面
之间构建,同时定向循环也会出现之间构建,同时定向循环也会出现。事实上,神经元在实际中是允许彼此相连的。
RNN例图,包含直接循环和内部连通
RNN包含输入单元(input units)群,我们将其标记为u1,u2直到uK,而输出单元(output units)群则被标记为
y1,y2直到yL。RNN还包含隐藏单元(hidden units),我们将其标记为x1,x2直到xN,这些隐藏单元完成了最为有
意思的工作。你会发现,在例图中:有一条单向流动的信息流是从输入单元到达隐藏单元的,与此同时另一条单向流
动的信息流从隐藏单元到达输出单元。在某些情况下,RNN会打破后者的限制,引导信息从输出单元返回隐藏单元,
这些被称为“backprojections”,不让RNN分析更加复杂。我们在这里讨论的技术同样适用于包含backprojections的
RNN。
训练RNN存在很多相当具有挑战性的难题,而这仍是一个非常活跃的研究领域。了解概念之后,本文将带您深入探析
RNN的原理、训练和优化等各方面的内容,以及RNN已经获取的一些成就。
模拟模拟RNN
现在我们了解到RNN的结构了,可以讨论一下RNN模拟一系列事件的方式。举个简单的例子,下文中的这个RNN的运
作方式类似一个计时器模块,这是由Herbert Jaeger设计的一个经典案例。