提交 bc391305 编写于 作者: M Mu Li 提交者: Aston Zhang

update lstm (#300)

上级 7afdc2f2
......@@ -6,14 +6,17 @@
## 长短期记忆
我们先介绍长短期记忆的设计。它修改了循环神经网络隐藏状态的计算方式,并引入了与隐藏状态形状相同的记忆细胞(某些文献把记忆细胞当成一种特殊的隐藏状态)。
我们先介绍长短期记忆的设计。它修改了循环神经网络隐藏状态的计算方式,并引入了与隐藏状态形状相同的记忆细胞(某些文献把记忆细胞当成一种特殊的隐藏状态),其可以用来记录额外的历史信息
### 输入门、遗忘门和输出门
同门控循环单元一样,输入门(input gate)、遗忘门(forget gate)和输出门(output gate)的计算,入下图所示,均是通过合并输入和上一时间步的隐藏状态后进入激活函数为sigmoid的全连接层而来,这样它们元素的值域均为$[0,1]$。
![LSTM中的输入门、遗忘门和输出门的计算。](../img/lstm_0.svg)
假设隐藏单元个数为$h$,给定时间步$t$的小批量输入$\boldsymbol{X}_t \in \mathbb{R}^{n \times d}$(样本数为$n$,输入个数为$d$)和上一时间步隐藏状态$\boldsymbol{H}_{t-1} \in \mathbb{R}^{n \times h}$。
时间步$t$的输入门(input gate)$\boldsymbol{I}_t \in \mathbb{R}^{n \times h}$、遗忘门(forget gate)$\boldsymbol{F}_t \in \mathbb{R}^{n \times h}$和输出门(output gate)$\boldsymbol{O}_t \in \mathbb{R}^{n \times h}$分别计算如下:
时间步$t$的输入门$\boldsymbol{I}_t \in \mathbb{R}^{n \times h}$、遗忘门$\boldsymbol{F}_t \in \mathbb{R}^{n \times h}$和输出门$\boldsymbol{O}_t \in \mathbb{R}^{n \times h}$分别计算如下:
$$
\begin{aligned}
......@@ -24,12 +27,16 @@ $$
$$
其中的$\boldsymbol{W}_{xi}, \boldsymbol{W}_{xf}, \boldsymbol{W}_{xo} \in \mathbb{R}^{d \times h}$和$\boldsymbol{W}_{hi}, \boldsymbol{W}_{hf}, \boldsymbol{W}_{ho} \in \mathbb{R}^{h \times h}$是权重参数,$\boldsymbol{b}_i, \boldsymbol{b}_f, \boldsymbol{b}_o \in \mathbb{R}^{1 \times h}$是偏移参数。激活函数$\sigma$是sigmoid函数。
和门控循环单元中的重置门和更新门一样,这里的输入门、遗忘门和输出门中每个元素的值域都是$[0, 1]$。
### 候选记忆细胞
和门控循环单元中的候选隐藏状态一样,时间步$t$的的候选记忆细胞$\tilde{\boldsymbol{C}}_t \in \mathbb{R}^{n \times h}$也使用了值域在$[-1, 1]$的tanh函数做激活函数。它的计算和不带门控的循环神经网络的隐藏状态的计算没什么区别:
和门控循环单元中的隐藏状态前需要计算候选隐藏状态一样,LSTM首先计算候选记忆细胞$\tilde{\boldsymbol{C}}_t$。它的计算同其他门一样,但使用了值域在$[-1, 1]$的tanh函数做激活函数,其入下图所示。
![LSTM中的候选记忆细胞计算。](../img/lstm_1.svg)
具体来说,候选记忆细胞$\tilde{\boldsymbol{C}}_t \in \mathbb{R}^{n \times h}$的计算为:
$$\tilde{\boldsymbol{C}}_t = \text{tanh}(\boldsymbol{X}_t \boldsymbol{W}_{xc} + \boldsymbol{H}_{t-1} \boldsymbol{W}_{hc} + \boldsymbol{b}_c).$$
......@@ -38,13 +45,13 @@ $$\tilde{\boldsymbol{C}}_t = \text{tanh}(\boldsymbol{X}_t \boldsymbol{W}_{xc} +
### 记忆细胞
我们可以通过元素值域在$[0, 1]$的输入门、遗忘门和输出门来控制隐藏状态中信息的流动:这通常可以应用按元素乘法符$\odot$。当前时间步记忆细胞$\boldsymbol{C}_t \in \mathbb{R}^{n \times h}$的计算组合了上一时间步记忆细胞和当前时间步候选记忆细胞的信息,并通过遗忘门和输入门来控制信息的流动:
当前时间步记忆细胞$\boldsymbol{C}_t \in \mathbb{R}^{n \times h}$的计算组合了上一时间步记忆细胞和当前时间步候选记忆细胞的信息,并通过遗忘门和输入门来控制信息的流动:
$$\boldsymbol{C}_t = \boldsymbol{F}_t \odot \boldsymbol{C}_{t-1} + \boldsymbol{I}_t \odot \tilde{\boldsymbol{C}}_t.$$
需要注意的是,如果遗忘门一直近似1且输入门一直近似0,过去的记忆细胞将一直通过时间保存并传递至当前时间步。
这个设计可以应对循环神经网络中的梯度衰减问题,并更好地捕捉时序数据中间隔较大的依赖关系。
![LSTM中的记忆细胞计算。](../img/lstm_2.svg)
这里遗忘门控制上一步的记忆信息是否传递到这一步,输入门则控制记录多少当前信息。如果遗忘门一直近似1且输入门一直近似0,过去的记忆细胞将一直通过时间保存并传递至当前时间步。这个设计可以应对循环神经网络中的梯度衰减问题,并更好地捕捉时序数据中间隔较大的依赖关系。
### 隐藏状态
......@@ -52,6 +59,8 @@ $$\boldsymbol{C}_t = \boldsymbol{F}_t \odot \boldsymbol{C}_{t-1} + \boldsymbol{I
$$\boldsymbol{H}_t = \boldsymbol{O}_t \odot \text{tanh}(\boldsymbol{C}_t).$$
![LSTM中的隐藏状态计算。](../img/lstm_3.svg)
这里的tanh函数确保隐藏状态元素值在-1到1之间。需要注意的是,当输出门近似1,记忆细胞信息将传递到隐藏状态供输出层使用;当输出门近似0,记忆细胞信息只自己保留。
......
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册