内容纲要

欢迎转载,作者: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:

公式:

dl_20_001

图示:

dl_20_002

 

 GRU (Gated Recurrent Unit):核心思想就是本层hidden输出以及之前hidden输出,通过计算,根据各自在最终输出中占的概率,得到最终输出

公式:

1)本hidden layer暂时输出:

dl_20_003

2)本hidden layer信息以多大概率输出:

dl_20_004

3)最终隐含层输出:当前输出和之前输出,各分配多少比例,由于是sigmoid,所以导数是1概率很高​dl_20_005

4)实际上:

dl_20_006

图示:

dl_20_007

完整版:就是加了个额外概率,其实不要那个额外的概率也可以​,但是大家都这么用的

dl_20_008

 

LSTM (Long Short-term Memory)

公式:其实就是更加general了一点,所有概率都是通过上一个隐含层节点输出值以及本输入,一起计算得到,只不过参数不一样

1)临时隐含层输出

2)计算该输出概率

3)计算之前隐含层输出概率

4)计算最终输出概率

5)计算综合本hidden和上次hidden得到结果

6)最后对该结果再用一个输出概率处理一下

dl_20_009

图示:

dl_20_010

 

BRNN: Bidirectional RNN

解决问题:

当前节点输出和后续输出相关,例如:

Kind of -> 一点点

根据kind输出的话需要考虑of

图示变化:

dl_20_011

公式变化:

dl_20_012

 

Deep RNN: 就是堆叠了多层LSTM,得到最后结果

dl_20_013

 

BRNN+Attention

图示:

前向使用:每两个a做cat,作为输入,然后乘以一个attention,attention相当于学到的每个输入个概率,概率和为1,然后每个输入都乘以attention,然后求和,得到c,c才真正作为s的输入

dl_20_014

公式:

dl_20_015

如何计算Attention值:

dl_20_016

e可以通过神经网络学习得到,神经网络的输入为s和a

dl_20_017

目前最有效的方法就是:BRNN+Attention

 

1D CNN替代 RNN:

关于CNN深度学习:原理简明教程12-深度学习:计算机视觉问题与CNN

 

1D CNN

dl_20_018

和2D的CNN类似,只不过kernel都是1D的