一、概念
CNN: 借助卷积核(kernel)提取特征后,送入后续网络(如全连接网络 Dense) 进行分类、目标检测等操作。CNN 借助卷积核从空间维度提取信息,卷积核参数 空间共享。
RNN: 借助循环核(cell)提取特征后,送入后续网络(如全连接网络 Dense) 进行预测等操作。RNN 借助循环核从时间维度提取信息,循环核参数时间共享。
循环核具有记忆力,通过不同时刻的参数共享,实现了对时间序列的信息提取。
每个循环核有多个记忆体,对应图中的多个小圆柱,记忆体内存储着每个时刻的状态信息ht。
在前向传播时,记忆体内存储的状态信息h𝑡在每个时刻都被刷新,而三个参数矩阵𝑤𝑥ℎ、wℎℎ、𝑤ℎ𝑦和两个偏置项𝑏ℎ、 𝑏y自始至终都是固定不变的。
在反向传播时,三个参数矩阵和两个偏置项由梯度下降法更新。
(这和我们预测是一致的:我们脑中的记忆体每个时刻都根据当前的输入而更新;当前的预测推理是根据我们以往的知识积累用固化下来的“参数矩阵”进行的推理判断。)
二、模型构建
tf.keras.layers.SimpleRNN(神经元个数,activation=‘激活函数’,
return_sequences=是否每个时刻输出ℎ𝑡𝑡到下一层)
(1)神经元个数:即循环核中记忆体的个数。
(2)return_sequences:False 返回最后时刻,True 返回全部时刻。
(3)输入维度:三维张量(输入样本数,循环核时间展开步数,每个时间步输 入特征个数)。
三、RNN模型
RNN 面临的较大问题是无法解决长跨度依赖问题,即后面节点相对于跨度很 大的前面时间节点的信息感知能力太弱。
1.LSTM
通过门控单元很好的解决了 RNN 长期依赖问题。
LSTM 引入了三个门限:输入门𝑖𝑡、遗忘门𝑓𝑡、输出门𝑜𝑡
输入门(门限):决定了多少比例的信息会被存入 当前细胞态;
遗忘门(门限):将细胞态中的信息选择性的遗忘;
输出门(门限):将细胞态中的信息选择性的进行输出;
model = tf.keras.Sequential([
LSTM(80, return_sequences=True),
Dropout(0.2),
LSTM(100),
Dropout(0.2),
Dense(1)
])
2.GRU
门控循环单元(Gated Recurrent Unit,GRU)是 LSTM 的一种变体,将 LSTM 中 遗忘门与输入门合二为一为更新门,模型比 LSTM 模型更简单。
model = tf.keras.Sequential([
GRU(80, return_sequences=True),
Dropout(0.2),
GRU(100),
Dropout(0.2),
Dense(1)
])