LSTM长短期记忆细节理解
作者:互联网
1.引入
长短期记忆网络——通常被称为 LSTM,是一种特殊的 RNN,能够学习长期依赖性。由 Hochreiter 和 Schmidhuber(1997)提出的,并且在接下来的工作中被许多人改进和推广。LSTM 在各种各样的问题上表现非常出色,现在被广泛使用。
LSTM 和通常的 CNN 一样为一个循环单元的结构, 但是与 RNN 仅有一个 tanh 激活层不同, LSTM 中包含了更复杂的四层网络的结构设计, 并且四层网络相互耦合, 如下图所示.
在上面的图中,每行包含一个完整的向量,从一个节点的输出到其他节点的输入。粉色圆圈表示逐元素运算,如向量加法;而黄色框表示学习的神经网络层。行合并表示串联,而分支表示其内容正在被复制,并且副本将转到不同的位置。
2. LSTM的核心思想
LSTM 相比于 RNN, 关键在于引入了单元状态(state) C —— 横穿下图顶部的直线。单元状态有点像传送带。它贯穿整个链条,只有一些次要的线性交互作用。信息很容易以不变的方式流过。
LSTM 可以通过门(gate)来控制向单元状态中增加信息或减少信息. 门由一个 sigmoid 函数和一个乘法运算符组成, 如下图所示.
sigmoid 层输出的值在 [0,1] 之间, 控制了信息的通过量。越接近 0, 则表明不允许信息通过(从而形成遗忘);越接近 1, 则表明允许信息全部通过(从而形成记忆).
3. LSTM单元解析
LSTM 单元在每个时间步需要注意三个向量(长度相同):
- 输入的特征向量 xt
- 上一步输出的特征向量 ht−1
- 上一步结束后的单元状态 Ct−1
3.1 遗忘门(forget gate)
每循环一步时, 首先根据上一步的输出 ht−1 和当前步的输入 xt 来决定要遗忘掉上一步的什么信息(从单元状态 Ct−1 中遗忘). 因此只需要计算一个遗忘系数 ft 乘到单元状态上即可. 如下图所示, 公式中的方括号表示 concat 操作.
维度说明:假设 ht−1 和 xt 的长度均为1000,则 Wf 的维度为(1000,2000),ft 是长度为1000的向量,后面与 Ct-1 进行对应元素相乘。
3.2 输入门(input gate)
这一步来决定根据上一步的输出 ht−1 和当前新的输入 xt 我们应该把多少信息储存在单元状态中. 这部分有两步, 首先一个输入门计算要保留哪些信息, 得到过滤系数 it , 然后使用一个全连接层来从上一步的输出 ht−1 和当前步的输入 xt 中提取特征 C˜t.
如下图所示.
新旧信息合并
计算好了遗忘系数, 输入系数, 以及新的要记忆的特征, 现在就可以在单元状态 Ct−1 上执行遗忘操作 ft∗Ct−1 和记忆操作 it∗C˜t 如下图所示.
3.3 输出门(output gate)
最后我们要决定输出什么信息了. 这需要从当前的单元状态 Ct 来获取要输出的信息. 但显然我们并不会在这一个时间步输出所有记忆的信息, 而是只要输出当前需要的信息, 因此我们用一个输出门来过滤输出的信息, 过滤系数为 ot . 此外我们希望输出的特征的取值能够介于 [−1,1] 之间, 因此使用一个 tanh 函数把单元状态 Ct 映射到相应的范围, 最后乘上过滤系数得到当前步的输出. 如下图所示.
参考传送门:https://www.jarvis73.com/2018/01/24/LSTM-Learn/
标签:输出,长短期,信息,记忆,LSTM,遗忘,单元,Ct 来源: https://www.cnblogs.com/deeo/p/14891414.html