目录
0 前言:
理论知识
参考资料
关于自然语言处理,那么RNN是跑不了的,学习TF2.0的时候,学习笔记上没有对这部分知识进行详解,这部分的学习也花费了比较长的时间。
理论知识1 RNN模型结构他们都只能单独的取处理一个个的输入,前一个输入和后一个输入是完全没有关系的。但是,某些任务需要能够更好的处理序列的信息,即前面的输入和后面的输入是有关系的。
简单的了解
1.1 RNN结构
1.2 具体图
1.3 计算过程
1.4 RNN的总括图
2 RNN的反向传播
具体的计算可以参考一下这一篇博文,关键之处在于,对于反向传播的时候,是如何更重新W,U,V
同时理解,是如何S是如何进行记忆的
注意: 1. 这里的W,U,V在每个时刻都是相等的(权重共享).
2. 隐藏状态可以理解为: S=f(现有的输入+过去记忆总结)
3 Tensorflow2.0 RNN循环卷积网络3.1 LSTM 网络
Long Short Term网络般就叫做LSTM是一种RNN特殊的类型,可以学习长期依赖信息。在很多问题,LSTM 都取得相当巨大的成功,并得到了广 泛的使用, 它是RNN事实上的标准。
3.1.1 LSTM网络的简单实现
LSTM通过门]对通过的信息进行控制: i 门]是一种让信息选择式通过的方法。LSTM通过门可以让信息不通过、完全通过、通过一部份。
LSTM如果理解不够,可以参考这篇博客进行逐步理解:
3.1.2 LSTM 网络的变体GRU
GRU门限循环单元。 它将忘记门和输入门合并成为一个单一的更新门, 同时合并了数据单元状态和隐藏状态, 使得模型结构比之于LSTM更为简单.
与LSTM相比,GRU结构更加简单,它有一个更新门,更新门决定了内部状态与输入state状态的融合比例(结合前面状态的多少),简单的说,GRU与LSTM网络相比,建构简单,计算少,效果相当。
3.2Keras的实现
- Keras支持RNN各种变体:
- layers.LSTM
注意:
TF2.0的LSTM的输入是由一定格式
序列的输入格式
(batch,序列长度,每一个输入的维度)
举个简单的例子(后面实现的航空公司的例子)
第一维:batch
第二维度:比如航空公司的第二维评论长度
第三维度:是单词对应的向量话表示batch * 长度(特征)
3.3 实现代码例子
- 单变量序列 -- 航空公司的评论情绪的预测
- 多变量序列 -- (天气预报,选定一个序列,前面三天的天气去预测)天气预报
仅仅贴部分代码作为分析
4.1 航空公司评论情绪预测
4.1.1 数据处理
4.1.2 训练模型
4.1.3 结果分析
存在过拟合
使用循环 dropout 抑制过拟合
4.1.4 算法改进-双向 RNN
我们看到之前训练的准确度在93%,我们如果需要在进一步优化,就像双向链表一样,RNN也有双向
4.2 北京空气污染序列预测
4.2.1 数据处理
数据说明:
处理日期
由于特征cbwd是对象因此我们采用读热编码的方式
最后我们得到我们的需要的数据
4.2.2 训练模型前的准备
标准化
注意:
我们只需要对训练数据进行标准化,而不用对结果进行标准化
输出变成二维的输出(batch,最后的输出)
4.2.3 基础模型
4.2.4 简单的LSTM
结果得到的比较好的下降
进一步分析LSTM:
4.2.5 优化LSTM模型
训练效果良好
4.2.6 预测
步骤:
- 保存模型
- 加载模型
- 测试数据
在预测的核实后,我们需要保障预测的数据的与测试的数据行数一致(一一对应)
参考资料- RNN的简介:
- 一文搞懂RNN(循环神经网络)
- RNN的变体:
-
- LSTM的逐步解析:
- RNN反向传播
-