课程是 Coursera 上 Andrew Ng 的公开课:Machine Learning
在第二周的课程 Multivariate Linear Regression 中,老师讲了两个梯度下降法的 Tips.
Tips 1: Feature Scaling
如果不同 feature 取值范围比较接近,那么梯度下降法就能让误差函数尽快收敛。
老师建议:大概不超过 $(-3, 3)$,且大概不小于 $(-1/3, 1/3)$,是比较能接受的。
Mean normalization
$$ x_i :=\frac {x_i – u_i} {s_i} $$
其中,$x_i$ 表示第 $i$ 个 feature,$s_i$ 可以是 $x_i$ 的取值范围,也可以是 $x_i$ 的标准差。
Tips 2: Learning Rate
如何才能认为梯度下降法正常工作了?
(i) Debugging gradient descent
可以画出 $J(theta)$ 关于迭代次数的曲线,如果曲线单调下降,并且在一定迭代次数之后下降幅度保持很小,就可以认为它收敛了。
如果随着迭代次数增加,$J(theta)$ 增加,或者增减不定,那么可能是 learning rate $alpha$ 太大了的原因。
(ii) Automatic convergence test
可以进行自动收敛测试。如果每次迭代,$J(theta)$ 的下降值低于一个很小的值,就认为它收敛了。这个值一般可以取如 1e-3 这样的值,但它很难检查出问题,不太靠谱。
老师建议,一般还是画出$J(theta)$ 关于迭代次数的曲线来看。
Learning rate $alpha$ 怎么选?
多试一些 $alpha$ 的值,老师建议是,测试以下一系列 $alpha$:
$$ 0.001, 0.003, 0.01, 0.03, 0.1, 0.3, 1, \cdots $$
从而找出比较合适的 $alpha$。