赞
踩
人类并不是每时每刻都从一片空白的大脑开始他们的思考。在你阅读这篇文章时候,你都是基于自己已经拥有的对先前所见词的理解来推断当前词的真实含义。我们不会将所有的东西都全部丢弃,然后用空白的大脑进行思考。我们的思想拥有持久性。
传统的神经网络并不能做到这点,看起来也像是一种巨大的弊端。例如,假设你希望对电影中的每个时间点的时间类型进行分类。传统的神经网络应该很难来处理这个问题——使用电影中先前的事件推断后续的事件。
RNN 解决了这个问题。RNN 是包含循环的网络,允许信息的持久化。
RNN 的关键点之一就是他们可以用来连接先前的信息到当前的任务上,例如使用过去的视频段来推测对当前段的理解。不幸的是,当时间间隔不断增大时,RNN 会丧失学习到连接如此远的信息的能力。
幸运的是,LSTM 并没有这个问题!
长短时记忆网络(Long Short Term Memory Network, LSTM),是一种改进之后的循环神经网络,可以解决RNN无法处理长距离的依赖的问题,目前比较流行。
长短时记忆网络的思路:
原始 RNN 的隐藏层只有一个状态,即h,它对于短期的输入非常敏感。
再增加一个状态,即c,让它来保存长期的状态,称为单元状态(cell state)。
把上图按照时间维度展开:
在 t 时刻,LSTM 的输入有三个:当前时刻网络的输入值 xt、上一时刻 LSTM 的输出值 ht-1、以及上一时刻的单元状态 ct-1;
LSTM 的输出有两个:当前时刻 LSTM 输出值 ht、和当前时刻的单元状态 ct.
第一个开关,负责控制继续保存长期状态c;
第二个开关,负责控制把即时状态输入到长期状态c;
第三个开关,负责控制是否把长期状态c作为当前的LSTM的输出。
定义:gate 实际上就是一层全连接层,输入是一个向量,输出是一个 0到1 之间的实数向量。
公式为:
回忆一下它的样子:
方法:用门的输出向量按元素乘以我们需要控制的那个向量
原理:门的输出是 0到1 之间的实数向量,
当门输出为 0 时,任何向量与之相乘都会得到 0 向量,这就相当于什么都不能通过;
输出为 1 时,任何向量与之相乘都不会有任何改变,这就相当于什么都可以通过
上文提到,模型是通过使用三个控制开关来控制长期状态 c 的
这些开关就是用门(gate)来实现:
接下来具体看这三重门
LSTM 的前向计算(一共有 6 个公式)
它决定了上一时刻的单元状态 ct-1 有多少保留到当前时刻 ct
遗忘门的计算逻辑图为:
遗忘门的计算公式中:
Wf 是遗忘门的权重矩阵,[ht-1, xt] 表示把两个向量连接成一个更长的向量,bf 是遗忘门的偏置项,σ 是 sigmoid 函数。
它决定了当前时刻网络的输入 xt 有多少保存到单元状态 ct
输入门的逻辑计算图:
根据上一次的输出和本次输入来计算当前输入的单元状态:
当前输入的单元状态ct的计算:由上一次的单元状态 ct-1 按元素乘以遗忘门 ft,再用当前输入的单元状态 ct 按元素乘以输入门 it,再将两个积加和:
这样,就可以把当前的记忆 ct 和长期的记忆 ct-1 组合在一起,形成了新的单元状态 ct。
由于遗忘门的控制,它可以保存很久很久之前的信息,由于输入门的控制,它又可以避免当前无关紧要的内容进入记忆。
控制单元状态 ct 有多少输出到 LSTM 的当前输出值 ht
逻辑计算图:
主要有三步:
前向计算每个神经元的输出值,一共有 5 个变量,计算方法就是前一部分:
反向计算每个神经元的误差项值。与 RNN 一样,LSTM 误差项的反向传播也是包括两个方向:
一个是沿时间的反向传播,即从当前 t 时刻开始,计算每个时刻的误差项;
一个是将误差项向上一层传播。
根据相应的误差项,计算每个权重的梯度。
gate 的激活函数定义为 sigmoid 函数,输出的激活函数为 tanh 函数,导数分别为:
转载于:https://blog.csdn.net/m0epnwstyk4/article/details/79124800
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。