0

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

值序列

4

4 回答 4

1

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

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

于 2013-09-28T02:54:03.300 回答
1

简短的回答是否定的,只要满足以下条件就不可能:

  • 目标函数是可微的(如果您使用任何经典目标,例如对数似然,那么它是正确的)
  • 您正在使用足够小的步长(尽管在大多数情况下,如果您选择太大的步长,您应该观察某个值周围的振荡,而不是一致的递减,但它仍然是可能的步长太大
  • 您的目标函数是迭代无关的(因此它只是训练集的函数,不会随时间变化,尽管它仍然可以测量某些模型的复杂性以添加正则化)
  • 你的实现是正确的——这是最可能的解决方案,要么你以错误的方式计算梯度,要么你的梯度上升算法有一些错误

尽管可能是这种情况,但对于非常复杂的函数,所需的步长不是恒定的。为了确保您的 GA/GD收敛到固定点,您必须选择小于2/L目标函数为L-Lipschitz 函数的步长。

于 2013-09-28T06:28:06.717 回答
0

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

于 2013-09-28T00:04:14.120 回答
0

如果以下成立:

1)目标是凹的

2)目标是微分的

3)步长足够小

4) 这不是任何错误

那么梯度上升应该单调增加。

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

于 2013-09-28T06:24:18.340 回答