我想最小化一个非线性函数使用牛顿法。在每个优化步骤,我计算一个下降方向更新使用二阶近似:
所以我需要求解一个线性系统,但是 Hessian 矩阵可能不是肯定的,这可能会给我一个无效的下降方向。我想运行共轭梯度来求解线性系统。在共轭梯度法中,其中一个步骤涉及到这个操作(计算根据 Shewchuk 的笔记,第 50 页https://www.cs.cmu.edu/~quake-papers/painless-conjugate-gradient.pdf,我正在使用而不是因为在我的约定中是要更新的下降方向)。我可以回收这个操作来知道 Hessian 是否不是正定的(如果这样的操作是负的)。
我这样实现了我的算法,所以一旦我检测到该操作是否定的,我就会停止 CG 求解器并返回迭代到该点的解决方案。我实际上已经看到它在实践中运行良好,但我没有严格的理由这样做。我记得听到/读过人们说每次 CG 迭代都会按照“重要性”的顺序处理不同的特征值,因此通过尽早停止,您最终会探索 Hessian 的正定部分。谁能指出我对此的更严格的理由?这是使用 CG 进行非线性优化来强制正定性的有效方法吗?