ResNet与梯度消失 与 batch normalization

本文探讨了深度学习中常见的梯度消失问题,分析了sigmoid函数的局限性,并介绍了ReLU作为解决方案的优点。此外,文章还讨论了ResNet如何通过跳跃连接有效缓解梯度消失,以及BatchNormalization在正则化和加速训练中的作用。

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

1 梯度消失问题

1.1 sigmoid当中的梯度消失

上图是sigmoid的函数图像,这个函数可以增加非线性性,但是当输入值足够大或者足够小的时候,输出值基本上不变,这个时候函数的梯度值基本上就是0,这就达不到梯度下降的功能了。

1.2 用ReLU代替sigmoid

为了解决这个问题,引入了新的非线性单元,ReLU。表达式也非常简单,可以看到,不管输入值多大,梯度值都是存在的,这就在一定程度上解决了梯度消失的问题,因而ReLU也比sigmoid在性能上更好。

1.3 连乘导致的梯度消失问题

因为梯度连乘的问题,梯度消失的问题依然存在。我们通过正常的back propagation进行计算

Loss = F(X_L,W_L,b_L)

\frac{\partial Loss}{\partial X_{L}} = \frac{\partial F(X_L,W_L,b_L)}{\partial X_L}

但是这个时候,如果网络很深很深,就会出现这样的情况:

Loss = F_N(X_{L_N},W_{L_N},b_{L_N})

L_N = F_{N-1}(X_{L_{N-1}},W_{L_{N-1}},b_{L_{N-1}})

\ldots

L_2 = F_{1}(X_{L_{1}},W_{L_{1}},b_{L_{1}})

这个时候再做back propagation求偏导的话,就是

\frac{\partial Loss}{\partial X_{1}} = \frac{\partial F_N(X_{L_N},W_{L_N},b_{L_N})}{\partial X_L}* \ldots * \frac{F_2(X_{L_2},W_{L_2},b_{L_2})}{\partial X_1}

这个偏导就是我们求的gradient,这个值本来就很小,而且再计算的时候还要再乘stepsize,就更小了。所以可以看到,梯度在反向传播过程中的计算,如果N很大,那么梯度值传播到前几层的时候就会越来越小,也就是梯度消失的问题。

2 ResNet怎样解决了梯度消失问题

它将基本的单元改成了这个样子

其实也很明显,通过求偏导,我们可以看到:

\frac{\partial X_L}{\partial X_{l}} = \frac{\partial X_l + F(X_l,W_l,b_l)}{\partial X_l} = 1 + \frac{\partial F(X_L,W_L,b_L)}{\partial X_L}

这样就算深度很深,梯度也不会消失了。

正是由于多了这条捷径,来自深层的梯度能够直接畅通无阻的通过,去到上一层,使得浅层网络层参数得到有效的训练。

3 Batch Normalization

https://baijiahao.baidu.com/s?id=1621528466443988599&wfr=spider&for=pc

对于小批量,BN会降低性能,所以要避免太小的批量,才能保证批归一化的效果

对于具有分布极不平衡的二分类测试任务,也不要使用BN

BN解决了梯度消失的问题

BN使得模型正则化,BN算法后,参数进行了归一化,不用太以来drop out、L2正则化解决归一化,采用BN算法后可以选择更小的L2正则约束参数,因为BN本身具有提高网络泛化能力的特性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值