1.怎么确保梯度下降算法在正确的工作??
1.1画出J-n曲线
在使用梯度下降算法时,我们会画出
J
(
θ
)
−
n
J(\theta)-n
J(θ)−n曲线,其中,
J
(
θ
)
J(\theta)
J(θ)是代价函数,
n
n
n是迭代次数。当
J
(
θ
)
J(\theta)
J(θ)随着迭代次数的增大而减小的话,我们认为该算法工作正常,反之,则工作不正常。
1.2自动收敛测试
写一个测试函数,假设代价函数 J ( θ ) J(\theta) J(θ)小于某个值时,我们认为工作正常。
- Example:
Declare convergence if J ( θ ) J(\theta) J(θ) decreases by less than 1 0 − 3 10^{-3} 10−3 in one iteration
2.选择合适的学习率
2.1学习率太大会出现的情况
出现上面四种情况,在代码没有错误的情况下,我们认为是
α
\alpha
α选的太大了!
因此,我们有:
- For sufficiently small α \alpha α, J ( θ ) J(\theta) J(θ) should decrease on every iteration.but if α \alpha α is too small ,gradient descent can be slow to converge.(我们应该选择比较小的 α \alpha α,但是如果太小,收敛的会很慢)
- if α \alpha α is too big,it may work incorrently.
2.2如何选择合适的α
可以从小往大试,吴恩达教授建议以三倍的速率增加
欢迎一起交流!!