为什么SGD需要对特征先做归一化缩放处理?这是有什么因为所以,科学道理吗?
2个回答
吴恩达课程里的这一张图其实就是最好的答案了
最简单的情况,假设只有两个变量,然后它们的大小范围相差很多,那么损失函数可能就是如左图那样,是长椭圆形的等高线。
椭圆型的等高线下,sgd收敛路径很曲折,就是说收敛速度慢。
如果把变量进行标准化或者缩放处理,那么损失函数的等高线就会接近于一个正圆。
此时sgd的收敛路径就“坦荡荡”了,少走了弯路,自然收敛得顺畅。
归一化后有什么好处呢?原因在于神经网络学习过程本质就是为了学习数据分布,一旦训练数据与测试数据的分布不同,那么网络的泛化能力也大大降低;另外一方面,一旦每批训练数据的分布各不相同(batch梯度下降),那么网络就要在每次迭代都去学习适应不同的分布,这样将会大大降低网络的训练速度,这也正是为什么我们需要对数据都要做一个归一化预处理。
如果题主是问,如何证明归一化加速了训练,这个可以看看相关的论文。