深度学习中的梯度消失与梯度爆炸

引入

在深度学习中,我们会听到梯度消失梯度爆炸。这指的是梯度变得极小或极大。

为什么在深层次网络中,才容易发生梯度消失梯度爆炸呢?这带来什么负面的影响?该怎么样来避免这种极端情况?

梯度消失梯度爆炸的原因

考虑一种极端情况,假设我们有一个层数很深的神经网络(L层),每层只有一个神经元,且激活函数g(z)=z。
* 如果权重都是0.5,则最终输出y就是0.5的L次方乘以x,可见这个值会随L增加而递减到非常小
* 如果权重都是1.5,则最终输出y就是1.5的L次方乘以x,可见这个值会随L增加而递增到非常大

这就是深层次网络中,网络层次对输出值影响巨大的基本原理。
* 权重矩阵只要比单位阵稍微大一点,在深层次网络中,激活函数将会成指数级递增
* 权重矩阵只要比单位阵稍微大一点,在深层次网络中,激活函数将会成指数级递减

推理到损失函数(导数、梯度)的计算中,也是一样的。

梯度消失梯度爆炸的影响

梯度消失梯度爆炸会导致模型的训练变得复杂:
* 不容易收敛,梯度下降算法会花费很长时间
* 梯度下降算法的收敛步长非常小

如何避免梯度消失梯度爆炸

权重矩阵的初始值,不能比1大很多,也不能比1小很多。所以,初始化权重值的大小设置合理,就不容易发生梯度消失梯度爆炸

根据研究,我们可以用下面的值来初始化权重

np.random.randn(_shape_)*np.sqrt(1/n)

posted on   ybdesire  阅读(1141)  评论(0编辑  收藏  举报

编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示