神经网络之RNN

2017-07-22  本文已影响195人  我叫胆小我喜欢小心

注意:本文为学习笔记,大量直接复制于参考文章中的原文字及图片

一、简介

递归神经网络RNN)是两种人工神经网络的总称。一种是时间递归神经网络(recurrent neural network),另一种是结构递归神经网络(recursive neural network)。时间递归神经网络的神经元间连接构成有向图,而结构递归神经网络利用相似的神经网络结构递归构造更为复杂的深度网络。RNN一般指代时间递归神经网络。
RNNs的目的使用来处理序列数据。在传统的神经网络模型中,是从输入层到隐含层再到输出层,层与层之间是全连接的,每层之间的节点是无连接的。例如,你要预测句子的下一个单词是什么,一般需要用到前面的词,因为句子前后的单词并不是独立的。
RNNs之所以称为循环神经网路,即一个序列当前的输出与前面的输出也有关。具体的表现形式为网络会对前面的信息进行记忆并应用于当前输出的计算中,即隐藏层之间的节点不再无连接而是有连接的,并且隐藏层的输入不仅包括输入层的输出还包括上一时刻隐藏层的输出。理论上,RNNs能够对任何长度的序列数据进行处理。但是在实践中,为了降低复杂性往往假设当前的状态只与前面的几个状态相关,下图便是一个典型的RNNs:

二、训练

对于RNN是的训练和对传统的ANN训练一样。同样使用BP误差反向传播算法,不过有一点区别。如果将RNNs进行网络展开,那么参数W,U,V是共享的,而传统神经网络却不是的。并且在使用梯度下降算法中,每一步的输出不仅依赖当前步的网络,并且还以来前面若干步网络的状态。比如,在t=4时,我们还需要向后传递三步,已经后面的三步都需要加上各种的梯度。该学习算法称为Backpropagation Through Time (BPTT)。

先来看一看符号注解:


上述符号的关系如下:



具体的计算过程在这里不详细写,大家想看的去看参考文章BPTT算法推导。求偏导是为了求损失函数的最小值,可以看看之前的关于BP的文章

三、应用

RNNs已经被在实践中证明对NLP是非常成功的。如词向量表达、语句合法性检查、词性标注等。

参考文章:
循环神经网络(RNN, Recurrent Neural Networks)介绍
递归神经网络-维基百科
BPTT算法推导

上一篇 下一篇

猜你喜欢

热点阅读