algolearn
V1
2022/01/26阅读:84主题:默认主题
BN和dropout正向反向传播的不同
1 BN
Batch Normalization是一种数据归一化方法,往往用在深度神经网络中激活层之前。其作用可以加快模型训练时的收敛速度,使得模型训练过程更加稳定,避免梯度爆炸或者梯度消失。详细可参考batch normalization的原理以及特点
训练过程
-
计算batch内均值方差, 和 batch的均值和标准差 -
对输入数据进行变换,其中 和 分别是缩放和平移的可学习的参数,一旦网络训练完成,这两个参数便被固定下来了, 防分母为0
测试过程
和 已经是网络的固定参数了, 和 是训练时指数加权滑动平均值:在训练的时候会计算出每一个batch的 和 ,然后采用momentum算法来分别计算 和 的滑动平均值,记录下来作为测试用。m一般取0.99或者0.999,即连乘多个0.99之后,之前的batch影响会变弱。
2 Dropout
dropout就是在正常的神经网络基础上给每一层的每一个神经元加了一道概率流程来随机丢弃某些神经元以达到防止过拟合的目的。详细可参考神经网络中的dropout机制
训练过程
-
以某概率随机地删除一部分神经元 -
用剩下的神经元前向传播得到误差,采用反向传播对这些保留的神经元进行参数更新,被删除的神经元不更新 -
恢复被删除的神经元 -
继续1,2,3至训练结束
测试过程
-
训练的时候由于以概率1-p随机的丢掉了部分神经元(p的概率保留神经元),测试时用的是全部的神经元,因此输出结果需要乘以p
两种实现方法
-
训练时以1-p的概率随机扔掉部分神经元节点,在预测的时候,结果需要乘以p来恢复真实结果。 -
在训练阶段缩修改,从而使得其测试阶段保持不变。比例因子是保持概率的倒数即1/p。所以我们换一个思路,在训练时候对数据进行1/p缩放,在测试的时后,就不需要做什么了。
欢迎关注微信公众号(算法工程师面试那些事儿),本公众号聚焦于算法工程师面试,期待和大家一起刷leecode,刷机器学习、深度学习面试题等,共勉~

作者介绍
algolearn
V1