梯度下降和梯度上升有啥区别?
Posted
技术标签:
【中文标题】梯度下降和梯度上升有啥区别?【英文标题】:What is the difference between gradient descent and gradient ascent?梯度下降和梯度上升有什么区别? 【发布时间】:2014-04-30 21:42:09 【问题描述】:我无法找到有关梯度上升的任何信息。任何关于梯度上升的好链接都可以证明它与梯度下降有何不同。
【问题讨论】:
梯度下降就像是把一颗弹珠扔进一个形状奇特的碗里,而梯度上升是在一个形状奇特的圆顶帐篷内释放比气球还轻的气球。不同之处仅在于弹珠/气球被轻推的地方,以及它最终停止移动的地方。这是一个用 GNU Octave 编写的梯度下降的工作示例:github.com/schneems/Octave/blob/master/mlclass-ex4/mlclass-ex4/… 梯度下降解决了一个最小化问题。更改符号,使其成为最大化问题,现在您正在使用梯度上升。 梯度下降是一种迭代操作,它创建函数的形状(如曲面)并移动所有输入变量的位置,直到模型收敛到最佳答案。 “梯度”是“描述表面相对于当前点的斜率的所有偏导数的集合”。一个盲人可以爬山,如果他“迈出一步”,直到你再也不能。攻读 CS 和 ML 硕士学位,这将是课程作业。 【参考方案1】:梯度下降用于最小化特定函数,而梯度上升用于最大化函数。
看看http://pandamatak.com/people/anand/771/html/node33.html
【讨论】:
【参考方案2】:gradient ascent是函数的最大化,从而达到更好的优化 用于强化学习 它给出了向上的斜率或增加的图形。
梯度下降是最小化成本函数 用于线性回归 它提供了一个向下或递减的成本函数斜率。
【讨论】:
【参考方案3】:如果你想最小化一个函数,我们使用梯度下降。例如。在深度学习中,我们希望最小化损失函数,因此我们使用梯度下降。
如果你想最大化一个函数,我们使用 Gradient Ascent。例如。在强化学习 - 策略梯度方法中,我们的目标是最大化奖励/预期回报函数,因此我们使用梯度上升。
【讨论】:
【参考方案4】:渐变是斜率的另一个词。图形在 (x,y) 点处的正梯度意味着图形在 (x,y) 点处向上倾斜。另一方面,图在 (x,y) 点的负梯度意味着图在 (x,y) 点向下倾斜。
梯度下降是一种迭代算法,用于找到一组使成本函数值最小化的 theta。因此,梯度上升将产生一组使成本函数值最大化的 theta。
【讨论】:
【参考方案5】:通常,您会使用梯度上升来最大化似然函数,使用梯度下降来最小化成本函数。梯度下降和上升实际上是相同的。让我给你一个具体的例子,使用一个简单的基于梯度的优化友好算法和一个凹/凸似然/成本函数:逻辑回归。
不幸的是,SO 似乎仍然不支持 LaTeX,所以让我发布一些屏幕截图。
你想在逻辑回归中最大化的似然函数是
其中“phi”是简单的 sigmoid 函数
现在,你想要一个用于梯度上升的凹函数,因此取对数:
同样,您可以将其写成它的倒数,以获得可以通过梯度下降最小化的成本函数。
对于对数似然,您可以按如下方式推导并应用梯度上升:
因为你想同时更新所有的权重,我们把它写成
现在,很明显,梯度下降更新与梯度上升更新相同,只是请记住,我们将其表述为“向成本梯度的相反方向迈出一步函数”
希望能回答您的问题!
【讨论】:
我在这里问了一些与此相关的问题:stats.stackexchange.com/questions/261692/…【参考方案6】:没有什么不同。梯度上升只是最大化而不是最小化损失函数的过程。其他一切都完全一样。可以说,某些损失函数的 Ascent 就像是该损失函数的负数的梯度下降。
【讨论】:
基本上,在梯度下降中,您将错误最小化,而在梯度上升中,您将利润最大化以上是关于梯度下降和梯度上升有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章
最小二乘法+牛顿法+拟牛顿法+梯度下降法+梯度上升法+共轭梯度法