我正在使用高斯牛顿法解决非线性最小二乘问题。由于问题的维度很大,我使用了 Hessian-free 方法。作为线性求解器,我使用 MINRES 或 CG。为了加快收敛速度,我开始弄清楚可以轻松添加哪些前置条件。首先,我决定尝试一下Martens 在他的工作中谈到的 Fisher 预处理器:
在我使用的文章中= 0.75,但在我的情况下,它只在 0.25 有效。优化误差开始快速下降,但线性解误差相对于恒等式增加。然后我遇到了Robert Seidl 的一篇有趣的作品 Preconditioning for Hessian-Free Optimization。
在其中,我对 SPAI Preconditioner 感兴趣,其中使用乘法,我们提取出具有最大梯度的元素。首先,我决定提取与梯度最大量级相对应的实对角元素,并使用它们来计算预条件子。保持对角线的其余元素等于 1。
如果我取整个对角线,收敛性很好,只要我将元素数量减少至少 2%,它就会变得比恒等预处理器更差。这很奇怪,我认为向预处理器添加任何信息都不应该使其比身份预处理器更糟。如果我像 Robert Seidl 一样制作 SPAI 预处理器,也会出现类似的情况。对此有何建议?