机器学习面试常问算法问题二:梯度消失和梯度爆炸

本文探讨了深度神经网络中常见的梯度消失和梯度爆炸问题,解释了这些问题如何影响模型训练,并提出了几种解决方案,包括激活函数的选择、批量归一化和LSTM结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.梯度消失与梯度爆炸问题简述
层数比较多的神经网络模型在使用梯度下降法对误差进行反向传播时会出现梯度消失和梯度爆炸问题。梯度消失问题和梯度爆炸问题一般会随着网络层数的增加变得越来越明显。

例如,对于图1所示的含有3个隐藏层的神经网络,梯度消失问题发生时,靠近输出层的hidden layer 3的权值更新相对正常,但是靠近输入层的hidden layer1的权值更新会变得很慢,导致靠近输入层的隐藏层权值几乎不变,扔接近于初始化的权值。这就导致hidden layer 1 相当于只是一个映射层,对所有的输入做了一个函数映射,这时此深度神经网络的学习就等价于只有后几层的隐藏层网络在学习。梯度爆炸的情况是:当初始的权值过大,靠近输入层的hidden layer 1的权值变化比靠近输出层的hidden layer 3的权值变化更快,就会引起梯度爆炸的问题。
在这里插入图片描述
二.利用数学公式推导梯度消失与梯度爆炸的原因
下面以一个简单的含有三个隐藏层的单神经元神经网络为例,激活函数使用sigmoid,如图2所示。

在这里插入图片描述
易知:
在这里插入图片描述
在这里插入图片描述
z i = w i ∗ x i + b i a s i z_i = w_i*x_i+bias_i zi=wixi+biasi
在这里插入图片描述

在这里插入图片描述
可见sigmoid的导数的最大值为1/4,通常初始化的网络权值w通常都小于1,从而有
在这里插入图片描述
如下图所示:前面的层比后面的层梯度变化更小,故变化更慢,从而引起了梯度消失问题。
在这里插入图片描述
当:
在这里插入图片描述
也就是w比较大的情况。则前面的网络层比后面的网络层梯度变化更快,引起了梯度爆炸的问题。
通常来说当激活函数是sigmoid时,梯度消失比梯度爆炸更容易发生。

三.如何解决梯度消失与梯度爆炸?
1.用ReLU、Leaky ReLU、PReLU、RReLU、Maxout等替代sigmoid函数。
2.用Batch Normalization。
3.LSTM的结构设计也可以改善RNN中的梯度消失问题。

参考:
https://www.jianshu.com/p/243ab5aff906

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值