BP、梯度消失/爆炸与ResNet

深度学习最底层的理论,竟有些生疏了。

反向传播算法

首先是bp反向传播,其核心idea就是,从后向前,一层层的梯度传递。
高数中求偏导的时候就有个链式法则,对所有路径的偏导乘积求和,就是该参数的偏导
在这里插入图片描述
bp算法就是通过自后向前的偏导计算,避免了重复的计算。每一个节点的偏导值,都可以在前一级的偏导计算中用到

下面举个简单反向传播的直链例子:
在这里插入图片描述
ω \omega ω b b b是参数, h h h是隐含层神经元激活后的值, f f f是激活函数。
g i g_i gi我把它叫做梯度参数,每次更新和缓存的也是这个。
且很容易推得 g i = g i + 1 ⋅ ω i + 1 ⋅ f ′ ( ω i h i + b i ) g_i=g_{i+1}\cdot\omega_{i+1}\cdot f^\prime(\omega_ih_i+b_i) gi=gi+1

梯度消失问题在深度BP神经网络中是一个常见的挑战,它会减慢学习速度甚至导致学习过程无法收敛。为了解决这个问题,并提高网络训练的收敛速度,可以采取以下措施: 参考资源链接:[BP神经网络算法详解推导](https://wenku.youkuaiyun.com/doc/6412b7a4be7fbd1778d4b07b?spm=1055.2569.3001.10343) 1. 使用适当的激活函数:选择ReLU(Rectified Linear Unit)或Leaky ReLU等激活函数,这些函数在正区间梯度恒定,有助于缓解梯度消失的问题。 2. 权重初始化策略:使用He初始化或Xavier初始化等方法对权重进行初始化,这些方法考虑了网络的层数,以确保每层的输入方差保持一致,从而防止梯度在传播过程中过小或过大。 3. 使用批量归一化(Batch Normalization):批量归一化可以减少内部协变量偏移,稳定学习过程,并且有助于缓解梯度消失问题。 4. 应用梯度剪切(Gradient Clipping):当梯度值过大时,通过设置一个阈值来剪切梯度,防止梯度爆炸,并有助于保持梯度值在合理的范围内。 5. 改进优化算法:采用Rprop(Resilient Backpropagation)或者Adam等自适应学习率优化算法,这些算法能根据梯度的大小和方向自动调整学习率,提高收敛速度并减少梯度消失的影响。 6. 使用残差网络(ResNet)结构:残差网络通过引入跳跃连接,允许梯度直接流向前面的层,即使在很深的网络中也能有效地训练。 7. 正则化技术:应用L1、L2正则化或者Dropout等技术减少过拟合,也可以间接帮助缓解梯度消失的问题。 在实践中,可以通过结合以上多种策略来优化BP神经网络的训练过程。例如,可以将ReLU激活函数、He初始化方法Adam优化器结合起来使用,这不仅能有效避免梯度消失问题,还能加快网络的收敛速度。为了进一步理解这些技术和方法,《BP神经网络算法详解推导》一书中提供了详细的算法原理和推导,可以帮助深入理解每个策略的实现细节和内在联系。 参考资源链接:[BP神经网络算法详解推导](https://wenku.youkuaiyun.com/doc/6412b7a4be7fbd1778d4b07b?spm=1055.2569.3001.10343)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值