深度学习:原理简明教程20-深度学习:GRU, LSTM, BRNN, Deep RNN
欢迎转载,作者:Ling,注明出处:深度学习:原理简明教程20-深度学习:GRU和LSTM
有了Simple RNN为什么还需要GRU和LSTM:
因为存在梯度消失问题!!!层次太深!!!如何解决?CNN通过ResNet解决,RNN通过GRU和LSTM解决
解决核心思想:完整复制之前信息,也就是求偏导数的值最好有1
举例:
The beautiful girl, who came yesterday, is talking to me
girl和is是相关的,但是距离比较长,梯度消失影响这种长距离信息
首先看看Simple RNN Unit,它每个block就是一个简单的神经网络,只不过最后变成RNN的时候带上的时序信息。
Simple RNN Unit:
公式:
图示:
GRU (Gated Recurrent Unit):核心思想就是本层hidden输出以及之前hidden输出,通过计算,根据各自在最终输出中占的概率,得到最终输出
公式:
1)本hidden layer暂时输出:
2)本hidden layer信息以多大概率输出:
3)最终隐含层输出:当前输出和之前输出,各分配多少比例,由于是sigmoid,所以导数是1概率很高
4)实际上:
图示:
完整版:就是加了个额外概率,其实不要那个额外的概率也可以,但是大家都这么用的
LSTM (Long Short-term Memory)
公式:其实就是更加general了一点,所有概率都是通过上一个隐含层节点输出值以及本输入,一起计算得到,只不过参数不一样
1)临时隐含层输出
2)计算该输出概率
3)计算之前隐含层输出概率
4)计算最终输出概率
5)计算综合本hidden和上次hidden得到结果
6)最后对该结果再用一个输出概率处理一下
图示:
BRNN: Bidirectional RNN
解决问题:
当前节点输出和后续输出相关,例如:
Kind of -> 一点点
根据kind输出的话需要考虑of
图示变化:
公式变化:
Deep RNN: 就是堆叠了多层LSTM,得到最后结果
BRNN+Attention
图示:
前向使用:每两个a做cat,作为输入,然后乘以一个attention,attention相当于学到的每个输入个概率,概率和为1,然后每个输入都乘以attention,然后求和,得到c,c才真正作为s的输入
公式:
如何计算Attention值:
e可以通过神经网络学习得到,神经网络的输入为s和a
目前最有效的方法就是:BRNN+Attention
1D CNN替代 RNN:
关于CNN:深度学习:原理简明教程12-深度学习:计算机视觉问题与CNN
1D CNN
和2D的CNN类似,只不过kernel都是1D的
留言