【深度学习】RNN的梯度消失/爆炸与正交初始化
来源:互联网 发布:田馥甄唱功 知乎 编辑:程序博客网 时间:2024/06/08 00:06
在训练较为复杂的RNN类型网络时,有时会采取正交方法初始化(orthogonal initialization)网络参数。本文用简单的例子介绍其中的原因。
本文较大程度参考了这篇博客。
简单例子
RNN具有如下形式:
我们考虑一个极端简化的版本:没有输入,激活函数为直通,直接输出隐变量。
计算第t步的输出时,需要计算参数矩阵的t次幂:
为了计算简便,可以把方阵
其中
优化网络参数时,使用简单的二范数代价:
为了更新参数,需要计算代价对于参数的导数(是个标量):
梯度消失/爆炸
当RNN步数t增加时,
∂yt/∂Wi 会怎样变化呢?
为书写直观假设
可以直接写出
分别写出对四个参数的导数(长度为2的矢量):
重点:每一项里都有
代价对于梯度的导数
∝ 参数矩阵特征值λi 的t次方。
如果
如果
正交初始化
理想的情况是,特征值绝对值为1。则无论步数增加多少,梯度都在数值计算的精度内。
这样的参数矩阵
把转移矩阵初始化为单位正交阵,可以避免在训练一开始就发生梯度爆炸/消失现象,称为orthogonal initialization。
其他解决方法
除了正交初始化,在RNN类型网络训练中,还可以使用如下方法解决梯度消失/爆炸问题:
- 使用ReLU激活函数->解决梯度消失
- 对梯度进行剪切(gradient clipping)->解决梯度爆炸
- 引入更复杂的结构,例如LSTM、GRU->解决梯度消失
- 【深度学习】RNN的梯度消失/爆炸与正交初始化
- 深度学习:梯度消失和梯度爆炸
- 深度学习:梯度消失和梯度爆炸
- [DeeplearningAI笔记]改善深层神经网络_深度学习的实用层面1.10_1.12/梯度消失/梯度爆炸/权重初始化
- 【深度学习】RNN中梯度消失的解决方案(LSTM)
- 深度神经网络的梯度不稳定问题--梯度消失与梯度爆炸
- 梯度爆炸与梯度消失
- 梯度消失与梯度爆炸
- [rnn]BPTT_梯度消失/爆炸问题
- 【深度学习】深度学习中RNN梯度消失
- 深度学习入门系列博客(严重推荐)--如何训练 梯度消失 梯度爆炸等解释的明确
- 关于梯度消失,梯度爆炸的问题
- 梯度消失,梯度爆炸
- 深度神经网络-消失的梯度问题和爆炸的梯度问题
- 梯度消失/爆炸浅析
- 梯度消失、爆炸原因
- 机器学习总结(二):梯度消失和梯度爆炸
- 梯度消失和梯度爆炸
- CodeForces 768C Jon Snow and his Favourite Number 暴力 空间换时间
- k8s kubernetes 高可用https and http集群实战 HA
- WebStudy04_AngularJS
- 使用Java Socket实现简单的聊天功能
- 使用Struts2+Hibernate(HQL)添加数据、查询数据
- 【深度学习】RNN的梯度消失/爆炸与正交初始化
- WebStudy05_移动端+less+bootstrap+zepto
- VR系列——Oculus Rift 介绍指南:七、使用演示场景测试Rift
- drbd安装及配置
- closest-number-in-sorted-array
- 2017.5.9 运输计划 失败总结
- 图像处理-图像滤波和卷积的区别(filter、conv)
- 五子棋_Java_控制台窗口_人人对战
- Java单例模式