使用场景
- 序列到序列的学习,如将英语翻译成法语
- 情感分析,如将推文或电影评论的情感划分为正面或负面
- 时间序列预测,如根据某地最近的天气数据来预测未来天气
- 时间序列对比,如估测两个文档或两支股票行情的相关程度
- 文档分类和时间序列分类,如识别文章的主题或书的作者
动机:
- 密集连接神经网络 & 卷积神经网络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
- 循环层堆叠
- 双向循环层
附图
- 全连接神经网络
- 卷积神经网络
- 循环神经网络
图片来源于网络
内容来自《python深度学习》加上个人理解