Levenberg-Marquardt

Levenberg-Marquardt(LM)はSLAMにおける非線形最小二乗問題を解くための主力ソルバーである。これはGauss-Newtonの減衰版であり、Gauss-Newton(最小値付近で高速)と勾度降下法(最小値から離れていても安全)の間を補間することで、初期化が悪くてもはるかにロバストになる。

Gauss-NewtonからLMへ

コスト F(x)=12e(x)2F(\mathbf{x}) = \tfrac{1}{2}\|\mathbf{e}(\mathbf{x})\|^2 に対し、Gauss-Newtonは残差を e(xk+Δx)e(xk)+JkΔx\mathbf{e}(\mathbf{x}_k + \Delta\mathbf{x}) \approx \mathbf{e}(\mathbf{x}_k) + J_k \Delta\mathbf{x} と線形化し、正規方程式を解く。

(JkTJk)Δx=JkTe(xk)(J_k^T J_k)\,\Delta\mathbf{x} = -J_k^T \mathbf{e}(\mathbf{x}_k)

これは、線形化が良い近似でない場合や JkTJkJ_k^T J_k が(ほぼ)特異である場合に発散しうる。LMは減衰項(damping term) λI\lambda I を追加する。

(JkTJk+λI)Δx=JkTe(xk)(J_k^T J_k + \lambda I)\,\Delta\mathbf{x} = -J_k^T \mathbf{e}(\mathbf{x}_k)

ここで、

2つの極限がこの挙動を説明する。

Marquardtの改良では、減衰を各座標の曲率でスケーリングし、λI\lambda Iλdiag(JkTJk)\lambda\,\mathrm{diag}(J_k^T J_k) に置き換える。これにより、弱く制約された方向がより強く減衰され、手法がパラメータごとの再スケーリングに対して不変になる。

減衰の適応

λ\lambda は、ステップが実際に有効だったかどうかに基づいて毎反復で調整される。

  1. 現在の λ\lambdaΔx\Delta\mathbf{x} を解く。
  2. xk+Δx\mathbf{x}_k + \Delta\mathbf{x} における真のコストを評価する。
  3. コストが減少した場合: ステップを受理し、λ\lambda減少させる(線形化をより信頼する)。
  4. コストが増加した場合: ステップを棄却し、λ\lambda増加させる(より勾度降下法に近い小さなステップを取る)、そして再度解く。

よく用いられる改良として、実際のコスト減少量を線形化モデルによって予測された減少量と比較する(ゲイン比率、gain ratio)。比率が1に近い場合、局所的な二次モデルは信頼でき、λ\lambda を積極的に縮小してよい。比率が小さい、あるいは負の場合、モデルは不良であり λ\lambda を増加させなければならない。これはまさに**トラストリージョン法(trust-region method)**の論理である——LMは、xk\mathbf{x}_k の周りに線形化が信頼される領域を暗黙的に維持していると読むことができ、λ\lambda はその領域の半径に反比例する。

SLAM問題における実践的な注意点

SLAMにおける意義

現代のSLAMパイプラインにおけるほぼすべての最適化——バンドル調整、ポーズグラフ最適化、PnP精緻化、カメラキャリブレーション——はLMで解かれる。SLAM問題は高度に非線形であり(投影、回転多様体)、初期化はしばしば平凡である(動きモデルによる予測、ノイズの多い三角測量)ため、純粋なGauss-Newtonステップは頻繁にオーバーシュートする。LMの自動減衰こそが、これらのソルバーがフレームごとに手動チューニングなしに安定して収束する理由であり、これが数十年にわたってSLAMバックエンドのデフォルトであった理由である。

関連ノート