非線形最小二乗法

Author: Shun Suzuki

Date: 2024-01-09


件の行列方程式を次の非線形最小二乗問題として解く方法もある, ここでのパラメータはの位相とである. 反復的に上式を最小化していく方法がいくつか知られている.

Levenberg-Marquardt (LM) 法

ここでは, LM (Levenberg-Marquardt) 法 1 2を紹介する. LM法を用いた例としては 3 4などがある.

後のため, 推定すべきパラメータ と置き, 最適化問題を と書く. ここでベクトルに対して を意味する. まず, は複素関数であることに注意する. LM法を適用できるようにするため, 実部と虚部に分けると, となる. ここで, はそれぞれの実部と虚部を表す. とおくと, は実関数であり となるので, LM法が適用できる.

この時, のJacobian から, となる. このを用いて, LM法では, 以下の更新式に従いパラメータを更新する. の決め方にはいくつかのバリエーションが知られている. 例えば, 文献5を参照.

ここで, 計算量を削減するため, をあらかじめ計算しておこう. であるが, であるから, 結局, (はHermite行列なので, 一部省略した. 以下同様.)

ここで, 列ベクトルに対して, であり, したがって, となる. なお, のHadamard積を意味する. ここで, と定義すると, となり, と計算できる.

次に, を計算しよう. ここで, なので, となる. ここで, 列ベクトルに対して, である. したがって, は, の各行を最初の列分だけ足したものに等しい. したがって, ここで, は, の各行を最初の列分だけ足し合わせて得られる列ベクトルである.

なお実際にこのLM法を実装してみるとわかるが, 実は という風に, 振動子の出力を(一律に)固定してしまうほうが, 再現性の意味でも, 計算量の意味でも性能がいい6. このときは, 例えば, パラメータはとして, を計算すれば良い.

勾配降下法とGauss-Newton法

なお, 更新式を としたものはGauss-Newton法と呼ばれ, としたものは勾配降下法 (Gradient-Descent), あるいは, 最急降下法 (Steepest-Descent) と呼ばれる. LM法はこれらの間の子である.

1

Levenberg, Kenneth. “A method for the solution of certain non-linear problems in least squares.” Quarterly of applied mathematics 2.2 (1944): 164-168.

2

Marquardt, Donald W. “An algorithm for least-squares estimation of nonlinear parameters.” Journal of the society for Industrial and Applied Mathematics 11.2 (1963): 431-441.

3

Sakiyama, Emiri, et al. “Midair tactile reproduction of real objects.” International Conference on Human Haptic Sensing and Touch Enabled Computer Applications. Cham: Springer International Publishing, 2020.

4

Matsubayashi, Atsushi, Yasutoshi Makino, and Hiroyuki Shinoda. “Rendering ultrasound pressure distribution on hand surface in real-time.” Haptics: Science, Technology, Applications: 12th International Conference, EuroHaptics 2020, Leiden, The Netherlands, September 6–9, 2020, Proceedings 12. Springer International Publishing, 2020.

5

Madsen, Kaj & Nielsen, Hans & Tingleff, O., “Methods for Non-Linear Least Squares Problems (2nd ed.),” 60, 2004.

6

詳しいことはまだわかっていないが, 出力に対する制約が入っていないことが原因と考えられる.