渐变上升收敛

时间:2013-09-27 20:21:21

标签: machine-learning gradient newtons-method gradient-descent

我试图通过渐变上升程序最大化目标函数的日志。我正在观察一个客观值序列,其中值首先增加然后再次开始减少。我想知道这是否可能?我的意思是说,这些函数是否存在,其上升过程通过最大值然后产生递减值路径。以下是目标值序列的链接。

Value Sequence

4 个答案:

答案 0 :(得分:1)

回答一般性问题:当然。如果您的函数不可微分,则无法保证跟随渐变会增加函数值。例如考虑像-abs(x)这样的函数。

那就是说,除非你认为你的函数可能不是可微分的,否则我怀疑Memming是正确的,因为你的下降/上升实现有一些错误,特别是考虑到迭代在多次迭代中的分歧。

答案 1 :(得分:1)

简短回答是,只要满足以下条件,就无法做到:

  • 目标函数是不同的(如果你使用任何经典目标,如log-likelihood,那么它是真的)
  • 你使用足够小的步长(尽管在大多数情况下,如果选择太大的步骤,你应该观察一些值附近的振荡,而不是一致的衰减,但它仍然可能){{ 0}}
  • 你的目标函数是迭代 - 无关的(因此它只是训练集的一个函数,并且在时间上不会改变,尽管它仍然可以测量一些模型的复杂性来添加正则化)。
  • 您的实现是正确的 - 这是最可能的解决方案,要么以错误的方式计算渐变,要么您的渐变上升算法有一些错误

虽然可能是这种情况,但对于非常复杂的功能,所需的步长不是常数。为了确保您的GA / GD converges to stationary point,您必须选择小于2/L的步长,其目标函数是 L-Lipschitz函数

答案 2 :(得分:0)

如果您的目标函数是确定性的,如果选择了适当小的步长,并且您没有达到最大值,则渐变上升应始终在每个步骤中增加目标函数。从您的输出,您的渐变实现似乎是不正确的。 尝试使用数值渐变。计算速度较慢,但​​出错的几率较低。

答案 3 :(得分:0)

如果符合以下条件:

1)目标是凹的

2)目标是差异

3)步长足够小

4)这不是任何错误

然后渐变上升应该单调增加。

如果1 + 2 + 4成立,可以尝试回溯线搜索来设置步长。