梯度下降——寻找那个最优解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了梯度下降——寻找那个最优解相关的知识,希望对你有一定的参考价值。

参考技术A

在机器学习中,我们面对一个实际问题,收集了数据,建立了模型。接下来,就需要求解模型。即我们要取怎样的参数,才能使模型完成尽可能准确的预测呢?

在求解机器学习算法的模型参数,即无约束优化问题时,我们最常用的方法之一,便是 梯度下降法

如果坐标系内有两个点,此时,我们需要寻找一条直线将使得这两点损失最小。
这个问题非常容易。因为一条直线是可以覆盖两个点的,我们可以计算出:

这很容易,那么如果有三个点,情况会怎么样呢?

虽然我们还是能一眼看出,哪条线更符合我们的要求,但要求解它,已经不那么容易了。
如果有成千上万个点呢?

在机器学习的场景中,我们的数据是海量的。我们如何在海量数据中找到那一组损失最小,我们最需要的模型参数。这就是 梯度下降 带给我们的意义。

这是梯度下降法的在维基百科上的定义。我们应该如何理解呢?

可以想象一个情景。我们站在半山腰,需要最快的下山。这个山腰的高度就是模型任意参数时的损失值,山底就是损失值最小的点。而此时四周又有大雾,我们该如何下山呢?梯度下降法的思路就是,我们会以一步为限,寻找四周,我这一步能下降最多的方向,迈出这一步。然后再寻找能下降最多的方向,再迈出一步,经过不懈努力就能下山了。

对照上面的例子,因为我们无法计算出最佳参数是什么,所以我们需要进行反复试验摸索。每一步的距离,即为 步长 。下降最多的方向,即为损失函数对各方向上的 偏导 。山底就是我们使用梯度下降法,寻找到的最优解,即损失函数的极小值。

结合我们一开始的例子,假设我们需要用一条直接去覆盖很多的点。我们会这样定义一个损失函数:

式中,h函数即为我们的kx+b。
因为我们要寻找它下降最快的方向。我们会对其求偏导。

根据求出的偏导,不断更新theta:

这个方法就叫做: 批量梯度下降法

上面的迭代方法,虽然能帮助我们找到全局极小值。但是,在实际计算中,也会有相当的困难。每一次迭代,我们都需要对m项进行求和。如果m非常大,这个计算将会变得相当困难。

为了解决这样的困难,我们找到了一个新方法: 随机梯度下降法

如果我们的迭代只使用一个样本,会发生什么情况呢?

整个过程似乎会变得不可控了,因为随着样本的随机性。我们的梯度下降的方向,可能会产生一些随机因素。但如果样本数量足够大,当我们经历其中一部分样本后,我们就已经能到达最优解了。
相比于批量梯度下降,两者的关系可以这样理解:随机梯度下降方法以损失很小的一部分精确度和增加一定数量的迭代次数为代价,换取了总体的优化效率的提升。增加的迭代次数远远小于样本的数量。

所以对比两种方式:

以上就是梯度下降的基本知识。如有问题,欢迎指正。

以上是关于梯度下降——寻找那个最优解的主要内容,如果未能解决你的问题,请参考以下文章

梯度下降

梯度下降法是啥?

梯度下降(Gradient Descent)

李沐文章引热议!用随机梯度下降优化人生最优解是啥?

求解方法之梯度下降法

最速梯度下降