觉得有用的话,欢迎一起讨论相互学习~Follow Me

1.10 梯度消失和梯度爆炸

当训练神经网络,尤其是深度神经网络时,经常会出现的问题是梯度消失或者梯度爆炸,也就是说当你训练深度网络时,导数或坡度有时会变得非常大,或非常小,甚至以指数方式变小.这加大了训练的难度.

假设你正在训练一个很深的神经网络,并且将其权重命名为"W[1],W[2],W[3],W[4]......W[L]"

为了简化说明,我们选择激活函数为g(z)=z(线性激活函数),b[l]=0(即忽略偏置对神经网络的影响)

这样的话,输出\(\hat{y}=w[l]*w[l-1]*w[l-2]...w[2]*w[1]*x\)

假设每层的W的值相等都为:\(\begin{bmatrix}1.5&0\\0&1.5\\\end{bmatrix}\)

从技术上讲第一层的权值可能不同,基于此我们有式子\(\hat{y}=w[1]*\begin{bmatrix}1.5&0\\0&1.5\\\end{bmatrix}^{L-1}*x\)

对于一个深层神经网络来说层数L相当大,也就是说预测值\(\hat{y}\)实际上是以指数级增长的,它增长的比率是\(1.5^L\),因此对于一个深层神经网络来说,y的值将爆炸式增长.相反的,如果权重是0.5,有\(\hat{y}=w[1]*\begin{bmatrix}0.5&0\\0&0.5\\\end{bmatrix}^{L-1}*x\) 因此每个矩阵都小于1,假设x[1]x[2]的输入值都是1,那么激活函数值到最后会变成\(0.5^{(L-1)}\)激活函数值将会以指数级别下降.

对于深层神经网络最终激活值的直观理解是,以上述网络结构来看,如果每一层W只比1大一点,最终W会爆炸级别增长,如果只比W略微小一点,在深度神经网络中,激活函数将以指数级递减.

虽然只是论述了对于最终激活函数输出值将以指数级别增长或下降,这个原理也适用与层数L相关的导数或梯度函数也是呈指数增长或呈指数递减

直观上理解,梯度消失会导致优化函数训练步长变小,使训练周期变的很长.而梯度爆炸会因为过大的优化幅度而跨过最优解

ps: 对于该视频中关于梯度消失和梯度爆炸的原理有一些争论

请参考

1.11 神经网络中的权重初始化

对于梯度消失和梯度爆炸的问题,我们想出了一个不完整的解决方案,虽然不能彻底解决问题但却很有用,有助于我们为神经网络更谨慎的选择随机初始化参数

单个神经元权重初始化

假设神经元有四个特征输入,暂时忽略b对神经元的作用则:\(z=w_{1}x_{1}+w_{2}x_{2}+w_{3}x{3}+...+w_{n}x_{n}\)

为了防止梯度爆炸或者梯度消失,我们希望\(w_{i}\)尽可能小,最合理的方法就是设置\(W方差为\frac{1}{n}\) n表示神经元的输入特征数量

更简洁的说,如果你用的是Sigmoid函数,设置某层权重矩阵\(W^{[l]}=np.random.randn(shape)*np.sqrt(\frac{1}{n^{[l-1]}})(该层每个神经元的特征数量分之一,即l层上拟合的单元数量)\)

如果你用的是ReLU激活函数,设置方差为\(\frac{2}{n}\)更好,更简洁的说,就是设置某层权重矩阵\(W^{[l]}=np.random.randn(shape)*np.sqrt(\frac{2}{n^{[l-1]}})(该层每个神经元的特征数量分之一,即l层上拟合的单元数量)\)

如果你用的是Tanh激活函数,则设置某层权重矩阵为\(W^{[l]}=np.random.randn(shape)*np.sqrt(\frac{1}{n^{[l-1]}})\)或者为\(W^{[l]}=np.random.randn(shape)*np.sqrt(\frac{2}{n^{[l-1]}+n^{l}})\)

这些方法都被成为Xavier 初始化(Xavier initialization),实际上,NG认为所有这些公式都只是给你一个起点,它们给出初始化权重矩阵的方差的默认值,如果你想添加方差,则方差参数则是另一个你需要调整的超级参数,例如对于ReLU激活函数而言,你可以尝试给公式\(W^{[l]}=np.random.randn(shape)*np.sqrt(\frac{2}{n^{[l-1]}})\)添加一个乘数参数,但是NG认为相对于其他参数的调优,通常把它的调优优先级放得比较低.

1.12 梯度的数值逼近

主要讲利用双边误差计算公式:
\[\frac{f(\theta+\epsilon)-f(\theta-\epsilon)}{2\epsilon}\approx{g(\theta)}\]
利用这个公式简单的估计函数的微分.

补充资料

梯度检查

转载于:https://www.cnblogs.com/cloud-ken/p/7717141.html

