数学アルゴリズム
ガウス・ニュートン法を使用して、 グリッドポイントでの 残差の二乗和を最小化することにより、 パラメータを 持つ非対称ピークモデルによるノイズの多い曲線のフィッティング 。上: 生データとモデル。 下: 正規化された誤差の二乗和の変化。
ふ
β
(
x
)
{\displaystyle f_{\beta }(x)}
β
{\displaystyle \beta}
r
私
(
β
)
=
ええ
私
−
ふ
β
(
x
私
)
{\displaystyle r_{i}(\beta )=y_{i}-f_{\beta }(x_{i})}
x
私
{\displaystyle x_{i}}
ガウス ・ニュートン法は、 非線形最小二乗 問題を解くために使用され 、これは二乗関数値の合計を最小化することと同等です。これは、非線形 関数 の 最小値 を見つけるための ニュートン法 の拡張です。二乗和は非負でなければならないため、このアルゴリズムは、ニュートン法を使用して和の成分の ゼロを 反復的に近似し、和を最小化するものと見なすことができます。この意味で、このアルゴリズムは、過剰決定方程式を解くための効果的な方法でもあります。計算が難しい場合がある2次導関数が必要ないという利点があります。 [1]
非線形最小二乗問題は、例えば、 モデルが利用可能な観測値とよく一致するようにモデル内のパラメータが求められる
非線形回帰で発生します。
この方法は数学者のカール フリードリッヒ ガウス と アイザック ニュートン にちなんで名付けられ 、ガウスの 1809 年の著作 『Theoria motus corporum coelestium in Sectionibus conicis solem ambientum 』に初めて登場しました。 [2]
説明
ガウス・ニュートン法は、 変数の 関数 (残差 と呼ばれることが多い)を 反復的に 求め、 平方和を最小にする 値を求める [3]
メートル
{\displaystyle m}
r
=
(
r
1
、
…
、
r
メートル
)
{\displaystyle {\textbf {r}}=(r_{1},\ldots,r_{m})}
ん
{\displaystyle n}
β
=
(
β
1
、
…
β
ん
)
、
{\displaystyle {\boldsymbol {\beta }}=(\beta _{1},\ldots \beta _{n}),}
メートル
≥
ん
、
{\displaystyle m\geq n,}
β
{\displaystyle \beta}
S
(
β
)
=
∑
私
=
1
メートル
r
私
(
β
)
2
。
{\displaystyle S({\boldsymbol {\beta }})=\sum _{i=1}^{m}r_{i}({\boldsymbol {\beta }})^{2}.}
最小値の初期推定から始めて 、この方法は反復によって進行する。
β
(
0
)
{\displaystyle {\boldsymbol {\beta }}^{(0)}}
β
(
s
+
1
)
=
β
(
s
)
−
(
J
r
T
J
r
)
−
1
J
r
T
r
(
β
(
s
)
)
,
{\displaystyle {\boldsymbol {\beta }}^{(s+1)}={\boldsymbol {\beta }}^{(s)}-\left(\mathbf {J_{r}} ^{\operatorname {T} }\mathbf {J_{r}} \right)^{-1}\mathbf {J_{r}} ^{\operatorname {T} }\mathbf {r} \left({\boldsymbol {\beta }}^{(s)}\right),}
ここで、 r と β が列ベクトル である場合、 ヤコビ行列 の要素 は
(
J
r
)
i
j
=
∂
r
i
(
β
(
s
)
)
∂
β
j
,
{\displaystyle \left(\mathbf {J_{r}} \right)_{ij}={\frac {\partial r_{i}\left({\boldsymbol {\beta }}^{(s)}\right)}{\partial \beta _{j}}},}
記号は 行列の転置 を表します 。
T
{\displaystyle ^{\operatorname {T} }}
各反復において、次の 2 つの手順で前の式を並べ替えることで
更新を見つけることができます。
Δ
=
β
(
s
+
1
)
−
β
(
s
)
{\displaystyle \Delta ={\boldsymbol {\beta }}^{(s+1)}-{\boldsymbol {\beta }}^{(s)}}
Δ
=
−
(
J
r
T
J
r
)
−
1
J
r
T
r
(
β
(
s
)
)
{\displaystyle \Delta =-\left(\mathbf {J_{r}} ^{\operatorname {T} }\mathbf {J_{r}} \right)^{-1}\mathbf {J_{r}} ^{\operatorname {T} }\mathbf {r} \left({\boldsymbol {\beta }}^{(s)}\right)}
J
r
T
J
r
Δ
=
−
J
r
T
r
(
β
(
s
)
)
{\displaystyle \mathbf {J_{r}} ^{\operatorname {T} }\mathbf {J_{r}} \Delta =-\mathbf {J_{r}} ^{\operatorname {T} }\mathbf {r} \left({\boldsymbol {\beta }}^{(s)}\right)}
、、 を 代入すると 、これは という形式の従来の行列方程式になり 、さまざまな方法で解くことができます (注を参照)。
A
=
J
r
T
J
r
{\textstyle A=\mathbf {J_{r}} ^{\operatorname {T} }\mathbf {J_{r}} }
b
=
−
J
r
T
r
(
β
(
s
)
)
{\displaystyle \mathbf {b} =-\mathbf {J_{r}} ^{\operatorname {T} }\mathbf {r} \left({\boldsymbol {\beta }}^{(s)}\right)}
x
=
Δ
{\displaystyle \mathbf {x} =\Delta }
A
x
=
b
{\displaystyle A\mathbf {x} =\mathbf {b} }
m = n の場合 、反復は次のように単純化される。
β
(
s
+
1
)
=
β
(
s
)
−
(
J
r
)
−
1
r
(
β
(
s
)
)
,
{\displaystyle {\boldsymbol {\beta }}^{(s+1)}={\boldsymbol {\beta }}^{(s)}-\left(\mathbf {J_{r}} \right)^{-1}\mathbf {r} \left({\boldsymbol {\beta }}^{(s)}\right),}
これはニュートン法 を 1 次元に直接一般化したものです 。
データフィッティングでは、与えられたモデル関数が いくつかのデータポイントに最もよく適合するような パラメータを見つけることが目的であり 、関数は 残差 です 。
β
{\displaystyle {\boldsymbol {\beta }}}
f
(
x
,
β
)
{\displaystyle \mathbf {f} (\mathbf {x} ,{\boldsymbol {\beta }})}
(
x
i
,
y
i
)
{\displaystyle (x_{i},y_{i})}
r
i
{\displaystyle r_{i}}
r
i
(
β
)
=
y
i
−
f
(
x
i
,
β
)
.
{\displaystyle r_{i}({\boldsymbol {\beta }})=y_{i}-f\left(x_{i},{\boldsymbol {\beta }}\right).}
そして、ガウス・ニュートン法は、 関数のヤコビアンを使って次 のよう
に表すことができます。
J
f
=
−
J
r
{\displaystyle \mathbf {J_{f}} =-\mathbf {J_{r}} }
f
{\displaystyle \mathbf {f} }
β
(
s
+
1
)
=
β
(
s
)
+
(
J
f
T
J
f
)
−
1
J
f
T
r
(
β
(
s
)
)
.
{\displaystyle {\boldsymbol {\beta }}^{(s+1)}={\boldsymbol {\beta }}^{(s)}+\left(\mathbf {J_{f}} ^{\operatorname {T} }\mathbf {J_{f}} \right)^{-1}\mathbf {J_{f}} ^{\operatorname {T} }\mathbf {r} \left({\boldsymbol {\beta }}^{(s)}\right).}
は の 左 擬似逆 であることに注意してください 。
(
J
f
T
J
f
)
−
1
J
f
T
{\displaystyle \left(\mathbf {J_{f}} ^{\operatorname {T} }\mathbf {J_{f}} \right)^{-1}\mathbf {J_{f}} ^{\operatorname {T} }}
J
f
{\displaystyle \mathbf {J_{f}} }
注記
アルゴリズムステートメントでは、 m ≥ n という仮定が必要です。そうでないと、行列は 逆行列にならず、正規方程式を解くことができません (少なくとも一意には)。
J
r
T
J
r
{\displaystyle \mathbf {J_{r}} ^{T}\mathbf {J_{r}} }
ガウス・ニュートン法は、関数r i のベクトルを 線形近似すること によって導出できます 。 テイラーの定理 を使用すると、各反復で次のように記述できます。
r
(
β
)
≈
r
(
β
(
s
)
)
+
J
r
(
β
(
s
)
)
Δ
{\displaystyle \mathbf {r} ({\boldsymbol {\beta }})\approx \mathbf {r} \left({\boldsymbol {\beta }}^{(s)}\right)+\mathbf {J_{r}} \left({\boldsymbol {\beta }}^{(s)}\right)\Delta }
とします。 右辺の二乗和を最小化する
問題、すなわち、
Δ
=
β
−
β
(
s
)
{\displaystyle \Delta ={\boldsymbol {\beta }}-{\boldsymbol {\beta }}^{(s)}}
Δ
{\displaystyle \Delta }
min
‖
r
(
β
(
s
)
)
+
J
r
(
β
(
s
)
)
Δ
‖
2
2
,
{\displaystyle \min \left\|\mathbf {r} \left({\boldsymbol {\beta }}^{(s)}\right)+\mathbf {J_{r}} \left({\boldsymbol {\beta }}^{(s)}\right)\Delta \right\|_{2}^{2},}
線形最小二乗 問題であり 、明示的に解くことができ、アルゴリズム内の正規方程式を生成します。
正規方程式は、 未知の増分 における n 個の同時線形方程式です。これらは、 コレスキー分解 、またはより適切な の QR 分解 を使用して 1 ステップで解くことができます。大規模なシステムでは、 共役勾配 法などの 反復法 の方が効率的な場合があります。J r の列間に線形 依存関係がある場合 、 が特異になるため、反復は失敗します 。
Δ
{\displaystyle \Delta }
J
r
{\displaystyle \mathbf {J_{r}} }
J
r
T
J
r
{\displaystyle \mathbf {J_{r}} ^{T}\mathbf {J_{r}} }
が複素数 の場合は 共役形式を使用する必要があります 。
r
{\displaystyle \mathbf {r} }
r
:
C
n
→
C
{\displaystyle \mathbf {r} :\mathbb {C} ^{n}\to \mathbb {C} }
(
J
r
¯
T
J
r
)
−
1
J
r
¯
T
{\displaystyle \left({\overline {\mathbf {J_{r}} }}^{\operatorname {T} }\mathbf {J_{r}} \right)^{-1}{\overline {\mathbf {J_{r}} }}^{\operatorname {T} }}
例
および で得られた計算曲線 (青)と観測データ(赤)の比較
β
^
1
=
0.362
{\displaystyle {\hat {\beta }}_{1}=0.362}
β
^
2
=
0.556
{\displaystyle {\hat {\beta }}_{2}=0.556}
この例では、ガウス・ニュートンアルゴリズムを使用して、データとモデルの予測値間の誤差の二乗和を最小化することにより、モデルをデータに適合させます。
酵素媒介反応における基質濃度[ S ] と反応速度の関係を調べる生物学実験で 、次の表のデータが得られました。
次のような曲線(モデル関数)を求めることが望ましい。
rate
=
V
max
⋅
[
S
]
K
M
+
[
S
]
{\displaystyle {\text{rate}}={\frac {V_{\text{max}}\cdot [S]}{K_{M}+[S]}}}
最小二乗法の意味でデータに最もよく適合するもので、パラメータと が 決定されます。
V
max
{\displaystyle V_{\text{max}}}
K
M
{\displaystyle K_{M}}
とを それぞれ [ S ] と 率 の値を、と 表記する 。と とする 。 残差の二乗和
が
x
i
{\displaystyle x_{i}}
y
i
{\displaystyle y_{i}}
i
=
1
,
…
,
7
{\displaystyle i=1,\dots ,7}
β
1
=
V
max
{\displaystyle \beta _{1}=V_{\text{max}}}
β
2
=
K
M
{\displaystyle \beta _{2}=K_{M}}
β
1
{\displaystyle \beta _{1}}
β
2
{\displaystyle \beta _{2}}
r
i
=
y
i
−
β
1
x
i
β
2
+
x
i
,
(
i
=
1
,
…
,
7
)
{\displaystyle r_{i}=y_{i}-{\frac {\beta _{1}x_{i}}{\beta _{2}+x_{i}}},\quad (i=1,\dots ,7)}
最小化されます。
未知数に関する 残差ベクトルの ヤコビアンは 、次の要素を持つ行を持つ
行列で ある。
J
r
{\displaystyle \mathbf {J_{r}} }
r
i
{\displaystyle r_{i}}
β
j
{\displaystyle \beta _{j}}
7
×
2
{\displaystyle 7\times 2}
i
{\displaystyle i}
∂
r
i
∂
β
1
=
−
x
i
β
2
+
x
i
;
∂
r
i
∂
β
2
=
β
1
⋅
x
i
(
β
2
+
x
i
)
2
.
{\displaystyle {\frac {\partial r_{i}}{\partial \beta _{1}}}=-{\frac {x_{i}}{\beta _{2}+x_{i}}};\quad {\frac {\partial r_{i}}{\partial \beta _{2}}}={\frac {\beta _{1}\cdot x_{i}}{\left(\beta _{2}+x_{i}\right)^{2}}}.}
およびの初期推定値から始めて 、 ガウス・ニュートン法を 5 回繰り返した後、最適値 および が得られます。残差の二乗和は、5 回目の繰り返し後に初期値の 1.445 から 0.00784 に減少しました。右の図のプロットは、観測データを使用してモデルによって決定された最適パラメータの曲線を示しています。
β
1
=
0.9
{\displaystyle \beta _{1}=0.9}
β
2
=
0.2
{\displaystyle \beta _{2}=0.2}
β
^
1
=
0.362
{\displaystyle {\hat {\beta }}_{1}=0.362}
β
^
2
=
0.556
{\displaystyle {\hat {\beta }}_{2}=0.556}
収束特性
ガウス・ニュートン反復法は、次 の4つの条件下で局所的最小値に向かって収束することが保証されています。 [4] 関数は 開凸集合 で2回連続微分可能 、ヤコビアン はフル列ランク、初期反復 は 付近 、局所的最小値 は小さい。 の場合には収束は2次式です 。
β
^
{\displaystyle {\hat {\beta }}}
r
1
,
…
,
r
m
{\displaystyle r_{1},\ldots ,r_{m}}
D
∋
β
^
{\displaystyle D\ni {\hat {\beta }}}
J
r
(
β
^
)
{\displaystyle \mathbf {J} _{\mathbf {r} }({\hat {\beta }})}
β
(
0
)
{\displaystyle \beta ^{(0)}}
β
^
{\displaystyle {\hat {\beta }}}
|
S
(
β
^
)
|
{\displaystyle |S({\hat {\beta }})|}
|
S
(
β
^
)
|
=
0
{\displaystyle |S({\hat {\beta }})|=0}
[5] によれば 、増分 Δ は S の 下降方向 であり、アルゴリズムが収束する場合、極限は S の 停留点 となる。 しかし、最小値が大きい場合、収束は保証されず、 ニュートン法 のような 局所収束 や、通常のウルフ条件下での収束さえも保証されない。 [6]
|
S
(
β
^
)
|
{\displaystyle |S({\hat {\beta }})|}
ガウス・ニュートン法の収束率は 2乗 に近づくことがある。 [7] 初期推定値が最小値から遠い場合や行列の条件 が 悪けれ ば、収束が遅くなったり、まったく収束しないこともある。例えば、次式で表される 方程式と 変数を持つ
問題を考える。
J
r
T
J
r
{\displaystyle \mathbf {J_{r}^{\operatorname {T} }J_{r}} }
m
=
2
{\displaystyle m=2}
n
=
1
{\displaystyle n=1}
r
1
(
β
)
=
β
+
1
,
r
2
(
β
)
=
λ
β
2
+
β
−
1.
{\displaystyle {\begin{aligned}r_{1}(\beta )&=\beta +1,\\r_{2}(\beta )&=\lambda \beta ^{2}+\beta -1.\end{aligned}}}
最適値は です。(実際は の場合 、 ですが であるため、で 最適値は です 。) の場合 、問題は実際に線形であり、この方法は 1 回の反復で最適値を見つけます。|λ| < 1 の場合、この方法は線形に収束し、反復ごとに誤差は係数 |λ| で漸近的に減少します。しかし、|λ| > 1 の場合、この方法は局所的にも収束しません。 [8]
β
=
0
{\displaystyle \beta =0}
β
=
−
1
{\displaystyle \beta =-1}
λ
=
2
{\displaystyle \lambda =2}
S
(
0
)
=
1
2
+
(
−
1
)
2
=
2
{\displaystyle S(0)=1^{2}+(-1)^{2}=2}
S
(
−
1
)
=
0
{\displaystyle S(-1)=0}
λ
=
0
{\displaystyle \lambda =0}
過剰決定方程式の解法
ガウス・ニュートン反復法は
、 および
の 形の 過剰決定方程式系を
解くための効果的な方法です 。 ここで、 は の ヤコビ行列の ムーア・ペンローズ逆行列( 擬似逆行列 とも呼ばれる ) です。これは ニュートン法 の拡張とみなすことができ、 孤立した正則解に向かって
同様に局所的な二次収束 [4]を示します。
x
(
k
+
1
)
=
x
(
k
)
−
J
(
x
(
k
)
)
†
f
(
x
(
k
)
)
,
k
=
0
,
1
,
…
{\displaystyle \mathbf {x} ^{(k+1)}=\mathbf {x} ^{(k)}-J(\mathbf {x} ^{(k)})^{\dagger }\mathbf {f} (\mathbf {x} ^{(k)})\,,\quad k=0,1,\ldots }
f
(
x
)
=
0
{\displaystyle \mathbf {f} (\mathbf {x} )=\mathbf {0} }
f
(
x
)
=
[
f
1
(
x
1
,
…
,
x
n
)
⋮
f
m
(
x
1
,
…
,
x
n
)
]
{\displaystyle \mathbf {f} (\mathbf {x} )={\begin{bmatrix}f_{1}(x_{1},\ldots ,x_{n})\\\vdots \\f_{m}(x_{1},\ldots ,x_{n})\end{bmatrix}}}
m
>
n
{\displaystyle m>n}
J
(
x
)
†
{\displaystyle J(\mathbf {x} )^{\dagger }}
J
(
x
)
{\displaystyle J(\mathbf {x} )}
f
(
x
)
{\displaystyle \mathbf {f} (\mathbf {x} )}
解が存在しないが、初期反復が 平方和が小さな局所的最小値に達する 点に近い場合 、ガウス・ニュートン反復は に線形収束します 。この点は、過剰決定システムの 最小二乗 解と呼ばれることがよくあります 。
x
(
0
)
{\displaystyle \mathbf {x} ^{(0)}}
x
^
=
(
x
^
1
,
…
,
x
^
n
)
{\displaystyle {\hat {\mathbf {x} }}=({\hat {x}}_{1},\ldots ,{\hat {x}}_{n})}
∑
i
=
1
m
|
f
i
(
x
1
,
…
,
x
n
)
|
2
≡
‖
f
(
x
)
‖
2
2
{\textstyle \sum _{i=1}^{m}|f_{i}(x_{1},\ldots ,x_{n})|^{2}\equiv \|\mathbf {f} (\mathbf {x} )\|_{2}^{2}}
x
^
{\displaystyle {\hat {\mathbf {x} }}}
x
^
{\displaystyle {\hat {\mathbf {x} }}}
ニュートン法からの導出
以下では、近似法によって関数最適化のためのニュートン法 からガウス・ニュートン法を導出します 。その結果、ガウス・ニュートン法の収束率は、一定の規則性条件下では2次式になることがあります。一般的には(より弱い条件下では)、収束率は線形です。 [9]
パラメータ関数 S を最小化するニュートン法の再帰関係は 、
β
{\displaystyle {\boldsymbol {\beta }}}
β
(
s
+
1
)
=
β
(
s
)
−
H
−
1
g
,
{\displaystyle {\boldsymbol {\beta }}^{(s+1)}={\boldsymbol {\beta }}^{(s)}-\mathbf {H} ^{-1}\mathbf {g} ,}
ここで g は S の 勾配ベクトル を表し 、 H は S の ヘッセ行列 を表します 。
なので 、勾配は次のように与えられる。
S
=
∑
i
=
1
m
r
i
2
{\textstyle S=\sum _{i=1}^{m}r_{i}^{2}}
g
j
=
2
∑
i
=
1
m
r
i
∂
r
i
∂
β
j
.
{\displaystyle g_{j}=2\sum _{i=1}^{m}r_{i}{\frac {\partial r_{i}}{\partial \beta _{j}}}.}
ヘッセ行列の要素は、勾配要素 を について微分することによって計算されます 。
g
j
{\displaystyle g_{j}}
β
k
{\displaystyle \beta _{k}}
H
j
k
=
2
∑
i
=
1
m
(
∂
r
i
∂
β
j
∂
r
i
∂
β
k
+
r
i
∂
2
r
i
∂
β
j
∂
β
k
)
.
{\displaystyle H_{jk}=2\sum _{i=1}^{m}\left({\frac {\partial r_{i}}{\partial \beta _{j}}}{\frac {\partial r_{i}}{\partial \beta _{k}}}+r_{i}{\frac {\partial ^{2}r_{i}}{\partial \beta _{j}\partial \beta _{k}}}\right).}
ガウス・ニュートン法は、2次微分項(この式の2番目の項)を無視することで得られる。つまり、ヘッセ行列は次のように近似される。
H
j
k
≈
2
∑
i
=
1
m
J
i
j
J
i
k
,
{\displaystyle H_{jk}\approx 2\sum _{i=1}^{m}J_{ij}J_{ik},}
ここで、 は ヤコビ行列 J r の要素です。正確なヘッセ行列が正確な近似値の近くで評価されると、 はほぼゼロになる ため、2 番目の項もほぼゼロになり、近似が正当化されます。勾配と近似ヘッセ行列は、行列表記で次のように表すことができます。
J
i
j
=
∂
r
i
/
∂
β
j
{\textstyle J_{ij}={\partial r_{i}}/{\partial \beta _{j}}}
r
i
{\displaystyle r_{i}}
g
=
2
J
r
T
r
,
H
≈
2
J
r
T
J
r
.
{\displaystyle \mathbf {g} =2{\mathbf {J} _{\mathbf {r} }}^{\operatorname {T} }\mathbf {r} ,\quad \mathbf {H} \approx 2{\mathbf {J} _{\mathbf {r} }}^{\operatorname {T} }\mathbf {J_{r}} .}
これらの式を上記の再帰関係に代入すると、演算方程式が得られる。
β
(
s
+
1
)
=
β
(
s
)
+
Δ
;
Δ
=
−
(
J
r
T
J
r
)
−
1
J
r
T
r
.
{\displaystyle {\boldsymbol {\beta }}^{(s+1)}={\boldsymbol {\beta }}^{(s)}+\Delta ;\quad \Delta =-\left(\mathbf {J_{r}} ^{\operatorname {T} }\mathbf {J_{r}} \right)^{-1}\mathbf {J_{r}} ^{\operatorname {T} }\mathbf {r} .}
ガウス・ニュートン法の収束は、すべての場合に保証されるわけではない。近似
|
r
i
∂
2
r
i
∂
β
j
∂
β
k
|
≪
|
∂
r
i
∂
β
j
∂
r
i
∂
β
k
|
{\displaystyle \left|r_{i}{\frac {\partial ^{2}r_{i}}{\partial \beta _{j}\partial \beta _{k}}}\right|\ll \left|{\frac {\partial r_{i}}{\partial \beta _{j}}}{\frac {\partial r_{i}}{\partial \beta _{k}}}\right|}
2次微分項を無視するために必要な式は、収束が期待される2つのケースで有効である可能性がある: [10]
関数値は 、少なくとも最小値付近では大きさが小さいです。
r
i
{\displaystyle r_{i}}
関数は「軽度」非線形であるため、その 大きさは比較的小さくなります。
∂
2
r
i
∂
β
j
∂
β
k
{\textstyle {\frac {\partial ^{2}r_{i}}{\partial \beta _{j}\partial \beta _{k}}}}
改良版
ガウス・ニュートン法では、残差S の二乗和は 反復ごとに減少しない可能性があります。ただし、 Δ は下降方向であるため、 が定常点でない限り、 十分に小さい に対して が成り立ちます 。したがって、発散が発生した場合、1 つの解決策は、更新式で増分ベクトル Δ の一部を使用することです 。
S
(
β
s
)
{\displaystyle S\left({\boldsymbol {\beta }}^{s}\right)}
S
(
β
s
+
α
Δ
)
<
S
(
β
s
)
{\displaystyle S\left({\boldsymbol {\beta }}^{s}+\alpha \Delta \right)<S\left({\boldsymbol {\beta }}^{s}\right)}
α
>
0
{\displaystyle \alpha >0}
α
{\displaystyle \alpha }
β
s
+
1
=
β
s
+
α
Δ
.
{\displaystyle {\boldsymbol {\beta }}^{s+1}={\boldsymbol {\beta }}^{s}+\alpha \Delta .}
言い換えれば、増分ベクトルは長すぎるが、それでも「下り坂」を指しているので、途中まで進むだけで目的関数 S は 減少する。 の最適値は 直線探索 アルゴリズムを使用して見つけることができる 。つまり、 の大きさは 、通常、 区間内の 直接探索法 または アルミヨ直線探索 などの バックトラッキング直線探索を使用して、 S を 最小化する値を見つけることで決定される 。通常、 は、 ウルフ条件 または ゴールドスタイン条件を満たす ように選択する必要がある 。 [11]
α
{\displaystyle \alpha }
α
{\displaystyle \alpha }
0
<
α
<
1
{\displaystyle 0<\alpha <1}
α
{\displaystyle \alpha }
シフトベクトルの方向が最適分数αがゼロに近い場合、発散を処理するための代替方法は 、 信頼領域法である レベンバーグ・マルカートアルゴリズム を使用することです。 [3]正規方程式は、増分ベクトルが 最急降下 の方向に回転するように変更されます 。
(
J
T
J
+
λ
D
)
Δ
=
−
J
T
r
,
{\displaystyle \left(\mathbf {J^{\operatorname {T} }J+\lambda D} \right)\Delta =-\mathbf {J} ^{\operatorname {T} }\mathbf {r} ,}
ここで、 D は 正の対角行列です。D が単位行列 I で のとき 、 となり 、 Δ の 方向 は 負の勾配 の方向に近づくことに注意してください 。
λ
→
+
∞
{\displaystyle \lambda \to +\infty }
λ
Δ
=
λ
(
J
T
J
+
λ
I
)
−
1
(
−
J
T
r
)
=
(
I
−
J
T
J
/
λ
+
⋯
)
(
−
J
T
r
)
→
−
J
T
r
{\displaystyle \lambda \Delta =\lambda \left(\mathbf {J^{\operatorname {T} }J} +\lambda \mathbf {I} \right)^{-1}\left(-\mathbf {J} ^{\operatorname {T} }\mathbf {r} \right)=\left(\mathbf {I} -\mathbf {J^{\operatorname {T} }J} /\lambda +\cdots \right)\left(-\mathbf {J} ^{\operatorname {T} }\mathbf {r} \right)\to -\mathbf {J} ^{\operatorname {T} }\mathbf {r} }
−
J
T
r
{\displaystyle -\mathbf {J} ^{\operatorname {T} }\mathbf {r} }
いわゆる Marquardt パラメータ も直線探索によって最適化できますが、 が変更されるたびにシフト ベクトルを再計算する必要があるため、これは非効率的です。より効率的な戦略は次のとおりです。発散が発生した場合、 S が減少するまで Marquardt パラメータを増やします。次に、1 つの反復から次の反復まで値を保持しますが、可能であればカットオフ値に達するまで値を減らします。カットオフ値に達すると、Marquardt パラメータを 0 に設定できます。これにより、 S の最小化は標準的なガウス - ニュートン最小化になります。
λ
{\displaystyle \lambda }
λ
{\displaystyle \lambda }
大規模最適化
大規模な最適化では、ガウス・ニュートン法が特に重要です。なぜなら、行列は 近似ヘッセ行列より も 疎であることが多いからです(ただし、常にそうであるとは限りません)。そのような場合、ステップ計算自体は通常、 共役勾配法 などの大規模で疎な問題に適した近似反復法を使用して実行する必要があります 。
J
r
{\displaystyle \mathbf {J} _{\mathbf {r} }}
J
r
T
J
r
{\displaystyle \mathbf {J} _{\mathbf {r} }^{\operatorname {T} }\mathbf {J_{r}} }
このようなアプローチを機能させるには、少なくとも積を計算する効率的な方法が必要である。
J
r
T
J
r
p
{\displaystyle {\mathbf {J} _{\mathbf {r} }}^{\operatorname {T} }\mathbf {J_{r}} \mathbf {p} }
あるベクトル p に対して、 が成り立ちます。 疎行列の ストレージでは、 の行を 圧縮した形式 (ゼロ要素なしなど) で保存することが一般的に実用的ですが、転置のため上記の積を直接計算するのは困難です。ただし、 c i を 行列 の行 i として定義すると 、次の単純な関係が成り立ちます。
J
r
{\displaystyle \mathbf {J} _{\mathbf {r} }}
J
r
{\displaystyle \mathbf {J} _{\mathbf {r} }}
J
r
T
J
r
p
=
∑
i
c
i
(
c
i
⋅
p
)
,
{\displaystyle {\mathbf {J} _{\mathbf {r} }}^{\operatorname {T} }\mathbf {J_{r}} \mathbf {p} =\sum _{i}\mathbf {c} _{i}\left(\mathbf {c} _{i}\cdot \mathbf {p} \right),}
すべての行が積に独立して加算的に寄与するようになります。実用的なスパース ストレージ構造を尊重することに加えて、この式は 並列計算 にも適しています。すべての行 c i は 対応する残差r i の勾配であることに注意してください 。これを念頭に置くと、上記の式は残差が互いに独立して問題に寄与するという事実を強調しています。
Davidon、Fletcher、Powellによる 準ニュートン法 や Broyden–Fletcher–Goldfarb–Shanno ( BFGS 法 )などの準ニュートン法 では 、完全なヘッセ行列の推定値は、 n 回の 改良サイクルの後、パフォーマンスの点でニュートン法に近似するように、 1 次導関数のみを使用して数値的に構築されます 。準ニュートン法は一般的な実数値関数を最小化できますが、ガウス–ニュートン法、レーベンバーグ–マルカート法などは非線形最小二乗問題にのみ適合することに注意してください。
∂
2
S
∂
β
j
∂
β
k
{\textstyle {\frac {\partial ^{2}S}{\partial \beta _{j}\partial \beta _{k}}}}
∂
r
i
∂
β
j
{\textstyle {\frac {\partial r_{i}}{\partial \beta _{j}}}}
1 次導関数のみを使用して最小化問題を解く別の方法は、 勾配降下法 です。ただし、この方法では 2 次導関数が近似的にも考慮されません。その結果、多くの関数、特にパラメータに強い相互作用がある場合には非常に非効率的です。
実装例
ジュリア Julia
での次の実装では、 提供されたヤコビアンを使用する 1 つの方法と、 自動微分 を使用して計算する別の方法が提供されます。
"""
ガウスニュートン(r,J,β₀,maxiter,tol)
ガウス・ニュートン最適化を実行して、ヤコビアン `J` を `β₀` から開始して残差関数 `r` を最小化します。ステップのノルムが `tol` 未満になるか、`maxiter` 回の反復後にアルゴリズムは終了します。
"""
function gaussnewton ( r , J , β₀ , maxiter , tol ) β = copy ( β₀ ) for _ in 1 : maxiter Jβ = J ( β ); Δ = - ( Jβ '* Jβ ) \ ( Jβ '* r ( β )) β += Δ if sqrt ( sum ( abs2 , Δ )) < tol break end end return β end
import AbstractDifferentiation as AD , Zygote backend = AD . ZygoteBackend () # 他のバックエンドも利用可能
"""
ガウスニュートン(r,β₀,maxiter,tol)
ガウス・ニュートン最適化を実行して、`β₀` から始めて残差関数 `r` を最小化します。関連するヤコビアンは自動微分を使用して計算されます。ステップのノルムが `tol` 未満になるか、`maxiter` 回の反復後にアルゴリズムは終了します。
"""
function gaussnewton ( r , β₀ , maxiter , tol ) β = copy ( β₀ ) for _ in 1 : maxiter rβ , Jβ = AD . value_and_jacobian ( backend , r , β ) Δ = - ( Jβ [ 1 ] '* Jβ [ 1 ]) \ ( Jβ [ 1 ] '* rβ ) β += Δ if sqrt ( sum ( abs2 , Δ )) < tol break end end return β end
注記
^ ミッテルハマー、ロン C.; ミラー、ダグラス J.; ジャッジ、ジョージ G. (2000)。計量経済学の基礎。ケンブリッジ:ケンブリッジ大学出版局。pp. 197–198。ISBN 0-521-62394-4 。
^ Floudas, Christodoulos A. ; Pardalos, Panos M. (2008). 最適化百科事典 . Springer. p. 1130. ISBN 9780387747583 。
^ ビョルク(1996)
^ ab JE Dennis, Jr. および RB Schnabel (1983)。 制約のない最適化と非線形方程式の数値解析法 。Prentice-Hall 1983 版の SIAM 1996 複製。p. 222。
^ ビョルク(1996)、260ページ。
^ Mascarenhas (2013)、「BFGS法とガウスニュートン法の発散」、 数学プログラミング 、 147 (1): 253–276、 arXiv : 1309.7922 、 doi :10.1007/s10107-013-0720-6、 S2CID 14700106
^ ビョルク (1996)、p. 341、342。
^ フレッチャー(1987)、113ページ。
^ 「アーカイブコピー」 (PDF) 。 2016年8月4日時点の オリジナル (PDF)からアーカイブ。 2014年4月25日 閲覧 。 {{cite web}}: CS1 maint: archived copy as title (link)
^ ノセダル(1999)、259ページ。
^ Nocedal, Jorge. (1999). 数値最適化 . Wright, Stephen J., 1960-. ニューヨーク: Springer. ISBN 0387227423 . OCLC 54849297.
参考文献
Björck, A. (1996). 最小二乗問題の数値解析法 . SIAM, フィラデルフィア. ISBN 0-89871-360-9 。
フレッチャー、ロジャー(1987年)。 最適化の実践的方法 (第2版)。ニューヨーク: ジョン ・ワイリー・アンド・サンズ 。ISBN 978-0-471-91547-8 。 。
Nocedal, Jorge; Wright, Stephen (1999). 数値最適化 . ニューヨーク: Springer. ISBN 0-387-98793-2 。
外部リンク
確率、統計、推定 アルゴリズムの詳細が説明され、この記事で例として説明されている生物学実験に適用されます (推定値の不確実性については 84 ページを参照)。
実装
Artelys Knitro は、ガウス・ニュートン法を実装した非線形ソルバーです。C で記述されており、C++/C#/Java/Python/MATLAB/R へのインターフェースを備えています。