【直观理解】循环神经网络RNN

使用场景

  • 序列到序列的学习,如将英语翻译成法语
  • 情感分析,如将推文或电影评论的情感划分为正面或负面
  • 时间序列预测,如根据某地最近的天气数据来预测未来天气
  • 时间序列对比,如估测两个文档或两支股票行情的相关程度
  • 文档分类和时间序列分类,如识别文章的主题或书的作者

动机:

  • 密集连接神经网络 & 卷积神经网络CNN,都没有记忆,上一次的输入,对这次的运算没有产生任何影响。他们单独处理每个输入,在这个过程中没有保存任何状态
  • RNN在本次运算时,参考了之前运算的状态;通俗点讲,上次计算的结果被保存成变量h,在这次运算的公式里加入了h。
  • 举例:
    • 基于IMDB数据集的情感分析问题:输入电影的评论,输出情感 ‘负面’ 或者 ‘正面’
    • 使用密集连接神经网络训练:基于单个单词,判断情感,即前后单词之间没有联系
    • 使用RNN训练:对每个单词而言,前面的单词,会影响当前单词的输出;
      • 从人的直觉来看,这是合理的,我们不能从一个词就判断它的情感,而是从整句话,分析上下文,判断它的情感

概念:

  • RNN, Recurrent Neural Network 循环神经网络,是一类具有内部环的神经网络

  • 循环:上一时刻的状态,会影响下一时刻的输出

  • 伪代码

    state_t = 0
    for input_t in input_sequence:
        output_t = f(input, state_t)
        state_t = output_t
    
    f 是一个激活函数
    
    f(input, state_t) 写详细点就是 
    activation(dot(W,input_t) + dot(U, state_t)+b)
    
    W,U,b 都是需要训练的参数
    
  • Keras实现:SimpleRNN层

常见变体:(Keras均有实现)

  • LSTM, Long Short-Term Memory
  • GRU, Gate Recurrent Unit
  • 提高RNN的性能和泛化能力的技巧
    • 循环dropout
    • 循环层堆叠
    • 双向循环层

附图

  • 全连接神经网络
    【直观理解】循环神经网络RNN_第1张图片
  • 卷积神经网络
    【直观理解】循环神经网络RNN_第2张图片
  • 循环神经网络
    【直观理解】循环神经网络RNN_第3张图片

图片来源于网络
内容来自《python深度学习》加上个人理解

你可能感兴趣的:(深度学习,rnn)