RNN和LSTM原理推导

来源:互联网 发布:算法入门书籍推荐 编辑:程序博客网 时间:2024/05/22 11:38

一、RNN原理
RNN实际上也就是神经网络,它的基本组件(姑且这么称它吧)实际上也就是一个最简单的神经网络(一个input,一个hidden,一个output)
如图所示
这里写图片描述
最大的区别就是,对于hiddenLayer来说,它的输入不再单一的来自inputLayer,还来自于上一个时刻的hiddenLayer,也就是说,不同时刻的hiddenLayer之间也有权值连接。RNN基本结构如下图所示
这里写图片描述
RNN和传统的神经网络一样,也有前向传播和反向传播。
前向传播:
这里写图片描述
a:是指sum(WiXi),所有特征乘以权值,累加得到的和
theta:激活函数
b:累加和经过激活函数得到的值
t:表示t时刻
h:表示和隐藏层有关
k:表示和输出层有关
i:表示和输入层有关
Wih:表示输入层和隐藏层之间的权值(其他的以此类推)
a(t,h):用来输入到下一时刻的隐藏层
a(t,k):作为当前时刻的输出
反向传播:
这里写图片描述
delta(t,h):残差,从公式中可以看出,当前时刻隐藏层的残差当前时刻输出层的残差加上下一时刻隐藏层的残差
RNN的局限性:梯度消失

二、LSTM原理推导
由于RNN的局限性(梯度消失),LSTM引入一个cell的概念,实际上就是引入一个block代替RNN里面的隐藏层,block结构如下:
这里写图片描述
cell:用来存储参数的,state,前面的时序信息有哪些需要记住,哪些需要忘记
input gate:用来控制当前特征是否有用,因为有些时候可能不需要当前信息,需要的是历史信息
output gate:用来控制当前信息是否有用,因为有时候当前信息可能不重要,需要的是对当前进行衰减,输入到其他时刻的节点中去,在其他时刻起作用
forget gate:对于前面无效的信息选择忘记(从另一个角度想,要是把所有时刻的信息状态都记录,要存储的信息太多)
前向传播:
input gate
这里写图片描述
第一项是inputLayer的输入,权值乘以特征
第二项是上一时刻隐藏层的信息(这个隐藏层应该是经过outputLayer出来的特征)
第三项是上一时刻cell存储的信息(cell里面存储的是所有时刻的信息)
forget gate:
这里写图片描述
和input gate的三个输入来源是一样的
output gate:
这里写图片描述
和input gate的三个输入来源是一样的
由此可见,实际上在一个block中,当前时刻信息,上一时刻输出的信息,历史信息,和这三个控制门都有连接。
cell
这里写图片描述
首先要牢记cell的作用(用来存储历史信息),
a(t,c)表示cell的输入,包括当前时刻的特征和前一时刻的输出
S:表示cell的输出,forget gate*前一时刻的历史状态记录+input gate*cell的输入激励值
cell的输出会经过output gate
反向传播:
这里写图片描述
Loss Function就是残差的累加和
(还有很多方面待完善。。。)

原创粉丝点击