深度学习中的BatchNorm个人总结

Batchnorm想要解决的问题:

深度神经网络随着网络加深,网络收敛越来越慢,在训练过程中会出现梯度消失。(总结为网络收敛慢,梯度消失问题)

以上问题出现的原因:

随着网络加深,训练过程中每一层的输出分布逐渐发生偏移,一般整体会逐渐向非线性函数的上下限两端靠近。比如sigmoid激活函数,越往两端走,梯度越小,甚至消失。梯度太小使得训练慢,消失使得无法训练。

BatchNorm如何解决:

通过归一化将数据分布拉回标准正态分布,使得梯度一直处于比较大的状态;同时如果直接归一化为标准正太分布,就抹掉了前面学习的非线性表达能力,因此在batchnorm的实现过程中,增加了平移和缩放参数。保留了非线性。

BatchNorm具体实现:

1.先求本次batch的均值;

2.求本个batch的方差

3.最输入做归一化

4.引入缩放和平移变量gama和beta,最后计算输出。

BatchNorm的好处:

1.使得调参更容易,初始化要求也没那么高,可以使用更大的学习率;

2.降低了数据之间的绝对差异,有去相关的作用,更多考虑相对差异,有利于分类;

3.BN一种正则,可以代替dropout。

你可能感兴趣的:(深度学习基础知识)