RNN&LSTM网络结构以及LSTM的变体和拓展

RNN
CNN等传统神经网络的局限在于:将固定大小的向量作为输入(比如一张图片),然后输出一个固定大小的向量(比如不同分类的概率)。不仅如此,CNN还按照固定的计算步骤(比如模型中层的数量)来实现这样的输入输出。这样的神经网络没有持久性:假设你希望对电影中每一帧的事件类型进行分类,传统的神经网络就没有办法使用电影中先前的事件推断后续的事件。
RNN 是包含循环的网络,可以把信息从上一步传递到下一步。

LSTM
LSTM是一种RNN。RNN都有一种重复神经网络模块的链式形式。在标准的 RNN 中,这个重复的模块只有一个非常简单的结构,例如一个 tanh 层。

LSTM则与此不同,其网络结构如图:

LSTM 通过精心设计的称作为“门”的结构来去除或者增加信息到细胞状态的能力。门是一种让信息选择式通过的方法。他们包含一个 sigmoid 神经网络层和一个 pointwise 乘法操作。LSTM 拥有三个门,来保护和控制细胞状态。
  首先是忘记门:

如上,忘记门中需要注意的是,训练的是一个wf的权值,而且上一时刻的输出和当前时刻的输入是一个concat操作。忘记门决定我们会从细胞状态中丢弃什么信息,因为sigmoid函数的输出是一个小于1的值,相当于对每个维度上的值做一个衰减。
  然后是信息增加门,决定了什么新的信息到细胞状态中:

其中,sigmoid决定了什么值需要更新,tanh创建一个新的细胞状态的候选向量Ct,该过程训练两个权值Wi和Wc。经过第一个和第二个门后,可以确定传递信息的删除和增加,即可以进行“细胞状态”的更新。


第三个门就是信息输出门:

通过sigmoid确定细胞状态那个部分将输出,tanh处理细胞状态得到一个-1到1之间的值,再将它和sigmoid门的输出相乘,输出程序确定输出的部分。

为什么LSTM有助于消除梯度消失

对于门结构,其实如果关闭,则会一直保存以前的信息,其实也就是缩短了链式求导。

譬如,对某些输入张量训练得到的ft一直为1,则Ct-1的信息可以一直保存,直到有输入x得到的ft为0,则和前面的信息就没有关系了。故解决了长时间的依赖问题。因为门控机制的存在,我们通过控制门的打开、关闭等操作,让梯度计算沿着梯度乘积接近1的部分创建路径。
对于信息增加门与忘记门的“+”操作,其求导是加法操作而不是乘法操作,该环节梯度为1,不会产生链式求导。
LSTM模型的拓展
没有输入门 (No Input Gate, NIG)
没有遗忘门 (No Forget Gate, NFG)
没有输出门 (No Output Gate, NOG)
没有输入激活函数 (No Input Activation Function, NIAF) (也就是没有输入门对应的tanh层)
没有输出激活函数 (No Output Activation Function, NOAF) (也就是没有输出门对应的tanh层)
没有"peephole connection" (No Peepholes, NP)
遗忘门与输入门结合 (Coupled Input and Forget Gate, CIFG)
Full Gate Recurrence (FGR)。The FGR variant adds recurrent connections between all the gates (nine additional recurrent weight matrices).
门控循环单元GRU模型
GRU即门控循环单元/Gated Recurrent Unit。GRU保持了LSTM的效果同时又使结构更加简单计算量更小。GRU把LSTM中的forget gate和input gate用update gate来替代。 把cell state和隐状态ht进行合并,在计算当前时刻新信息的方法和LSTM有所不同。
GRU模型只有两个门了,分别为更新门zt和重置门rt。更新门用于控制前一时刻的状态信息被带入到当前状态中的程度,更新门的值越大说明前一时刻的状态信息带入越多;重置门用于控制忽略前一时刻的状态信息的程度,重置门的值越小说明忽略得越多。重置门有助于捕捉时间序列里短期的依赖关系;更新门有助于捕捉时间序列里长期的依赖关系。
GRU模型图


首先是GRU的两个们,分别是reset gate rt和update gate zt,计算方法和LSTM总门的计算方法一致。

计算候选隐藏层,和LSTM中ct很类似,可以看成是当前时刻的新信息,rt控制保留多少之前的记忆。

最后zt控制需要从前一时刻的隐藏层ht-1中遗忘多少信息,需要加入多少当前时刻的隐藏层信息ht,最后直接得到最后输出的隐藏层信息,与LSTM的区别是GRU中没有output gate:

Note: 如果reset门为1,而update门为0(不同图示中可能为1)的话,则GRU完全退化为一个RNN。其实第2个公式r=1时就是一个rnn!
LSTM与GRU对比
1 门数不同。GRU只有两个门reset门r和update门z。
2 在GRU中,r和z共同控制了如何从之前的隐藏状态(st−1st−1)计算获得新的隐藏状态(stst),而取消了LSTM中的output门。
3 经过实验,一般认为,LSTM和GRU之间并没有明显的优胜者。因为GRU具有较少的参数,所以训练速度快,而且所需要的样本也比较少。而LSTM具有较多的参数,比较适合具有大量样本的情况,可能会获得较优的模型。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值