循环神经网络

来源:互联网 发布:学佛软件下载 编辑:程序博客网 时间:2024/06/06 03:42

本文只是简单的说明一下RNN的结构,不涉及RNN的发展历史

一般的神经网络,比如前馈神经网络,其特点是:

                  1  共有输入层,隐层,输出层3层;

                  2  输入层的输入与时间并无关系

                       隐层的每一层的神经元彼此之间并不相连

                       输出层的输出是由所有的输入层以及网络架构决定的,与时间无关

而循环神经网络恰恰相反,即:

                 1   隐层之间的节点不是相互独立而是有连接的,且隐层的输入不仅包括输入层的输出,还包括上一时刻隐藏层的输出

                 2   而且输入层进行输入后,而是随时间进行变化进行相应的计算,同时每次计算都会产生一个输出,即就是输出也是随时间变化的

二者对比如下:左边为一个简单的神经网络结构图,右边则为RNN结构图

                     

                      简单的神经网络                                                                                                                      循环神经网络

看起来循环神经网络很复杂,我们可以循环神经网络进行展开:

                                                                    

                                             参数意义:o表示输出,x为输入,s为隐层,U,V,W均为权重

那么,了解了RNN的结构,我们还需要知道怎么进行操作:

            如上图所示,令X = {x1,x2,x3,......xt,xt+1,......}表示输入;令 O={o1,o2,.......ot,ot+1,......}表示输出;令S={s1,s2,......st,st+1,......}表示隐层的神经元的状态

                                    U表示输入层与隐层之间的权重,W表示隐层自身的权重,V表示隐层与输出层之间的权重

           X t 表示X在第 t 步的输入,由上图可以知道X i 是按照 i 从左向右由小向大依次作为输入的;

           那么S在 t 时刻的状态由公式(1)决定:            S(t) = f [S(t-1) * W + X(t) *U + b]    (1)      

                   其中 f 为激活函数,b为偏置

           注意 W,U,V三个权重在所有时刻都是共享的

           输出层:O(t) = softmax( V * S(t));

          

以上便为循环神经神经网络的基本结构。本文并没有接受相应的算法,只是简单的对循环神经网络的结构做了个了解,若有不足,恳请指正。


相关原理来源:  http://blog.csdn.net/heyongluoyao8/article/details/48636251

                              https://zhuanlan.zhihu.com/p/22266022

                              http://blog.csdn.net/u010751535/article/details/54044222