关于batch normalization的理解

套餐:卷积+BN+激活,原始的BN0=( X - E(X) ) / std,减去均值除以标准差,改进后的BN=γ*BN0 + β ,其中γ和β是通过模型学习得到的。

原因:

1、每次卷积完成后,数据分布会改变,与原始数据的分布出现偏差,不利于网络学习和收敛。

改进方法:

卷积后,加入BN层,使得数据的分布又回到了原始数据的分布,有利于模型训练。

新的问题:但是加入BN层之后,使得数据区间是[0-1],经过激活函数sigmoid时候,数据区间接近于线性,使得模型很难学到非线性知识。

新的问题的解决方法:将BN乘以γ然后+β,而且这两个参数都是模型可以学习到的,这样一来就解决加入BN后线性问题。

应用:

参考论文:Learning Efficient Convolutional Networks through Network Slimming

原理:1、模型剪枝中,可以通过γ参数判断卷积层的每个通道的权重,将权重高的保存,权重低的去除,之后再进行训练。                                                                                                                              2、为了使得通道权重γ之间更具区分度,需要对γ进行L1正则,使得不同通道之间的γ区别较大。备注:L1正则是绝对值,可以进行稀疏与特征选择,L2正则是平方项,可以进行平滑特征。

 

Learning Efficient Convolutional Networks through Network Slimming

你可能感兴趣的:(batch,深度学习,神经网络)