Feature normalization Feature scaliing
首先是为什么要归一化或者标准化,从下面可以看出来如果我们的输入的样本或者特征值,他们之间的差异比较大,那么其实我们的梯度下降图是畸形的。比如下面因为x1比x2小太多,所以梯度没有x2 那么浮夸。但是如果他们是一样的话,那么他们就有右边这样的东西了。所以为了好的梯度下降,我们需要针对不同的参数用不同的learning rate。这一个是已经有实现的就是我们自适应优化器的出现,但是其实优化器对他们的影响还是有限的,但是如果我们在处理前,将图变成右边那样呢?那是不是其实我们就可以更好的做梯度下降了,所以到这里我们可以看到了BN层或者归一化的作用力。
其他原因呢?
之所以就会研究BN层是因为,我在用pytorch写模型的时候,会发现pytorch给了两个东西一个叫做model.train()
一个叫做model.eval().这两者的区别在于如果你要训练模型那么你要用第一句,如果你是测试模型那么你要用第二句。而两者的区别在于他们对BN层和dropout层的处理是不一样的。所以我们发现训练和测试的过程,我们看待BN层也是不一样的。也因为好奇,所以我们去深入看看BN层在训练的过程的作用。要不也不会叫做batchnormalization了,因为和