我需要一些关于 scipy 信任-ncg 最小化方法"trust_radius"的直觉



我试图最小化一个相当复杂和非线性的问题,由于我有分析雅可比和黑森,我想在scipy中使用牛顿共轭梯度最小化。然而,我用scipy.optimize.minimizeNewton-CG方法并没有得到很好的结果,而是开始修改trust-ncg方法。我正在获得更好的结果,所以我想使用这种最小化方法。我的问题是,我真的对"信任半径"是什么没有任何的感觉,所以我只是盲目地为initial_trust_radiusmax_trust_radius参数设置值。

我在scipy文档中看到的关于这种方法的唯一参考是本文,它给出了eta参数的一些直觉,但这是我所能收集到的全部内容。我真的希望有人能提供一些直觉,从实际使用的数据和手头的最小化问题来看,信任区域的大小意味着什么。

谢谢!!

-b

根据_minimize_trust_ncg:的文档字符串

initial_trust_radius : float
Initial trust-region radius.
max_trust_radius : float
Maximum value of the trust-region radius. No steps that are longer
than this value will be proposed.
eta : float
Trust region related acceptance stringency for proposed steps.
gtol : float
Gradient norm must be less than `gtol` before successful
termination.

在另一个函数中,算法内部稍深,几行之后在同一文件中:

Parameters
----------
trust_radius : float
We are allowed to wander only this far away from the origin.
Returns
-------
p : ndarray
The proposed step.
hits_boundary : bool
True if the proposed step is on the boundary of the trust region.
Notes
-----
This is algorithm (7.2) of Nocedal and Wright 2nd edition.
Only the function that computes the Hessian-vector product is required.
The Hessian itself is not required, and the Hessian does
not need to be positive semidefinite.

因此,信任半径似乎是在算法的每次迭代中所研究的区域的大小。如果你对最小化的函数(或数据的频域)的平滑性有所了解,这将非常有用。

我很快就会从我的大学图书馆得到Nocedal and Wright,如果我有更多的见解,我会更新这个问题。

最新更新