====== ガウス・ニュートン法 ====== 非線形多変数関数$\boldsymbol{f}(\boldsymbol{x})$の最小二乗解を求める. すなわち $$ \boldsymbol{x} = \underset{\boldsymbol{x}}{\operatorname{argmin}} \|\boldsymbol{f}(\boldsymbol{x})\| $$ となる$\boldsymbol{x}$を求める. ガウス・ニュートン法は, $\boldsymbol{f}(\boldsymbol{x}) = \boldsymbol{0}$となる$\boldsymbol{x}$を求める [[articles:newton_raphson|ニュートン・ラフソン法]]の拡張になっている ((この部分は大局的な理解のためのかなり大雑把な説明になっている)). 手順は以下の通り. (1) まず$\boldsymbol{f}(\boldsymbol{x}_0)$が十分に小さい$\boldsymbol{x}_0$を初期解として選ぶ. (2) 近似的に $$ \boldsymbol{f}(\boldsymbol{x}) = \boldsymbol{f}(\boldsymbol{x}_i) + J(\boldsymbol{x}-\boldsymbol{x}_i) = \boldsymbol{0} \tag{1} $$ として,これを解いて $$ \boldsymbol{x}_{i+1} = \boldsymbol{x}_i - J^+\boldsymbol{f}(\boldsymbol{x}_i) \tag{2} $$ とする. ここで$J$はヤコビ行列であり,$J^{+}$はその擬似逆行列. (3) $\boldsymbol{x}$や$\boldsymbol{f}(\boldsymbol{x})$の変化が十分に小さく収束していると判断されれば終了. $\boldsymbol{x}_{i+1}$を解とする. そうでなければ$\boldsymbol{x}_{i+1}$を新たな初期解として(2)を繰り返す. ===== ニュートン・ラフソン法との比較 ===== $\boldsymbol{f}$の次元を$m$,$\boldsymbol{x}$の次元を$n$,$J$のランクを$r$としたとき, [[articles:newton_raphson|ニュートン・ラフソン法]]では,$J$の逆行列$J^{-1}$が存在する, つまり$J$が正則であり,$m=n=r$でなくてはならなかった. 一方,ガウス・ニュートン法では$J$の擬似逆行列$J^{+}$を用いているのでその制約がない (($m=n=r$の場合は$J^{-1}=J^+$となる.)). ガウス・ニュートン法は多数の計測値からシステムの未知パラメタを推定する問題にがよく用いられる. たとえば一回の計測で$v_i$ が得られたとする.それを未知パラメタ$\boldsymbol{x}$を含む 関数で以下のように表現できるとする.ここで$\boldsymbol{u}_i$は既知のパラメタである ((多項式フィッティングの場合は,$y_i=f(\boldsymbol{x}_i ,\, \boldsymbol{a})$で, 未知パラメタは$x$の多項式の係数$\boldsymbol{a}$になる.\\ ただ,その場合$\boldsymbol{a}$に関して線形方程式になるのでヤコビ行列や繰り返しなしで解けてしまう.)). $$ v_i = g_i(\boldsymbol{u_i} ,\, \boldsymbol{x}) $$ これを $$ f_i(\boldsymbol{x})=g_i(\boldsymbol{u_i} ,\, \boldsymbol{x}) - v_i = 0 $$ として,$m$回の計測を連立させてガウス・ニュートン法を適用することで $\boldsymbol{v}$に最小二乗フィッティングしたパラメタ$\boldsymbol{x}$が得られる. このような問題の場合は$m>n=r$となることが多い. ロボットアームの逆運動学を求める場合には, 位置や姿勢への拘束条件$m$,関節の自由度$n$として, * 拘束条件と関節自由度が一致している場合は,$m=n\ge r$ * 条件が過剰な場合は,$m>n\ge r$ * 自由度が過剰(冗長自由度)の場合は,$n>m\ge r$ となっている.$r$の不等号部分は特異姿勢などによるヤコビ行列のランク落ちの場合である. ガウス・ニュートン法を用いることで上記のいずれの場合にも望ましい解を得ることができる (($J$の逆行列を求めるときに$J^+=(J^TJ)^{-1}J^T$とするのではなく[[articles:svd|特異値分解]]を 利用して正しく求めなくてはいけない.)). 解の収束性に関してはニュートン・ラフソン法で述べた注意点が同様に当てはまる ((解の周りでの非線形性が大きいと局所解にも収束しない場合もある. この辺はニュートン・ラフソン法以上に注意すべき点となる)). この収束性を改善した手法としては Levenberg-Marquardt法が有名である. ===== 最小二乗である理由 ===== ガウス・ニュートン法で得られた解が最小二乗解になっていることは式(1)を式(2)のように疑似逆行列を用いて解いていることに依存している. 線形代数では $\boldsymbol{b}$を$m$次元ベクトル,$\boldsymbol{x}$を$n$次元ベクトル,$A$を$m \times n$の行列,$m \ge n$とする 線形連立方程式 $$ \boldsymbol{b} = A\boldsymbol{x} \tag{3} $$ が与えられたとき,これを $$ \boldsymbol{x} = A^+ \boldsymbol{b} \tag{4} $$ と擬似逆行列を用いて解くと,この$\boldsymbol{x}$が $$ \| \boldsymbol{b} - A\boldsymbol{x} \| \tag{5} $$ を最小化することはよく知られている ((これについては[[articles:svd|特異値分解]]の項目でもう少し詳しく説明する.)). すなわち式(2)の$\boldsymbol{x}_{i+1}$が $$ \| \boldsymbol{f}(\boldsymbol{x}_{i+1}) \| = \| \boldsymbol{f}(\boldsymbol{x}_i) + J(\boldsymbol{x}_{i+1} - \boldsymbol{x}_i) \| $$ を局所的に最小化しているので,それが収束したものも局所的に最小になっている. ===== 重み付き最小二乗法 ===== ガウス・ニュートン法に限らず,線形連立方程式を擬似逆行列を用いて解くことで式(5)の残差を最小化するが, $\boldsymbol{b}$の成分を平等に扱って良いのだろうか. たとえばある成分はもともと誤差が多いことがわかっていて信頼性にかけることがあるかもしれない. そういう場合は各要素を誤差の標準偏差で正規化してやる必要がある. またロボットなどで座標系の誤差を位置の差(距離)と姿勢の差(角度)で表した場合のように, もともと単位系が異なるもの同士を結合して最小化する場合にはその調整を行う必要がある. さらに場合によっては,ある成分を他の成分よりより正確に調整する必要がある, 逆にある成分の影響をできるだけ小さく場合によっては無視したいといった要求に応じる必要がある. このような場合,$\boldsymbol{b}$の成分ごとに重み付けする必要がある. これは式(3)の線形連立方程式の$\boldsymbol{b}$の各成分に対応する式に重みを乗じることで実現できる. すなわち, $$ D\boldsymbol{b} = DA\boldsymbol{x} $$ ここで $$ D=\operatorname{diag}(d_1,d_2,\cdots,d_m) $$ である.重み$d_i$が大きいほど$b_i$の残差を小さくできる. 逆に重みを$0$にしてしまえばその要素はないものとして扱われることになる. これを改めて $$ \boldsymbol{x} = (DA)^+D\boldsymbol{b} \tag{6} $$ と解くことで $$ \| D\boldsymbol{b} - DA\boldsymbol{x} \| = \| D (\boldsymbol{b} - A\boldsymbol{x}) \| $$ を最小化することができる. ==== ちょっとした注意 ==== 式(6)を見て「おや?」と思った方もいるのではないだろうか((少なくとも私はそう思ったこともある)). もし $$ (DA)^+ = A^+D^+ \tag{7} $$ ならば,とりわけ$D$の要素が$0$でなければ, $$ D^+=D^{-1} = \operatorname{diag}(1/d_1, 1/d_2 , \cdots , 1/d_m) $$ であり,結局,式(6)は式(4)と同じになり,重みなしの場合と同じ$\boldsymbol{x}$が答えになる. これは,$n \ge m = r$の場合はそのとおりなのである. この場合,残差を$0$とすることができるので答えは同じになる. しかし,そうでない場合,$m>n\ge r$の場合は式(7)は成り立たない ((これは$(DA)(A^+D^{-1})$が対称行列にならないことから分かる.擬似逆行列の他の3つの条件は満たしているのだが,,.)). いずれにしても$(DA)^+$を改めて正しく求め式(6)を計算することで重み付き最小二乗が実現できる.