梯度下降和梯度上升有什么区别?

26

我找不到任何关于梯度上升的资料。有没有好的链接可以演示梯度上升与梯度下降的区别。


梯度下降就像把一个弹珠滚入一个奇形怪状的碗里,而梯度上升则是在一个奇形怪状的圆顶帐篷内释放一个比空气轻的气球。两者的区别仅在于弹珠/气球被推动的位置以及它最终停止移动的位置。这里有一个使用GNU Octave编写的梯度下降的工作示例:https://github.com/schneems/Octave/blob/master/mlclass-ex4/mlclass-ex4/fmincg.m - Eric Leschinski
梯度下降解决最小化问题。改变符号,使其成为最大化问题,现在您正在使用梯度上升。 - duffymo
梯度下降是一种迭代操作,它创建函数的形状(如表面)并移动所有输入变量的位置,直到模型收敛于最佳答案。 "梯度"是"描述当前点相对于表面斜率的所有偏导数的集合"。如果盲人“一步一步向上爬”,直到无法再爬为止,他也可以攀登山峰。追求计算机科学和机器学习的硕士学位,这将是课程作业。 - Eric Leschinski
6个回答

30

并没有什么不同。梯度上升只是最大化损失函数,而不是最小化它的过程。其他所有内容完全相同。对于某些损失函数来说,上升就像是在该损失函数的负数上进行梯度下降。


7
基本上,在梯度下降中,您正在最小化误差,而在梯度上升中,您正在最大化利润。 - Kiril Stanoev
这里的“profit”是什么意思? - tbhaxor

24
通常,您会使用梯度上升来最大化似然函数,并使用梯度下降来最小化成本函数。梯度下降和梯度上升实际上是相同的。让我给您举一个具体的例子,使用一个简单的基于梯度的优化友好算法和一个凸/凹似然/成本函数:逻辑回归。
不幸的是,SO仍然不支持LaTeX,所以让我发布一些屏幕截图。
在逻辑回归中,您要最大化的似然函数是

enter image description here

其中,“phi”只是Sigmoid函数

enter image description here

现在,你想要一个凸函数来进行梯度上升,因此取对数:

enter image description here

同样地,您可以将其写成其反函数形式,以获得成本函数,然后通过梯度下降进行最小化。

enter image description here

对于对数似然,您可以按以下方式导出并应用梯度上升:

enter image description here

enter image description here

由于您希望同时更新所有权重,因此让我们将其编写为

enter image description here

现在,很明显可以看出梯度下降更新与梯度上升更新是相同的,只需记住我们将其表述为“朝着成本函数梯度相反的方向迈出一步”。

enter image description here

希望这回答了你的问题!

我在这里询问了相关的问题:http://stats.stackexchange.com/questions/261692/gradient-descent-for-logistic-regression-with-or-without-f-prime - VansFannel

8

4

梯度上升是为了更好的优化而最大化函数,在强化学习中使用。它给出了上升斜率或增加的图形。

梯度下降是为了最小化代价函数,在线性回归中使用。它提供了代价函数的下降或减少的斜率。


3
如果你想要最小化一个函数,我们使用梯度下降法。例如在深度学习中,我们想要最小化损失函数,因此使用梯度下降法。
如果你想要最大化一个函数,我们使用梯度上升法。例如在强化学习的策略梯度方法中,我们的目标是最大化奖励/期望回报函数,因此使用梯度上升法。

0

Gradient是斜率的另一个词。在点(x,y)处的图形的正梯度意味着图形在点(x,y)处向上倾斜。另一方面,在点(x,y)处的图形的负梯度意味着图形在点(x,y)处向下倾斜。

梯度下降是一种迭代算法,用于找到最小化成本函数值的一组theta。因此,梯度上升将产生一组theta,其最大化成本函数的值。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接