一、前言
随着深度学习的发展,为了探索是否层数越多预测越准确,学者们进行了诸多实验,最后发现当层数到达某个值时期预测精度不升反降。而后,BatchNorm出现在一定程度解决了这个问题。
在使用Sigmoid函数后,其在x∈[-2,2]的区间的导数在[0.1,0.25]区间,这就容易在梯度更新的过程中出现梯度弥散的现象,而在进行BatchNorm后,函数值会分布在0附近,且梯度不至于过小,从而在一定程度上解决了梯度弥散的问题。

如上图,较之未标准化的权值,右图(标准化)收敛更加迅速,且优化路径更加理性。
二、BN层
对每个channel求mean和std,再进行标准化,使其分布在0-1区间。其还有一个缩放因子γ,位移因子β

在训练模式下:
1. 前向传播的mean和std会向真实数据的mean和std靠近
2. 反向传播会对β和γ进行更新
在测试模式下上述参数不变
BN默认:
axix=-1(对channel进行)
center=true >>β参数

本文探讨了深度学习中BatchNorm的作用,包括如何通过标准化解决Sigmoid函数的梯度弥散问题,以及BN层在训练和测试模式下的工作原理。通过实例展示了BN层如何影响模型收敛速度和稳定性。
最低0.47元/天 解锁文章
3528





