深度学习之LSTM原理研究

LSTM来源

因为论文里面用到了LSTM网络,又不想看代码,遂记录一下LSTM网络的原理吧。下一篇研究一下GRU(LSTM网络的变体)
LSTM起源于RNN,RNN(recurrent nenural network),RNN神经网络的结构如下图所示:
其中x_t代表的是t时刻网络的输入(input),h_t代表的是隐藏层(Hidden layer)的状态,当前h_t的输出不仅和当前时刻的输入(input)x_t有关,还和之前的输出h_%7Bt-1%7D有关,因此简单的循环网络在t时刻的更新公式如下所示:
z_t%3DUh_%7Bt-1%7D%2BWx_t%2Bb%2Ch_t%3Df%28z_t%29
其中z_t为隐藏层(Hidden layer)的净输入(input),f是非线性激活函数(Activation Function)。
深度学习之LSTM原理研究
由于RNN保留了时间序列的上下文信息,所以可以通过过去的信号数据来推测当前信号的数据,理论上RNN可以保留之前所有时刻的信息。然而实际的使用过程中,由于当前的时刻的t输出可能依赖(dependency)于k时刻的输入(input),随着时间间隔的增大,梯度(gradient)会出现爆炸和消失的情况,因此,RNN神经网络很难建立长距离的依赖(dependency)关系,即(long-term-dependencies),为了改善这个问题,从而提出了基于门控(gated)的循环神经网络(RNN网络):长短期记忆(Long-Short Term Memory(LSTM))网络(long short-term memery network)LSTM

LSTM网络公式解释

首先需要知道,在LSTM网络中增加了一个internal-statec_t,其实就是cell-state.如下图所示,其内部增加了3个门控(gated)开关,分别是遗忘门(forget gate)f_t,输入(input)门i_t,输出门o_t
数字电路中,开关有0和1两种状态,而LSTM网络中引入了门控(gated)机制,它的取值为0~1之间,用来控制传输数据的多少。
深度学习之LSTM原理研究
f_t:遗忘门(forget gate),用于控制前一时刻的内部状态需要遗忘多少信息。
i_t:输入(input)门,用于控制当前时刻需要为候选状态c%27_t保存多少信息。这里的候选状态c%27_t是根据上一时刻的输出h_%7Bt-1%7D和本次的输入(input)x_t计算得出的。
o_t:输出门,顾名思义,在当前内部状态c_t下,可以输出多少信息到外部状态c_t
需要注意一下这里的h_t其实就是RNN中的y_t。而LSTM中的c_t就是RNN中的h_t

我们来看看上面三个门是如何计算的。

遗忘门(forget gate)的计算

深度学习之LSTM原理研究
遗忘门(forget gate)的结构中包含一个sigmod神经网络层(参数为W_f,b_f)。
将上一时刻的输出和当前时刻的输入(input)拼接之后送入到sigmod网络层中,最终输出f_t,注意f_t是一个0~1的数值。

输入(input)门的计算

它与遗忘门(forget gate)相同,但给定的权重参数不同。
深度学习之LSTM原理研究

输出门的计算

深度学习之LSTM原理研究

内部状态的计算c_t

内部状态C_t存储到当前时刻的历史信息f_t%2AC_%7Bt-1%7D,因为它需要确定需要丢弃多少先前的信息。而i_t%2AC%27_t,因为它需要确定新输入(input)的信息需要保留多少。
得到了c_t之后,就可以把它传递给t+1时刻的LSTM网络中啦!
深度学习之LSTM原理研究
候选状态C%27_t的计算公式如下:注意这里是通过一个tanh神经网络层
深度学习之LSTM原理研究

输出计算h_t

万事俱备,只欠产出!当前时刻输出h_t的计算公式如下:
深度学习之LSTM原理研究
需要注意的是这里的tanh是一个函数,不是一个神经网络层,上面候选状态的计算过程中tanh是一个神经网络层。
将当前时刻的内部状态c_t通过一个tanh函数,之后和遗忘门(forget gate)的数值o_t进行相乘,即可以得到当前时刻的输出,与此同时它也将作为下一时刻的输入(input)信号。

总结

1.计算3个门控(gated)的值:取值为0-1之间。

2.遗忘门(forget gate)乘以上一时刻内部状态的c_%7Bt-1%7D加上输入(input)门乘以当前时刻的候选状态c%27_t得到当前时刻的内部状态c_%7Bt%7D

3.当前的时刻输出y_t:输出门和经过非线性变变化之后的c_t相乘。

LSTM中使用门控(gated)状态来控制传输状态,RNN网络中,h_%7Bt-1%7Dh_t之间的变化通常很大,而传递下来的c_t却改变的比较慢,所以我们认为RNN是一种short-term_memory。因为每个时刻的h_t都是不一样的。而LSTM中,通过记忆单元c可以捕捉某个关键信息,而且可以有能力将此关键信息保存一定的时间间隔。

外表

下一节将研究LSTM变体:GRU。
原理听起来比较简单,不过自己实现的时候还需要考虑LSTM的参数学习,如何训练上述公式中提到的参数,也是一大块知识要去啃呀。书中提到了BPTT:即随时间反向传播(Back propagation)算法。有兴趣的同学可以看一看嗷。

相关书籍:

神经网络与深度学习(Deep learning) – 邱希鹏

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
乘风的头像乘风管理团队
上一篇 2022年3月25日 上午11:44
下一篇 2022年3月25日 上午11:56

相关推荐