为什么SGD需要对特征先做归一化缩放处理?

  统计/机器学习 最优化 监督式学习    浏览次数: 816
1

为什么SGD需要对特征先做归一化缩放处理?这是有什么因为所以,科学道理吗?


 

风云使者   2018-02-25 13:57



   2个回答 
8

吴恩达课程里的这一张图其实就是最好的答案了

最简单的情况,假设只有两个变量,然后它们的大小范围相差很多,那么损失函数可能就是如左图那样,是长椭圆形的等高线。

椭圆型的等高线下,sgd收敛路径很曲折,就是说收敛速度慢。

如果把变量进行标准化或者缩放处理,那么损失函数的等高线就会接近于一个正圆。

此时sgd的收敛路径就“坦荡荡”了,少走了弯路,自然收敛得顺畅。


SofaSofa数据科学社区 DS面经 问答 实战

曾经是科比   2018-03-11 11:46

5

归一化后有什么好处呢?原因在于神经网络学习过程本质就是为了学习数据分布,一旦训练数据与测试数据的分布不同,那么网络的泛化能力也大大降低;另外一方面,一旦每批训练数据的分布各不相同(batch梯度下降),那么网络就要在每次迭代都去学习适应不同的分布,这样将会大大降低网络的训练速度,这也正是为什么我们需要对数据都要做一个归一化预处理。

如果题主是问,如何证明归一化加速了训练,这个可以看看相关的论文。


SofaSofa数据科学社区 DS面经 问答 实战

limoran   2018-03-02 10:51



  相关主题

coordinate descent是什么意思?   3回答

python里用来做数值优化的库?   2回答

神经网络里的batch size和sgd里的batch size是一回事嘛?   1回答

线性回归有精确的解析解为什么还要用梯度下降得到数值解?   4回答

随机梯度下降(sgd)的收敛问题   3回答

为什么梯度的反方向是函数下降最快的方向?   3回答

RMSProp的直白解释   1回答

用SGD时陷入局部最优解的解决方法   3回答

牛顿法到底是一阶优化算法还是二阶优化算法?   2回答

梯度上升算法是什么?   2回答

对于小批量随机剃度下降法(mini-batch SGD),如何选择每批样本的数量?   1回答

nesterov’s momentum和momentum的区别?   0回答



回答问题时需要注意什么?

我们谢绝在回答前讲“生动”的故事。

我们谢绝“这么简单,你自己想”、“书上有的,你认真看”这类的回答;如果你认为对方的提问方式或者内容不妥,你可以直接忽略该问题,不用进行任何作答,甚至可以对该问题投反对票。

我们谢绝答非所问。

我们谢绝自己不会、硬要回答。

我们感激每一个用户在编写答案时的努力与付出!