本章概念
1. 门控循环单元
- 门控循环单元
rnn梯度计算的时候,当时间步较大或者时间步较小时,梯度较容易出现衰减或者爆炸。裁剪梯度可以应对梯度爆炸,但无法解决梯度衰减问题。所以实际中,rnn较难捕捉时间序列中时间步距离较大的依赖关系。
门控循环神经网络的提出,正是为了更好地捕捉时间序列中时间步距离较大的依赖关系。它通过可以学习的门来控制信息的流动。
门控循环单元(gated recurrent unit,GRU)是一种常用的门控循环神经网络。
- GRU的一句话概括
增加候选隐藏状态,重置门,更新门。隐藏状态由上一步的隐藏状态Ht-1和当前步的候选隐藏状态计算得到。 - 重置门和更新门
输入都是xt和ht-1,使用sigmoid作为激活函数,值域为[0,1]
候选隐藏状态
先将上一次的隐藏状态Ht-1乘一个系数(重置门计算的),然后再和xt,一起计算出此步的候选隐藏状态Ht,计算方式也经过tanh函数进行输出,如下
最终的计算流程如下图所示, - 重置门的使用和目的
从上面这个公式可以看出,重置门控制了上一时间步的隐藏状态如何流入当前时间步的候选隐藏状态。而上一时间步的隐藏状态可能包含了时间序列截至上一时间步的全部历史信息。因此,重置门可以用来丢弃与预测无关的历史信息。
这个时间步的隐藏状态是由更新门和候选隐藏状态一起计算的结果。
隐藏状态的计算
隐藏状态的计算使用当前时间步的更新门Zt,上一步的隐藏状态Ht-1,当前时间步的候选隐藏状态。更新门的使用和目的
更新门可以控制隐藏状态应该如何被包含当前时间步信息的候选隐藏状态所更新。假设更新门一直近似1,那么输入信息几乎没有流入此时的隐藏状态,这可以看作是较早时刻的隐藏状态一直通过时间保存并传递至当前时间步。这个设计可以应对梯度衰减问题,并更好地捕捉时间步距离较大的依赖关系。
重置门有助于捕捉时间序列里短期的依赖关系;
更新门有助于捕捉时间序列里长期的依赖关系。
2. 长短期记忆网络
长短期记忆概括
LSTM中引入三个门,输入门,遗忘门,输出门,以及记忆细胞。
输入门,遗忘门,输出门
三个计算方式,输入都是xt和ht-1,使用sigmoid作为激活函数,值域为[0,1]候选记忆细胞
输入和三个门一样,用tanh作为激活函数,值域为[0,1]- 记忆细胞
记忆细胞的计算需要用到,候选记忆细胞和三个门。
记忆细胞的计算使用三个门和当前时间步的候选记忆细胞。
通过元素值域在[0,1]的输入门,遗忘门和输出门来控制隐藏状态中的信息流动。
输入门:控制当前的输入Xt通过候选记忆细胞如何流入当前时间步的记忆细胞。
遗忘门:控制上一步的记忆细胞Ct-1中的信息是否传递到时间步。
输出门:隐藏状态的计算需要用到记忆细胞,输出门控制信息从记忆细胞到隐藏状态的流入。
记忆细胞:计算隐藏状态的时候使用。
计算流程图如下:
- 隐藏状态
tanh函数确保隐藏状态元素值在-1和1之间。当输出门近似1时,记忆细胞
的信息将传递到隐藏状态供输出层使用;当输出门近似0时,记忆细胞信息只自己保留。
如果遗忘门一直近似1,输入门一直近似0,那么过去的记忆细胞则一直通过时间保持并传递至当前时间步。这种设计可以应对rnn中的梯度衰减问题,并更好捕捉时间序列中时间步距离较大的依赖关系。