1. 基本的循环神经网络


     

    1. 循环神经网络的结构


      TensorFlow:实战Google深度学习框架(七)循环神经网络


      循环神经网络的发明时间已经很早了,最开始被广泛应用是在语言模型中,因为语言模型是有时间序列关系的


       

  2. 循环神经网络的主要用途是处理和预测序列数据。从结构上来看,循环神经网络的隐藏层节点之间是有连接的,隐藏层的输入不仅仅包括输入层的输出,还包括上一时刻隐藏层的输出。因此在当前时刻的输出,不仅仅包括当前时刻的输入信息,还包括过去时刻的信息


     

  3. 循环神经网络对一个长度为N的序列展开之后,可以视为一个有N个中间层的前馈神经网络。这个神经网络没有循环链接,因此可以直接使用反向传播算法进行训练,而不需要特别的优化算法。这样的训练方法可以看成是沿时间反向传播


    TensorFlow:实战Google深度学习框架(七)循环神经网络


    注意:可能刚刚接触RNN的同学会觉得序列有多长,我就要搭建多少个网络模型。起始不是这样的,这只是一种展开结构,便于理解工作原理,不是实际的模型,实际中的模型只有一个网络


    TensorFlow:实战Google深度学习框架(七)循环神经网络实际搭建网络的时候,这张图才是我们需要搭建的网络模型。x依次从下方送入,就会从上面依次输出结果


     

  4. 理解深度学习模型的工作原理,要从数学计算方面入手

    1. TensorFlow:实战Google深度学习框架(七)循环神经网络


       

    2. 本篇学习笔记参考了博客:https://zybuluo.com/hanbingtao/note/541458,对作者表示感谢


       

  5. RNN网络确实可以解决和时间序列有关系的问题,但是,在实际的应用过程中,我们可以看到性能并不是很好。RNN记住了以前输入的所有信息,但是有时候并不需要记住以前时刻的所有信息,增加了很多的系统内存负担;有时候我们的确需要记住很长时间以前信息,但是又容易出现梯度爆炸或者梯度消失的问题。针对于这个问题,人们开始了积极的探索之路,直到LSTM网络的诞生,才算很好的解决了这个问题。这部分的tensorflow代码就不再写了,因为能用RNN的地方基本上都被LSTM代替了。


     

  6. LSTM的思想:在RNN中增加一些参数,这些参数的作用就是选择性的记住以前的(对自己有用的)序列信息,而不像原始的RNN中记住以前的全部信息。


     

  7. LSTM的数学原理


    TensorFlow:实战Google深度学习框架(七)循环神经网络


     

  8. GRU

    1. GRU (Gated Recurrent Unit)是最成功的一种LSTM变种。它对LSTM做了很多简化,同时却保持着和LSTM相同的效果。因此,GRU最近变得越来越流行。


       

    2. GRU结构


      TensorFlow:实战Google深度学习框架(七)循环神经网络


       

  9. 循环神经网络存在很多变种:双向循环神经网络和深层循环神经网络(这都是为了提高性能而发明的模型,本质还是基本的RNN,不难理解)

  10. 循环神经网络中的dropout


    TensorFlow:实战Google深度学习框架(七)循环神经网络

  11. 循环神经网络的样例:利用LSTM对sin(x)函数的取值进行预测


    TensorFlow:实战Google深度学习框架(七)循环神经网络TensorFlow:实战Google深度学习框架(七)循环神经网络