RNN梯度消失与梯度爆炸的原因

栏目: R语言 · 发布时间: 7年前

内容简介:• 关于RNN结构• 关于RNN前向传播• 关于RNN反向传播

• 关于RNN结构

• 关于RNN前向传播

• 关于RNN反向传播

• 解决方法

1. 关于RNN结构

循环神经网络RNN(Recurrent Neural Network)是用于处理序列数据的一种神经网络,已经在自然语言处理中被广泛应用。下图为经典RNN结构:

RNN梯度消失与梯度爆炸的原因

RNN结构

2. 关于RNN前向传播

RNN前向传导公式:

RNN梯度消失与梯度爆炸的原因 其中:  St :  t 时刻的隐含层状态值

Ot :  t 时刻的输出值

① 是隐含层计算公式,U是输入x的权重矩阵,W是时刻t-1的状态值

St-1作为输入的权重矩阵,Φ是激活函数。

② 是输出层计算公式,V是输出层的权重矩阵,f是激活函数。

损失函数(loss function)采用交叉熵 RNN梯度消失与梯度爆炸的原因 ( Ot 是t时刻预测输出, RNN梯度消失与梯度爆炸的原因 是 t 时刻正确的输出) 

那么对于一次训练任务中,损失函数: RNN梯度消失与梯度爆炸的原因 , T 是序列总长度。

假设初始状态St为0,t=3 有三段时间序列时,由 ① 带入②可得到

t1、t2、t3 各个状态和输出

RNN梯度消失与梯度爆炸的原因

RNN梯度消失与梯度爆炸的原因

RNN梯度消失与梯度爆炸的原因

3. 关于RNN反向传播

BPTT(back-propagation through time)算法是针对循层的训练算法,它的基本原理和BP算法一样。其算法本质还是梯度下降法,那么该算法的关键就是计算各个参数的梯度,对于RNN来说参数有 U、W、V。

RNN梯度消失与梯度爆炸的原因

反向传播

RNN梯度消失与梯度爆炸的原因 可以简写成:

RNN梯度消失与梯度爆炸的原因

RNN梯度消失与梯度爆炸的原因 观察③④⑤式,可知,对于 V 求偏导不存在依赖问题;但是对于 W、U 求偏导的时候,由于时间序列长度,存在长期依赖的情况。主要原因可由 t=1、2、3 的情况观察得 , St会随着时间序列向前传播,同时St是 U、W 的函数。

前面得出的求偏导公式⑥,取其中累乘的部分出来,其中激活函数Φ 通常是:tanh 则

RNN梯度消失与梯度爆炸的原因

RNN梯度消失与梯度爆炸的原因

由上图可知当激活函数是tanh函数时,tanh函数的导数最大值为1,又不可能一直都取1这种情况,而且这种情况很少出现,那么也就是说,大部分都是小于1的数在做累乘,若当t很大的时候, RNN梯度消失与梯度爆炸的原因 趋向0,举个例子:0.8 50 =0.00001427247也已经接近0了,这是RNN中梯度消失的原因。

再看⑦部分:

RNN梯度消失与梯度爆炸的原因

tanh’,还需要网络参数 W ,如果参数 W 中的值太大,随着序列长度同样存在长期依赖的情况,那么产生问题就是梯度爆炸,而不是梯度消失了,在平时运用中,RNN比较深,使得梯度爆炸或者梯度消失问题会比较明显。

4. 解决方法

面对梯度消失问题,可以采用ReLu作为激活函数,下图为ReLu函数

RNN梯度消失与梯度爆炸的原因

ReLU函数在定义域大于0部分的导数恒等于1,这样可以解决梯度消失的问题,(虽然恒等于1很容易发生梯度爆炸的情况,但可通过设置适当的阈值可解决)。

另外计算方便,计算速度快,可以加速网络训练。但是,定义域负数部分恒等于零,这样会造成神经元无法激活(可通过合理设置学习率,降低发生的概率)。

ReLU有优点也有缺点,其中的缺点可以通过其他操作取避免或者减低发生的概率,是目前使用最多的激活函数。

还可以通过更改内部结构来解决梯度消失和梯度爆炸问题,那就是LSTM了~!

知乎原文链接 :

https://zhuanlan.zhihu.com/p/53405950


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Algorithms + Data Structures = Programs

Algorithms + Data Structures = Programs

Niklaus Wirth / Prentice Hall / 1975-11-11 / GBP 84.95

It might seem completely dated with all its examples written in the now outmoded Pascal programming language (well, unless you are one of those Delphi zealot trying to resist to the Java/.NET dominanc......一起来看看 《Algorithms + Data Structures = Programs》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具