scipy.optimize.fmin_l_bfgs_b返回 'ABNORMAL_TERMINATION_IN_LNSRCH'

问题描述 投票:15回答:3

我使用scipy.optimize.fmin_l_bfgs_b解决高斯混合问题。混合分布的装置是由回归它们的权重必须使用EM算法来优化建模。

sigma_sp_new, func_val, info_dict = fmin_l_bfgs_b(func_to_minimize, self.sigma_vector[si][pj], 
                       args=(self.w_vectors[si][pj], Y, X, E_step_results[si][pj]),
                       approx_grad=True, bounds=[(1e-8, 0.5)], factr=1e02, pgtol=1e-05, epsilon=1e-08)

但有时我得到的信息字典警告“ABNORMAL_TERMINATION_IN_LNSRCH”:

func_to_minimize value = 1.14462324063e-07
information dictionary: {'task': b'ABNORMAL_TERMINATION_IN_LNSRCH', 'funcalls': 147, 'grad': array([  1.77635684e-05,   2.87769808e-05,   3.51718654e-05,
         6.75015599e-06,  -4.97379915e-06,  -1.06581410e-06]), 'nit': 0, 'warnflag': 2}

RUNNING THE L-BFGS-B CODE

           * * *

Machine precision = 2.220D-16
 N =            6     M =           10
 This problem is unconstrained.

At X0         0 variables are exactly at the bounds

At iterate    0    f=  1.14462D-07    |proj g|=  3.51719D-05

           * * *

Tit   = total number of iterations
Tnf   = total number of function evaluations
Tnint = total number of segments explored during Cauchy searches
Skip  = number of BFGS updates skipped
Nact  = number of active bounds at final generalized Cauchy point
Projg = norm of the final projected gradient
F     = final function value

           * * *

   N    Tit     Tnf  Tnint  Skip  Nact     Projg        F
    6      1     21      1     0     0   3.517D-05   1.145D-07
  F =  1.144619474757747E-007

ABNORMAL_TERMINATION_IN_LNSRCH                              

 Line search cannot locate an adequate point after 20 function
  and gradient evaluations.  Previous x, f and g restored.
 Possible causes: 1 error in function or gradient evaluation;
                  2 rounding error dominate computation.

 Cauchy                time 0.000E+00 seconds.
 Subspace minimization time 0.000E+00 seconds.
 Line search           time 0.000E+00 seconds.

 Total User time 0.000E+00 seconds.

我没有得到这个警告每一次,但有时。 (大多数得到 '收敛:NORM_OF_PROJECTED_GRADIENT _ <= _ PGTOL' 或 '收敛:REL_REDUCTION_OF_F _ <= _ * FACTR EPSMCH')。

我知道,这意味着最低可在此迭代达成。我GOOGLE了这个问题。有人说因为客观和梯度功能不匹配,其发生频繁。但是在这里,因为我使用“approx_grad”我不提供梯度功能。

可能是什么原因,我应该调查?这是什么的“舍入误差主宰计算”是什么意思?

======

我还发现,对数似然并不单调增加:

########## Convergence !!! ##########
log_likelihood_history: [-28659.725891322563, 220.49993177669558, 291.3513633060345, 267.47745327823907, 265.31567762171181, 265.07311121000367, 265.04217683341682]

它通常开始在第二次或第三次迭代减少,甚至通过“ABNORMAL_TERMINATION_IN_LNSRCH”不发生。我不知道这个问题是否是涉及到前一个。

optimization machine-learning statistics normal-distribution gradient-descent
3个回答
51
投票

SciPy的调用原来​​的L-BFGS-B的实施。这是一些FORTRAN77(老,但美丽和超快的代码),我们的问题是下降方向实际上是往上走。这个问题在网上开始2533(链接到代码底部)

gd = ddot(n,g,1,d,1)
  if (ifun .eq. 0) then
     gdold=gd
     if (gd .ge. zero) then
c                               the directional derivative >=0.
c                               Line search is impossible.
        if (iprint .ge. 0) then
            write(0,*)' ascent direction in projection gd = ', gd
        endif
        info = -4
        return
     endif
  endif

换句话说,你告诉它通过去上山下山。该代码尝试一种叫做共20次网上搜索中您提供并实现了,你是不是告诉它去下坡,上坡,但下降方向。所有的20倍。

谁写的这家伙(豪尔赫Nocedal,谁的方式是一个非常聪明的家伙)把20,因为几乎这就足够了。机器精度是10E-16,我认为20其实是一点也不为过。所以,我对有这个问题大多数人的钱是你的渐变不符合您的功能。

现在,它也有可能是“2舍入误差主宰计算”。由此,他的意思是你的函数是一个非常平坦的表面,其中增加是机器最小的顺序(在这种情况下,你也许可以重新调整功能),现在,我thiking,也许应该有第三个选择,当你的功能实在是太怪异。振荡?我可以看到类似$ \罪({\压裂{1} {X}})$导致这样那样的问题。但我不是个聪明的家伙,所以不要认为还有第三种情况。

所以我觉得OP的解决方案应该是你的功能实在是太平坦。还是看Fortran代码。

https://github.com/scipy/scipy/blob/master/scipy/optimize/lbfgsb/lbfgsb.f

下面是对于那些谁希望看到它线搜索。 https://en.wikipedia.org/wiki/Line_search

注意。这7个月为时已晚。我把它放在这里为未来的缘故。


1
投票

作为由威尔默E. Henao回答指出,问题可能出在梯度。由于您使用approx_grad=True,梯度是数值计算。在这种情况下,减少epsilon的值,其是用于数值计算梯度的步长大小,可以提供帮助。


1
投票

我也得到了错误“ABNORMAL_TERMINATION_IN_LNSRCH”使用L-BFGS-B优化。

虽然我的梯度功能在正确的方向,我通过它的L2范数重新调整功能的实际梯度。去除或添加其他适当类型的缩放的工作。之前,我猜测,梯度如此之大,它会立即界的走了出去。

从OP问题是无界的,如果我正确读取,因此这将肯定不会在这个问题上设置帮助。然而,谷歌搜索错误“ABNORMAL_TERMINATION_IN_LNSRCH”产生此页面的第一批成果之一,所以它可能会帮助别人...

© www.soinside.com 2019 - 2024. All rights reserved.