[DeeplearningAI笔记]改善深层神经网络_深度学习的实用层面1.10_1.12/梯度消失/梯度爆炸/权重初始化
来源:互联网 发布:cdma是什么网络模式 编辑:程序博客网 时间:2024/05/16 17:41
觉得有用的话,欢迎一起讨论相互学习~Follow Me
1.10 梯度消失和梯度爆炸
当训练神经网络,尤其是深度神经网络时,经常会出现的问题是梯度消失或者梯度爆炸,也就是说当你训练深度网络时,导数或坡度有时会变得非常大,或非常小,甚至以指数方式变小.这加大了训练的难度.
假设你正在训练一个很深的神经网络,并且将其权重命名为”W[1],W[2],W[3],W[4]……W[L]”
为了简化说明,我们选择激活函数为g(z)=z(线性激活函数),b[l]=0(即忽略偏置对神经网络的影响)
这样的话,输出
假设每层的W的值相等都为:
从技术上讲第一层的权值可能不同,基于此我们有式子
对于一个深层神经网络来说层数L相当大,也就是说预测值
对于深层神经网络最终激活值的直观理解是,以上述网络结构来看,如果每一层W只比1大一点,最终W会爆炸级别增长,如果只比W略微小一点,在深度神经网络中,激活函数将以指数级递减.
虽然只是论述了对于最终激活函数输出值将以指数级别增长或下降,这个原理也适用与层数L相关的导数或梯度函数也是呈指数增长或呈指数递减
直观上理解,梯度消失会导致优化函数训练步长变小,使训练周期变的很长.而梯度爆炸会因为过大的优化幅度而跨过最优解
ps: 对于该视频中关于梯度消失和梯度爆炸的原理有一些争论
请参考
1.11 神经网络中的权重初始化
对于梯度消失和梯度爆炸的问题,我们想出了一个不完整的解决方案,虽然不能彻底解决问题但却很有用,有助于我们为神经网络更谨慎的选择随机初始化参数
单个神经元权重初始化
假设神经元有四个特征输入,暂时忽略b对神经元的作用则:
为了防止梯度爆炸或者梯度消失,我们希望
更简洁的说,如果你用的是Sigmoid函数,设置某层权重矩阵W[l]=np.random.randn(shape)∗np.sqrt(1n[l−1])(该层每个神经元的特征数量分之一,即l层上拟合的单元数量)
如果你用的是ReLU激活函数,设置方差为2n 更好,更简洁的说,就是设置某层权重矩阵W[l]=np.random.randn(shape)∗np.sqrt(2n[l−1])(该层每个神经元的特征数量分之一,即l层上拟合的单元数量)
如果你用的是Tanh激活函数,则设置某层权重矩阵为W[l]=np.random.randn(shape)∗np.sqrt(1n[l−1]) 或者为W[l]=np.random.randn(shape)∗np.sqrt(2n[l−1]+nl)
这些方法都被成为Xavier 初始化(Xavier initialization),实际上,NG认为所有这些公式都只是给你一个起点,它们给出初始化权重矩阵的方差的默认值,如果你想添加方差,则方差参数则是另一个你需要调整的超级参数,例如对于ReLU激活函数而言,你可以尝试给公式W[l]=np.random.randn(shape)∗np.sqrt(2n[l−1]) 添加一个乘数参数,但是NG认为相对于其他参数的调优,通常把它的调优优先级放得比较低.
1.12 梯度的数值逼近
主要讲利用双边误差计算公式:
利用这个公式简单的估计函数的微分.
补充资料
梯度检查
- [DeeplearningAI笔记]改善深层神经网络_深度学习的实用层面1.10_1.12/梯度消失/梯度爆炸/权重初始化
- [DeeplearningAI笔记]改善深层神经网络_深度学习的实用层面1.9_归一化normalization
- [DeeplearningAI笔记]改善深层神经网络1.4_1.8深度学习实用层面_正则化Regularization与改善过拟合
- [DeeplearningAI笔记]改善深层神经网络1.1_1.3深度学习实用层面_偏差/方差/欠拟合/过拟合/训练集/验证集/测试集
- [DeeplearningAI笔记]改善深层神经网络_优化算法2.1_2.2_mini-batch梯度下降法
- 【深度学习】RNN的梯度消失/爆炸与正交初始化
- 深度学习:梯度消失和梯度爆炸
- 深度学习:梯度消失和梯度爆炸
- 深度神经网络的梯度不稳定问题--梯度消失与梯度爆炸
- 深度神经网络-消失的梯度问题和爆炸的梯度问题
- 深度学习笔记---梯度消失、梯度激增
- DeepLearning.ai学习笔记(二)改善深层神经网络:超参数调试、正则化以及优化--Week1深度学习的实用层面
- 梯度消失,梯度爆炸
- 关于梯度消失,梯度爆炸的问题
- [DeeplearningAI笔记]改善深层神经网络_优化算法2.3_2.5_带修正偏差的指数加权平均
- DeepLearing学习笔记-改善深层神经网络(第一周作业-3-梯度校验)
- 深度学习入门系列博客(严重推荐)--如何训练 梯度消失 梯度爆炸等解释的明确
- [DeeplearningAI笔记]改善深层神经网络_优化算法2.6_2.9Momentum/RMSprop/Adam优化算法
- BOM
- python: sort 与 sorted 区别
- dubbo.xml上报异常解决方案
- ssh框架环境搭建
- Django根据现有数据库建立/更新model
- [DeeplearningAI笔记]改善深层神经网络_深度学习的实用层面1.10_1.12/梯度消失/梯度爆炸/权重初始化
- 2.Spring Cloud:服务消费(基础)【Dalston版】
- Fragment学习(敲黑板!划重点)
- BaseAdapter之getItem不执行问题
- 通过自定义URL协议在Web中启动本地应用程序
- qt5 显示调用CAN卡第三方库并调用函数
- 自适应1D FEM
- 08-面向对象(抽象类-练习)1 08-面向对象(抽象类-练习)2 08-面向对象(抽象类-练习)3
- JAVA IO (长期更新)