1.梯度下降算法的几点优化:
梯度下降算法在实际应用时,可以关注某些特征来确保它正常工作,使它更快速地收敛。
(1)特征缩放(Feature Scaling):
假设现有两个特征值 x1
x2
, 在训练集中,x1
的范围为(-1000,1000)
,而x2
的范围为(-1,1)
,那么可以预想到误差函数J(θ)
的轮廓一定是非常细长的图形,而收敛的步伐也会增加很多。总之,这样的数据会导致J(θ)
收敛地较为缓慢,从而增加了运行的开支。
若将x1
重新定义为 x1/1000
(这里的x1
范围还是(-1000,1000)
),那么新得到的x1
就具有和x2
相似的取值范围,而此时的J(θ)
的轮廓也就更加接近圆形,这样应该可以更快地收敛,从而减少运行的开支。
若一个回归问题中包含多个特征值,而这些特征值可能具有相差很大的取值范围,那么合理地进行缩放可以在一定程度上加快 J(θ)
收敛的速度。
(2)学习速率α
的取值:
在我创作我的上一篇博客时,我就深深感到了学习速率α
的重要性。α
过大,可能会导致发散,而α
过小又会导致消耗的增加。然而对于不同的数据,α
是大是小的界定也不尽相同,还是应当首先选取一个较小