人工智能之机器学习的循环神经网络RNN算法解析

前言:人工智能机器学习有关算法内容,请参见公众号“科技优化生活”之前相关文章。人工智能之机器学习主要有三大类:1)分类;2)回归;3)聚类。今天我们重点探讨一下循环神经网络(RNN)算法。

 

循环神经网络(RNN)现已成为国际上神经网络专家研究的重要对象之一。它是一种节点定向连接成环的人工神经网络,最初由Jordan,Pineda.Williams,Elman等于上世纪80年代末提出的一种神经网络结构模型。

 

引领循环神经网络RNN研究的主要是JuergenSchmidhuber和他的学生——其中包括SeppHochreiter,他发现了高深度网络所遇到的梯度消失问题,后来又发明了长短期记忆(LSTM)循环网络;还有Alex Graves,他目前在DeepMind任职。另外两位比较著名的研究者分别是:Felix Gers,他发明了LSTM遗忘门;Justin Bayer,他发明了可以让LSTM拓扑结构根据具体问题进行自动演化的方法。

 

RNN概念:

循环神经网络RNN(Recurrent NeuronNetwork)的内部状态可以展示动态时序行为。不同于前馈神经网络的是,RNN可以利用它内部的记忆来处理任意时序的输入序列,这让它可以更容易处理如不分段的手写识别、语音识别等。

 

人工智能之机器学习的循环神经网络RNN算法解析

 

循环神经网络(RNN)可以实现并行和序列计算,原则上可以计算任何传统计算机所能计算的东西。但和传统计算机不同的是,RNN与人类大脑有相似之处;人脑是一种由神经元相互联结组成的大型前馈网络,可以借由某种方式学会将长达人的一生的感觉信号输入流转换为一个有效的运动输出序列。人脑是一个杰出的模范,因为它能解决许多计算机尚且力所不及的问题。

 

RNN特征:

循环神经网络RNN的本质特征是在处理单元之间既有内部的反馈连接又有前馈连接。从系统观点看,它是一个反馈动力系统,在计算过程中体现过程动态特性,比前馈神经网络具有更强的动态行为和计算能力。

 

RNN分类:

1)完全递归网络(Fully recurrent network)

 

2)Hopfield网络(Hopfield network)

 

3)Elman networks and Jordannetworks

 

4)回声状态网络(Echo state network)

 

5)长短记忆网络(Long short term memery network)

 

6)双向网络(Bi-direcTIonal RNN)

 

7)持续型网络(ConTInuous-TIme RNN)

 

8)分层RNN(Hierarchical RNN)

 

9)复发性多层感知器(Recurrent mulTIlayer perceptron)

 

10)二阶递归神经网络(Second Order Recurrent Neural Network)

 

11)波拉克的连续的级联网络(Pollack’s sequential cascaded networks)

 

RNN与FNN区别:

循环神经网络RNN和前馈神经网络FNN的最大区别在于有一个反馈循环。另外,两者的记忆模式完全不同。在定型之后,前馈神经网络会生成已学习数据的静态模型,然后接受新的样例,进行准确的分类或聚类。而循环神经网络RNN则会生成动态模型,即会随时间推移而变化的模型,即将第n-1步的输出反馈给神经网络,对第n步的输出产生影响,之后的每一步也都以此类推。这种变化可以让模型依据输入样例的上下文来进行准确的分类。

 

RNN模型与记忆:

循环神经网络RNN包含了决定同个序列中的前一次分类结果的隐藏状态。以后每一步,这一隐藏状态会与新一步的输入数据相加,生成一个新的隐藏状态,再得出一个新的分类结果。每个隐藏状态都会被循环利用,生成经过调整的后续隐藏状态。

 

人类的记忆模式同样能考虑上下文,循环利用对于过往状态的认知来恰当地解读新数据。人类会受到短期记忆和先前感觉的影响,保留了不同的“隐藏状态”。

 

RNN基本结构:

 

人工智能之机器学习的循环神经网络RNN算法解析

 

RNN是一种对序列数据建模的神经网络,即一个序列当前的输出与前面的输出也有关。具体的表现形式为网络会对前面的信息进行记忆并应用于当前输出的计算中,即隐藏层之间的节点不再无连接而是有连接的,并且隐藏层的输入不仅包括输入层的输出还包括上一时刻隐藏层的输出。下面是一个RNN模型的示例图,其中:

 

xt是t时刻的输入;

st是t时刻的隐状态(memory),基于上一时刻的隐状态和当前输入得到:st=f(Uxt+Wst?1),其中f一般是非线性的激活函数,在计算s0时,需要用到s?1。

 

ot表示t时刻的输出,ot=softmax(Vst);

 

在RNN中,所有层次均共享同样的参数。其反应出RNN中的每一步都在做相同的事,只是输入不同,因此大大地降低了网络中需要学习的参数。

 

人工智能之机器学习的循环神经网络RNN算法解析

 

RNN允许对向量的序列进行操作:输入可以是序列,输出也可以是序列,在最一般化的情况下输入输出都可以是序列。输出序列理解为RNN关于序列下一个状态预测的信心程度。

 

  • 人工智能之机器学习的循环神经网络RNN算法解析已关闭评论
    A+
发布日期:2019年03月04日  所属分类:参考设计