[DeeplearningAI笔记]改善深层神经网络_深度学习的实用层面1.10_1.12/梯度消失/梯度爆炸/权重初始化...相关推荐

  1. [DeeplearningAI笔记]改善深层神经网络_优化算法2.1_2.2_mini-batch梯度下降法

    觉得有用的话,欢迎一起讨论相互学习~Follow Me 2.1 mini-batch gradient descent mini-batch梯度下降法 我们将训练数据组合到一个大的矩阵中 \(X=\b ...

  2. ann人工神经网络_深度学习-人工神经网络(ANN)

    ann人工神经网络 Building your first neural network in less than 30 lines of code. 用不到30行代码构建您的第一个神经网络. 1.W ...

  3. 吴恩达【优化深度神经网络】笔记01——深度学习的实用层面

    文章目录 引言 一.训练集/验证集/测试集(Train/Dev/Test sets) 1. 数据集选择 2. 补充:交叉验证(cross validation) 二.偏差和方差(Bias/Varian ...

  4. 吴恩达深度学习笔记5-Course2-Week1【深度学习的实用层面】

    改善深层神经网络:超参数调试.正则化以及优化 深度学习的实用层面 一.训练.验证.测试集 样本数据分成以下三个部分: 训练集(train set): 用于对模型进行训练. 验证集(hold-out c ...

  5. 3.深度学习的实用层面

    第一周:深度学习的实用层面 项目进展得一个关键性得因素就是划分高质量得训练集,验证集,测试集.这有助于提高循环迭代得效率.验证集也称为development set 也称为dev set. 验证集主要 ...

  6. Coursera吴恩达《优化深度神经网络》课程笔记(1)-- 深度学习的实用层面

    红色石头的个人网站:redstonewill.com Andrew Ng的深度学习专项课程的第一门课<Neural Networks and Deep Learning>的5份笔记我已经整 ...

  7. 吴恩达《优化深度神经网络》精炼笔记(1)-- 深度学习的实用层面

    AI有道 不可错过的AI技术公众号 关注 吴恩达的深度学习专项课程的第一门课<神经网络与深度学习>的所有精炼笔记我已经整理完毕.迷路的小伙伴请见文章末尾的推荐阅读: 在接下来的几次笔记中, ...

  8. 前馈神经网络_深度学习基础理解:以前馈神经网络为例

    区别于传统统计机器学习的各类算法,我们从本篇开始探索深度学习模型.深度学习在应用上的重要性现如今已毋庸置疑,从2012年燃爆ImageNet,到2016年的AlphaGo战胜李世石,再到2018年的B ...

  9. 4.5 搭建深层神经网络块-深度学习-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 4.4 为什么使用深层表示 回到目录 4.6 前向和反向传播 搭建深层神经网络块 (Building Blocks of Deep Neural Networks) 这周的前 ...

最新文章

  1. E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarily unavailable)E: U
  2. Flutter开发使用PlatformView显示iOS原生View(50)
  3. 【算法分析与设计】实验 分治算法解决Gray码问题
  4. android 代码 lut,Android BitmapFactory.decodeResource()错误或用于加载大LUT的替代选项...
  5. centos系统中,相同的shell命令,直接在命令行中可以执行,在.sh文件中运行不了的原因
  6. Linux C/C++开发环境搭建指针
  7. 论一种迫不得已用全中文数据库的情景
  8. 字符串内置方法 第二弹
  9. C++ - 使用copy函数打印容器(container)元素
  10. matlab画圆的命令_matlab画圆
  11. 京瓷打印机m5521cdn_京瓷M5521cdn打印机驱动(京瓷打印机驱动程序)V5.1.2107 最新版...
  12. python span 抓取_python – Beautifulsoup获取span内容
  13. Linux ALSA音频驱动一:音频系统概述
  14. 利用axis调用webservice
  15. 双软企业税收优惠政策
  16. 成人高考 计算机英语作文,「2017成人高考高起专英语作文」求成人考试英语作文4篇!...
  17. 联想R7000P莫名其妙黑屏问题记录
  18. NVT 异常开机log
  19. 如何使用信息化手段完成仓库库存的高效清理
  20. 技术人员如何创业5(终结篇)---创业公司管理人员应该掌握的6个决策框架篇

热门文章

  1. Linux自学笔记——iptables
  2. 单链表的读取、插入与删除
  3. scla-基础-函数-元组(0)
  4. 删除xenserver的iso库
  5. shell command 输入时的快捷键
  6. python ** 运算符_Python语法基础(2)运算符
  7. Ubuntu ibus 输入法之Skype不能输入中文
  8. jfreechart的时序图(曲线图)运行时间长了就变的很卡
  9. [INS-32025] 所选安装与指定 Oracle 主目录中已安装的软件冲突。
  10. HDU - 3564 Another LIS(LIS+线段树)