机器学习——RNN神经网络

一,简介

 

       循环神经网络(Recurrent Neural Network, RNN)是一类以序(sequence)数据为输入,在序列的演进方向进行递归(recursion)且所有节点(循环单元)按链式连接的递归神经网络(recursive neural network) 。

       对循环神经网络的研究始于二十世纪80-90年代,并在二十一世纪初发展为深度学习(deep learning)算法之一,其中双向循环神经网络(Bidirectional RNN, Bi-RNN)和长短期记忆网络(Long Short-Term Memory networks,LSTM)是常见的的循环神经网络  。

        循环神经网络具有记忆性、参数共享并且图灵完备(Turing completeness),因此在对序列的非线性特征进行学习时具有一定优势  。循环神经网络在自然语言处理(Natural Language Processing, NLP),例如语音识别、语言建模、机器翻译等领域有应用,也被用于各类时间序列预报。引入了卷积神经网络(Convoutional Neural Network,CNN)构筑的循环神经网络可以处理包含序列输入的计算机视觉问题。

        历史就不在此过多的赘述。

二,原理

1.1底层原理

      递归神经网络(recurrent neural network,RNN)是一种具有反馈结构的神经网络,其输出不但与当前输入和网络的权值有关,而且也与之前网络的输入有关;RNN通过添加跨越时间点的自连接隐藏层,对时间进行建模;换句话说,隐藏层的反馈,不仅仅进入输出端,而且还进入了下一时间的隐藏层。

       我们直接上图:

 

机器学习——RNN神经网络_第1张图片

(这里建议大家先去看之前的那片神经网络的基本介绍,再来看这篇文章,我就不介绍底层原理了)

我们接着来看一下循环神经网络和经典网络的对比:

机器学习——RNN神经网络_第2张图片

我们可以看到隐藏层在利用已经产生的数据去进一步学习,这就是RNN网络可以进行一个短期的记忆的原理,而长期记忆的实现一般使用LSTM模型,理论上来说CNN模型也可以实现长期记忆,但是实际的效果并不理想,所以LSTM的产生弥补了这部分空白。

接着看一下RNN的基本结构:

机器学习——RNN神经网络_第3张图片

其中Xt为输入,A为模型的处理部分(这里会涉及到很多的公式,我们下面会讲到),ht为输出。

我们进一步将这个RNN的基本结构打开:

机器学习——RNN神经网络_第4张图片

 

  这样的一条链状神经网络代表了一个递归神经网络,可以认为它是对相同神经网络的多重复制,每一时刻的神经网络会传递信息给下一时刻。如何理解它呢?假设有这样一个语言模型,我们要根据句子中已出现的词预测当前词是什么,递归神经网络的工作原理如下:

机器学习——RNN神经网络_第5张图片

 

其中w代表着权重,x代表输入,y代表输出,h代表隐藏层处理状态。

    这里w我们输入“what”“is”“the”它就是自动识别出下一个单词“problem”,在输出层我们就可以看到输入”the“,它就输出了”problem“,这就是类似于小度等一些机器人可以与你对答如流的基础,但是它们有些应用的并不是CNN而是LSTM,因为CNN在长时依赖上存在很大的问题。

1.2长时依赖问题

    长时依赖是这样的一个问题,当预测点与依赖的相关信息距离比较远的时候,就难以学到该相关信息。例如在句子”我是一名中国人,.......(省略数十字),我会说中文",如果我们要预测末尾的“中文”两个字,我们需要上文的“中国人”,或者”中国“理论上,递归神经网络是可以处理这样的问题的,但是实际上,常规的递归神经网络并不能很好地解决长时依赖,好的是LSTM可以很好地解决这个问题。(这里我们不过多引入LSTM,学好CNN是进阶学LSTM的关键)

2.1运算说明

    机器学习——RNN神经网络_第6张图片

1)如上循环的结构图,

  输入单元(intput units):

  输出单元(output units)为:

   隐藏单元(hidden untis)为:

2)时间t隐藏层单元输出为:

 

upload-ueditor-image-20200815-1597479587990030344.png

三个函数的表达式如下:

机器学习——RNN神经网络_第7张图片

