问题预览/关键词
- 梯度下降不正常工作的曲线是什么样子?
- 如何调试学习率来检测代码中的bug?
- 学习率过小的后果是?
- 如何选择学习率?
笔记
1.曲线错误的样子
曲线没有逐步递减,由于学习率选择过大或代码有bug。
2.调试学习率检测代码
将α设置成一个很小的数,看看每次迭代成本函数是否减小,如果依旧不减小,则代码有问题。
3.学习率过小
梯度下降需要更多次迭代来收敛,影响性能。
4.选择学习率
先尝试0.001,然后乘3倍选择呢0.003,依次尝试,直到曲线变的合适且最大或比最大小一点的α。
总结
学习率不是直接获取的,我们需要尝试不同的数值,通过绘制迭代次数-成本函数曲线,来检测α的值是否合适。如果曲线是波动的,一会上升一会下降,则学习率选择过大。如果曲线持续上升,则代码可能出bug(w参数的更新写成了加法)。我们需要尝试多个数值的学习率,合适的学习率会让曲线持续下降,在这些合适的学习率中选择一个最大的或比最大小一点点的学习率。