啥是归一化?为啥归一化?
表面理解
归:数据缩放
一:0~1之间
那就是把输入限制在0~1之间嘛
为啥归一化?
就像下图的右侧,θ2先到了最优解,但是θ1还没到,这会导致θ2反复震荡。
Q:为什么要做归一化?
A:只要是基于梯度来进行下降求解最优解,都需要归一化,目的是各个维度梯度可以同时收敛
Q:不做归一化,产生的问题是什么?
A:如果X1<<X2,那么W1>>W2,那么我们W1初始化之后要到达最优解的位置走的距离就远大于
W1初始化之后要到达最优解的位置走的距离!
因为X1<<X2,那么g1 = (y_hat-y)*x1 ,g2 = (y_hat-y) * x2,那么g1<<g2
因为g1<<g2,那么W调整的幅度等于W_t+1 - W_t = - alpha * g
所以g越小,调整的幅度就越小
总结一下上面的推导:
X1<<X2,W1调整的幅度<<W2调整的幅度,但是W1需要调整的距离>>W2需要调整的距离
矛盾就产生了,如果此时不做归一化,去使用梯度下降求解最优解的话,
产生的效果,即会是同样的迭代次数下,W2已经调整好了,W1还在慢慢的往前挪,
整体看起来,就比先做归一化,再做梯度下降,需要的迭代次数要多了!!!
Q:怎么让多个维度对应的W基本上在同一时刻收敛?
A:对多个维度X来进行统一的归一化,比如说,最大值最小值归一化的方法
Q:何为最大值最小值归一化呢?
A:(X-Xmin)/(Xmax-Xmin),最大值最小值归一化的特点是一定可以把一列数据归到0到1之间