如图2所示为Hidden Layer的层级展开图. t-1, t, t+1表示时间序列. X表示输入的样本. St表示样本在时间t处的的记忆,St = f(W*St-1 +U*Xt). W表示输入的权重, U表示此刻输入的样本的权重, V表示输出的样本权重.

在t =1时刻, 一般初始化输入S0=0, 随机初始化W,U,V, 进行下面的公式计算:

      机器学习——RNN神经网络_第8张图片

    其中,f和g均为激活函数. 其中f可以是tanh,relu,sigmoid等激活函数,g通常是softmax也可以是其他。

softmax函数如下:

在t =1时刻, 一般初始化输入S0=0, 随机初始化W,U,V, 进行下面的公式计算:

注意:W,U,X是随机生成的,就例如BP神经网络中的初始权重是随机生成的。

        机器学习——RNN神经网络_第9张图片

    其中,f和g均为激活函数. 其中f可以是tanh,relu,sigmoid等激活函数,g通常是softmax也可以是其他。

6

 

时间就向前推进,此时的状态s1作为时刻1的记忆状态将参与下一个时刻的预测活动,也就是:

                                           机器学习——RNN神经网络_第10张图片

    以此类推, 可以得到最终的输出值为:

                                           机器学习——RNN神经网络_第11张图片

    注意: 1. 这里的W,U,V在每个时刻都是相等的(权重共享).

             2. 隐藏状态可以理解为:  S=f(现有的输入+过去记忆总结) 

2.2RNN的反向传播

      RNN的反向传播类似于BP神经网络的反向传播,个人建议读懂BP神经网络的反向传播再来看一看这里。

 

     前面我们介绍了RNN的前向传播的方式, 那么RNN的权重参数W,U,V都是怎么更新的呢?

    每一次的输出值Ot都会产生一个误差值et, 则总的误差可以表示为:

    则损失函数可以使用交叉熵损失函数也可以使用平方误差损失函数.

    由于每一步的输出不仅仅依赖当前步的网络,并且还需要前若干步网络的状态,那么这种BP改版的算法叫做Backpropagation Through Time(BPTT) , 也就是将输出端的误差值反向传递,运用梯度下降法进行更新.(这里不熟悉梯度的dd们自己百度一下哈)

 

  也就是要求参数的梯度:

                                                           机器学习——RNN神经网络_第12张图片

    首先我们求解W的更新方法, 由前面的W的更新可以看出它是每个时刻的偏差的偏导数之和. 

    在这里我们以 t = 3时刻为例, 根据链式求导法则可以得到t = 3时刻的偏导数为:

       机器学习——RNN神经网络_第13张图片

    此时, 根据公式我们会发现, S3除了和W有关之外, 还和前一时刻S2有关.

    对于S3直接展开得到下面的式子:

                                                                     

 

    对于S2直接展开得到下面的式子:

                                                                    

    对于S1直接展开得到下面的式子:

                                                                      

    将上述三个式子合并得到:

 

    这样就得到了公式:

 机器学习——RNN神经网络_第14张图片

    这里要说明的是:表示的是S3对W直接求导, 不考虑S2的影响.(也就是例如y = f(x)*g(x)对x求导一样)

    其次是对U的更新方法. 由于参数U求解和W求解类似,这里就不在赘述了,最终得到的具体的公式如下:

机器学习——RNN神经网络_第15张图片

    最后,给出V的更新公式(V只和输出O有关):

     

然后用下面的权值更新公式:

V=V-lr \cdot \frac{\partial E}{\partial V}, W=W-lr \cdot \frac{\partial E}{\partial W},U=U-lr \cdot \frac{\partial E}{\partial U}

在这里lr为学习率,这是我们要预先设置好的,请参考BP神经网络中的学习率设置。

如此我们就实现了RNN神经网络的权值自动更新。

下次简单的写一下LSTM模型,LSTM模型就是比较常用的,RNN只能说是LSTM的前身,因为RNN的实际应用效果并不好。

大家有需要可以加一下公众号~

机器学习——RNN神经网络_第16张图片

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(机器学习,数学建模模型,神经网络,机器学习,人工智能)