使用梯度下降优化模型
我们了解了成本函数如何使用数据评估模型的表现。 优化器是训练过程的最后一个部分。
优化器的作用是通过改进模型性能的方式来对其进行修改。 通过检查模型输出和成本,并为模型推荐新参数实现这种变化。
例如,在农场场景中,线性模型有两个参数:直线截距和直线斜率。 如果直线的截距错误,则该模型会低估或高估平均温度。 如果斜率设置错误,则模型无法很好地演示自 20 世纪 50 年代以来温度发生了怎样的变化。 优化器会更改这两个参数,使它们能够对一段时间内的温度进行最优建模。
梯度下降
目前最常见的优化算法是梯度下降。 这种算法存在多种形式,但它们都使用相同的核心概念。
梯度下降使用微积分来估算更改各个参数会使成本发生什么变化。 例如,增加一个参数预计会使成本降低。
之所以称作梯度下降,是因为它可以计算每个模型参数与成本之间的关系梯度(斜率)。 然后更改参数,让其沿这个斜坡下移。
此算法简单且功能强大,但不能保证找到可最大程度降低成本的最佳模型参数。 误差的两个主要来源是局部最小值和不稳定性。
局部最小值
假设参数小于 0 或大于 10 时成本会持续增加,则上一个示例看起来效果不错:
如果参数小于 0 或大于 10 将导致成本较低,则表现就不太好,如下图所示:
在前面的图中,相比参数值 5,-7 是更好的解决方案,因为它的成本更低。 梯度下降事先并不知道每个参数与成本(用虚线表示)之间的完整关系。 所以很容易找到局部最小值:参数估计值不是最佳解决方案,但梯度为零。
不稳定性
一个相关问题是梯度下降有时显示不稳定性。 当步长(即学习速率)(每次迭代对每个参数调整的量)太大时,通常就会发生这种不稳定的情况。 然后,参数在每一步中被调整得太多,模型实际上会随着每次迭代而变差:
放慢学习速率可以解决此问题,但也可能引发问题。 首先,学习速率变慢可能意味着训练需要很长时间,因为需要更多步数。 其次,采用较小步长更可能让训练停留在局部最小值:
相比之下,加快学习速率可以更容易避免达到局部最小值,因为较大的步长可以跳过局部最大值:
我们将在下个练习中看到,每个问题都有一个最佳步长。 找到最佳步长通常需要试验。