目录
1.BN
- 1、Why
克服深度神经网络难以训练的弊病
从细的说是为了解决“Internal Covariate Shift”问题,统计机器学习中的一个经典假设是“源空间(source domain)和目标空间(target domain)的数据分布(distribution)是一致的”。如果不一致,那么就出现了新的机器学习问题,如,transfer learning/domain adaptation等。而covariate shift就是分布不一致假设之下的一个分支问题,它是指源空间和目标空间的条件概率是一致的,但是其边缘概率不同,神经网络的各层输出,由于它们经过了层内操作作用,其分布显然与各层对应的输入信号分布不同,而且差异会随着网络深度增大而增大,可是它们所能“指示”的样本标记(label)仍然是不变的,这便符合了covariate shift的定义;由于是对层间信号的分析,也即是“internal”的来由,解决“Internal Covariate Shift”办法就是ICS的实现方式,即通过mini-batch来规范化某些层/所有层的输入,从而可以固定每层输入信号的均值与方差。
说到底BN是为了防止“梯度弥散”。关于梯度弥散,大家都知道一个简单的栗子:0.930≈0.040.9^{30}\approx 0.040.9^{30}\approx 0.04。在BN中,是通过将activation规范为均值和方差一致的手段使得原本会减小的activation的scale变大 - 2、Where to use
遇到收敛速度很慢,或梯度爆炸等无法训练的状况时可以尝试BN来解决。另外,在一般使用情况下也可以加入BN来加快训练速度,提高模型精度
BN可以应用于网络中任意的activation set。文中还特别指出在CNN中,BN应作用在非线性映射前,即对做规范化