lstm和GRU推导
Posted limingqi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了lstm和GRU推导相关的知识,希望对你有一定的参考价值。
lstm:长短时记忆网络,是一种改进后的循环神经网络,可以解决RNN无法处理的长距离依赖问题。
原始 RNN 的隐藏层只有一个状态,即h,它对于短期的输入非常敏感。再增加一个状态,即c,让它来保存长期的状态,称为单元状态(cell state)。
按照时间维度展开如下所示:
在t时刻,lstm的输入有三个:当前时刻的网络的输入值、上时刻lstm的输出值、以及上一时刻的单元状态;lstm的输出有两个:当前时刻lstm的输出值、和当前时刻的单元状态。使用三个控制开关控制长期状态c:
在算法中利用门实现三个状态的功能:
门就是一个全连接层,输入的是一个向量,输出是一个0到1之间的实数向量。
门控制的原理:用门的输出向量按照元素乘以我们需要控制的那个向量,门的输出不是0就是1,0乘以任何向量都是0代表不通过,1乘以任何向量不会发生改变。
遗忘门的计算方式:
遗忘门:决定了上一时刻的单元状态c_t-1有多少保留到了c_t当前状态,Wf 是遗忘门的权重矩阵,[ht-1,xt]表示将两个变量拼接起来,bf是遗忘门的偏置项,是sigmoid函数。
输入门的计算:
输入门:决定了当前时刻网络的输入x_t有多少保存到单元状态c_t.
根据上一次的输出和本次输入计算当前输入的单元状态:
当前时刻的单元状态c_t的计算由上一次的单元状态c_t-1乘以按元素乘以遗忘门ft,在用当前输入的单元状态c_t乘以输入门i_t,将两个积加和,可以将长期记忆和当前记忆结合起来形成新的单元状态。由于遗忘门的控制可以保存很久很久的信息。由于输入门的控制可以避免无关紧要的内容进入记忆。
目标是要学习8组参数:
权重矩阵是由两个矩阵拼接而成的。误差项是沿时间的反向传播,定义t时刻的误差项:
权重矩阵计算公式如下:
总体流程总结:
原始输入循环体的是当前输入和上前一步的输出,以及上一步的状态,
,先遇到遗忘门(forget gate):
经过遗忘门的函数之后产生一个0到1之间的输出,代表遗忘多少之前的状态,当为0时代表全部遗忘,1代表完全保持。
另外一条路线上,,又会遇见输入门(input gate),输入门会决定记忆哪些值:
另外同时经过函数会产生一个新的状态:
这个时候,由,,,就可以决定循环体的当前状态了:
有了当前的状态,自然就可以去输出门(output gate)了:
从上面的公式,我们容易发现,每个门的形态是一样的,都是通过函数作用于当前的输入和前一时刻的输出产生一个0到1的数值,以此来决定通过多少信息。
以上是关于lstm和GRU推导的主要内容,如果未能解决你的问题,请参考以下文章
GRU(Gated Recurrent Unit) 更新过程推导及简单代码实现