码迷,mamicode.com
首页 > 其他好文 > 详细

lstm和GRU推导

时间:2020-04-05 20:37:18      阅读:889      评论:0      收藏:0      [点我收藏+]

标签:margin   oid   内容   函数   输出   数值   for   状态   mic   

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推导

标签:margin   oid   内容   函数   输出   数值   for   状态   mic   

原文地址:https://www.cnblogs.com/limingqi/p/12638664.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!