http://www.sohu.com/a/259957763_610300此篇文章绕开了数学公式,对LSTM与GRU采用图文并茂的方式进行说明,尤其是里面的动图,让人一目了然。
在RNN训练期间,信息不断地循环往复,神经网络模型权重的更新非常大。因为在更新过程中累积了错误梯度,会导致网络不稳定。极端情况下,权重的值可能变得大到溢出并导致NaN值。爆炸通过拥有大于1的值的网络层反复累积梯度导致指数增长产生,如果值小于1就会出现消失。
由于RNN 有一定的局限性它会出现梯度消失的情况不能长时间保存记忆例如:
I am from China, I speak Chinese.这个句子中的China对Chinese具有一定的决定性,但是由于距离太远难以产生关联。
为解决这一问题,LSTM使用了Gate(“门”),它可以保存重要记忆
RNN LSTM
LSTM的核心内容就是CT
信息流控制的关键,参数决定了ht传递过程中,哪些被保存或舍弃。参数被Gate影响Sigmoid函数系数决定 Ct参数的变化,而Sigmoid 函数决定于--输入, 之前状态
方法:用门的输出向量按元素乘以我们需要控制的那个向量
原理:门的输出是 0到1 之间的实数向量,
当门输出为 0 时,任何向量与之相乘都会得到 0 向量,这就相当于什么都不能通过;
输出为 1 时,任何向量与之相乘都不会有任何改变,这就相当于什么都可以通过。
分步分析 LSTM 原理
第一步:新输入xt前状态 ht-1 决定C哪些信息可以舍弃,ft与Ct-1运算,对部分信息进行去除,它就是遗忘门(forget gate),σ
是 sigmoid 函数。
第二步:新输入xt前状态 ht-1 告诉 C 哪些新信息想要保存it:新信息添加时的系数(对比 ft)?t单独新数据形成的控制参数,用于对Ct进行更新
第三步:根据旧的控制参数Ct-1, 新生成的更新控制参数 ?t组合生成最终生成该时刻最终控制参数:
第二步与第三步合起来是输入门。
第四步:根据控制参数Ct 产生此刻的新的 LSTM 输出,它为输出门:
LSTM的工作方式可以总结为:1.Ct信息舍弃,2.Ct局部生成,3.Ct更新,4.Ct运算
这里使用的符号具有以下含义:
a)X:缩放的信息--"门"
b)+:添加的信息
c)σ:Sigmoid层
d)tanh:tanh层
e)ht-1:上一个LSTM单元的输出
f)ct-1:上一个LSTM单元的记忆
g)Xt:输入
h)ct:最新的记忆
i)ht:输出
下面摘自http://www.atyun.com/16821.html这篇文章的一部分,说到tanh与Sigmoid两个函数的作用
为了克服梯度消失问题,我们需要一个二阶导数在趋近零点之前能维持很长距离的函数。tanh是具有这种属性的合适的函数。
由于Sigmoid函数可以输出0或1,它可以用来决定忘记或记住信息。
信息通过很多这样的LSTM单元。图中标记的LSTM单元有三个主要部分:
GRU可以说是LSTM的变种
介绍完LSTM的工作原理后,下面来看下门控循环单元GRU。GRU是RNN的另一类演化变种,与LSTM非常相似。GRU结构中去除了单元状态,而使用隐藏状态来传输信息。它只有两个门结构,分别是更新门和重置门。更新门的作用类似于LSTM中的遗忘门和输入门,它能决定要丢弃哪些信息和要添加哪些新信息。重置门用于决定丢弃先前信息的程度。
Reset gate
rt 负责决定ht−1对new memory 的重要性有多大, 如果rt约等于0 的话,ht-1就不会传递给new memory
new memory
是对新的输入xt和上一时刻的hidden state ht−1的总结。计算总结出的新的向量
包含上文信息和新的输入xt.
Update gate
zt负责决定传递多少ht−1给ht。 如果zt约等于1的话,ht−1几乎会直接复制给ht,相反,如果zt约等于0, new memory 直接传递给ht
Hidden state
ht 由 ht−1和相加得到,两者的权重由update gate zt控制。
可以看一下此篇https://blog.csdn.net/u012223913/article/details/77724621对LSTM与GRU做了一个具体的区别介绍。
2. 区别
1. 对memory 的控制
LSTM: 用output gate 控制,传输给下一个unit
GRU:直接传递给下一个unit,不做任何控制
2. input gate 和reset gate 作用位置不同
LSTM: 计算new memory ?t时不对上一时刻的信息做任何控制,而是用forget gate 独立的实现这一点
GRU: 计算new memory时利用reset gate 对上一时刻的信息 进行控制。
3. 相似
最大的相似之处就是, 在从t 到 t-1 的更新时都引入了加法。
这个加法的好处在于能防止梯度弥散,因此LSTM和GRU都比一般的RNN效果更好。
原文:https://www.cnblogs.com/yang901112/p/11900961.html