使 Hessian 半正定

计算科学 优化
2021-12-06 02:28:57

我有一个大问题,我正在使用牛顿法进行优化。这涉及到一个大的稀疏 Hessian 矩阵。为了更好地收敛并且不会过早陷入困境,我想让 Hessian 半正定。我翻阅了一些材料:

谱范数中与对称矩阵最近的半正定矩阵

https://ljk.imag.fr/membres/Jerome.Malick/Talks/11-SIOPT.pdf

https://hal.archives-ouvertes.fr/hal-00574437/file/henrion-malick-revision.pdf

并进行了一些实验,但我没有想出一个实用的解决方案。我想知道是否有人对此事有提示。

编辑:澄清一下,当我投影密集矩阵(使用 Matlab eig)时它工作正常,但对于大型稀疏矩阵,这种方法不实用。

--

我目前的问题是网格相关的,我能够分别处理我的能量中的术语,得到一个本地 6x6 Hessian,我使用特征值分解将其投影到 PSD,a-la

https://www.math.ucla.edu/~jteran/papers/TSIF05.pdf

它工作正常,但我想知道一般问题的解决方案。

--

在这个主题上,我也有(稀疏)线性约束。将它们与 Hessian(拉格朗日乘数样式)结合,得到的 KKT 系统(提取线搜索的方向)变为 [H c; c' 0],即使 H 是 PSD,也可能不是 PSD。对此有什么想法吗?

--

对于代码示例或库,我的首选是 matlab。

1个回答

您将需要查看 Nocedal 和 Wright 的优秀著作“数值优化”中关于“Hessian 修正”方法的章节。

您会发现 Levenberg-Marquardt 方法可能是您正在寻找的方法,因为您无法轻松计算大型稀疏矩阵的特征值。