【问题标题】:How configure Stanford QNMinimizer to get similar results as scipy.optimize.minimize L-BFGS-B如何配置 Stanford QNMinimizer 以获得与 scipy.optimize.minimize L-BFGS-B 相似的结果
【发布时间】:2015-09-07 01:17:47
【问题描述】:

我想配置来自 Stanford Core NLP Lib 的 QN-Minimizer 以获得与 scipy 优化 L-BFGS-B 实现几乎相似的优化结果,或者获得适合大多数情况的标准 L-BFSG 配置。我将标准参数设置如下:

我要复制的python示例:

scipy.optimize.minimize(neuralNetworkCost, input_theta, method = 'L-BFGS-B', jac = True)

我尝试在 Java 中做同样的事情:

QNMinimizer qn = new QNMinimizer(10,true) ;
qn.terminateOnMaxItr(batch_iterations);
//qn.setM(10);
output = qn.minimize(neuralNetworkCost, 1e-5, input,15000);

我需要的是一个可靠且通用的 L-BFSG 配置,它适合解决大多数问题。

我也不确定,是否需要为标准 L-BFGS 配置设置其中一些参数:

useAveImprovement = ?;
useRelativeNorm = ?;
useNumericalZero = ?;
useEvalImprovement = ?; 

提前感谢您的帮助,我是该领域的新手。

信息资源: 斯坦福核心 NLP QNMinimizer: http://nlp.stanford.edu/nlp/javadoc/javanlp-3.5.2/edu/stanford/nlp/optimization/QNMinimizer.html#setM-int- https://github.com/stanfordnlp/CoreNLP/blob/master/src/edu/stanford/nlp/optimization/QNMinimizer.java

Scipy 优化 L-BFGS-B: http://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.minimize.html http://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.optimize.fmin_l_bfgs_b.html

提前致谢!

【问题讨论】:

  • What I need is a solid and general L-BFSG configuration, that is suitable to solve most problems. - 如果有一组参数对几乎所有函数都非常有效,那么这些参数将是默认参数,你不觉得吗?优化任意的非凸函数可能非常困难甚至是不可能的。参数通常很重要,必须针对问题进行调整。
  • 感谢您的回答!我以为会出现这样的事情:-D 但是你认为我的参数等于 scipy 吗?

标签: java optimization machine-learning scipy stanford-nlp


【解决方案1】:

你所拥有的应该没问题。 (你真的遇到过问题吗?)

在最大迭代次数和最大函数评估上都设置终止可能有点过头了,因此您可能会省略 qn.minimize() 的最后一个参数,但从文档中可以看出 scipy 确实使用了默认值 15000。

一般来说,使用robustOptions(使用第二个参数true)应该提供一个可靠的最小化器,类似于scipy 的pgtol 收敛标准。其他选项用于特殊情况或只是试验它们的工作原理。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-19
    • 2015-04-18
    • 1970-01-01
    • 2022-01-06
    • 2011-02-21
    • 2021-07-17
    • 2013-09-29
    • 1970-01-01
    相关资源
    最近更新 更多