Machine learning 梯度上升收敛

Machine learning 梯度上升收敛,machine-learning,gradient,newtons-method,gradient-descent,Machine Learning,Gradient,Newtons Method,Gradient Descent,我试图通过梯度上升程序使目标函数的对数最大化。我观察到一个目标值序列,其中值先增加,然后又开始减少。我想知道这是否有可能?我的意思是,是否存在这样的函数,其上升过程通过极大值,然后产生递减值路径。以下是目标值序列的链接 如果你的目标函数是确定性的,那么如果选择了适当的小步长,并且你没有达到最大值,那么梯度上升应该总是在每一步中增加你的目标函数。从您的输出来看,您的渐变实现似乎不正确尝试使用数值梯度。计算速度较慢,但出错的几率较低。回答一般问题:当然。如果你的函数是不可微的,就不能保证跟随梯度会增

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


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

回答一般问题:当然。如果你的函数是不可微的,就不能保证跟随梯度会增加函数值。例如,考虑一个函数,如-ABS(x)。< /P>
也就是说,除非你认为你的函数可能不可微,否则我怀疑Memming是正确的,因为你的下降/上升实现中存在一些错误,特别是考虑到迭代在多个迭代中发散的方式。

如果以下情况成立:

1) 物镜是凹的

2) 目标是不同的

3) 步长足够小

4) 这不是什么错误

然后梯度上升应该单调增加


如果1+2+4保持不变,也许可以尝试回溯行搜索来设置步长。

简短的回答是,只要以下条件保持不变,则不可能:

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

尽管可能是这样,但对于非常复杂的函数,所需的步长不是恒定的。为了确保GA/GD,您必须选择比目标函数为L-Lipschitz函数时的
2/L
更小的步长。

凹面=/>微分!以-| x |为例。的确,单调性不需要凹性,我已经跳到了一个全局最大值(这通常是目标)