将梯度下降的学习率 (alpha) 上限设置为 1 的原因

数据挖掘 机器学习 梯度下降 成本函数
2022-03-13 11:52:16

我正在学习用 Python 实现梯度下降算法,遇到了选择正确学习率的问题。

我了解到学习率通常选择为 1(Andrew Ng 的机器学习课程)。但是出于好奇的原因,我尝试了alpha = 1.1and alpha = 1.2成本与迭代

我可以看到,在 的情况下alpha = 1.2,我们比其他学习率更快地达到了较低的成本(仅仅是因为曲线首先触及底部)。可以肯定地说这alpha = 1.2是最优惠的价格吗?

我插入了 theta 值,alpha = 1.2为了预测商品的价格,我实现的函数提供了与 Sklearn 相同的答案,但LinearRegression()迭代次数少于alpha = 1.0
使用较低的阿尔法率会增加迭代次数。

那么,为什么学习率上限为 1?是强制的还是建议的?

我是否应该忘记选择学习率并让功能等功能LinearRegression()在未来自动处理它?

我是机器学习的新手,我想了解算法背后的推理,而不是盲目地调用函数并使用高级库来玩弄参数。
如果我理解错误的概念,请随时纠正我。

1个回答

设置学习率的硬上限,例如 alpha = 1,当然不是强制性的。设置这样的上限也不一定是可取的,因为使用不同的学习率值的优点在很大程度上取决于您执行梯度下降的确切函数、您希望在此过程中实现什么以及采取什么措施您将用它来衡量一个价值选择相对于另一个价值选择的相对成功率。

我认为您提供的信息很好地说明了这个概念。例如,如果您所关心的只是朝着某个您的成本函数的局部最小值,最终为您的模型找到成本低于 0.01 的参数,并且在所有其他条件相同的情况下以尽可能少的迭代次数完成这些任务,我们可以看到在您尝试的值中 alpha = 1.2 确实是最好的值(在您向我们展示的运行中,它以最少的迭代次数达到了 0.01 的成本)。然而,许多人关心他们的梯度下降算法的其他属性。例如,人们可能更喜欢更可能达到最接近初始化参数的局部最小值(如果有的话)的学习率;较低的学习率似乎更适合这个目标,因为较高的学习率更有可能“超过”一个最小值并落在另一个最小值的盆地中。或者人们可能更喜欢一种学习率,它会随着时间的推移产生非常平滑的成本图;较低的学习率似乎也更适合此目标(对于一个轶事示例,您的 alpha = .03 学习曲线看起来最平滑)。

有许多资源和方法可用于选择“理想”的学习率和时间表,我认为值得阅读它们以了解人们通常所做的事情。大多数建议都是启发式的,不能保证在任何特定示例中都有意义。设置 alpha = 1 的上限就是这样一种启发式方法,并且可能是建议的,因为它对许多经验丰富的人很有用。由于许多人已经花费了大量时间来研究这个问题,我认为当一个人第一次使用梯度下降时推迟对该主题的过多思考,而只使用诸如 scikit- 之类的默认值,这不一定是一个坏主意。 learn 的实现,或者接受一些建议,例如永远不要将 alpha 设置为大于 1。不过,就个人而言,