手法の説明
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/04/12 04:49 UTC 版)
ニュートン法と同様、関数 f ( x ) {\displaystyle f({\boldsymbol {x}})} の解を見つけるために二次の近似を用いる。 f ( x ) {\displaystyle f({\boldsymbol {x}})} の二階のテイラー展開は f ( x k + Δ x ) ≈ f ( x k ) + ∇ f ( x k ) ⊺ Δ x + 1 2 Δ x ⊺ B Δ x {\displaystyle f({\boldsymbol {x}}_{k}+\Delta {\boldsymbol {x}})\approx f({\boldsymbol {x}}_{k})+\nabla f({\boldsymbol {x}}_{k})^{\intercal }\Delta {\boldsymbol {x}}+{\frac {1}{2}}\Delta {\boldsymbol {x}}^{\intercal }{\boldsymbol {B}}\Delta {\boldsymbol {x}}} となる。この式で ∇ f {\displaystyle \nabla f} は勾配を表し、 B {\displaystyle {\boldsymbol {B}}} はヘッセ行列の近似を表す。勾配 ∇ f {\displaystyle \nabla f} はさらに次のように近似される。 ∇ f ( x k + Δ x ) ≈ ∇ f ( x k ) + B Δ x {\displaystyle \nabla f({\boldsymbol {x}}_{k}+\Delta {\boldsymbol {x}})\approx \nabla f({\boldsymbol {x}}_{k})+{\boldsymbol {B}}\Delta {\boldsymbol {x}}} この勾配が0になると仮定するとニュートン・ステップが次の式で計算される。 Δ x = − B − 1 ∇ f ( x k ) {\displaystyle \Delta {\boldsymbol {x}}=-{\boldsymbol {B}}^{-1}\nabla f({\boldsymbol {x}}_{k})} そこでヘッセ行列の近似 B {\displaystyle {\boldsymbol {B}}} は次の式を満たすように行われる。 ∇ f ( x k + Δ x ) = ∇ f ( x k ) + B Δ x {\displaystyle \nabla f({\boldsymbol {x}}_{k}+\Delta {\boldsymbol {x}})=\nabla f({\boldsymbol {x}}_{k})+{\boldsymbol {B}}\Delta {\boldsymbol {x}}} この方程式はセカント方程式と呼ばれる。 f {\displaystyle f} が多次元空間上で定義される関数のとき、この式から B {\displaystyle {\boldsymbol {B}}} を求める問題は劣決定問題になる(式の数よりも未知数の数が多い問題のこと)。このとき B {\displaystyle {\boldsymbol {B}}} を求めて、ニュートン・ステップにより解を更新するという処理はセカント方程式を解くことに帰着される。多くの準ニュートン法はセカント方程式の解の選び方が異なっている。ほとんどの方法では B = B ⊺ {\displaystyle {\boldsymbol {B}}={\boldsymbol {B}}^{\intercal }} という対称性を仮定して解を求める。加えて、以下のリストに示す方法では新たな近似 B k + 1 {\displaystyle {\boldsymbol {B}}_{k+1}} を得るために、その前の近似 B k {\displaystyle {\boldsymbol {B}}_{k}} と、あるノルムの意味において近い解を選ぼうとする。すなわち何らかの正定値行列 V {\displaystyle {\boldsymbol {V}}} に対して B k + 1 = arg min B ‖ B − B k ‖ V {\displaystyle {\boldsymbol {B}}_{k+1}=\arg \min _{\boldsymbol {B}}\|{\boldsymbol {B}}-{\boldsymbol {B}}_{k}\|_{\boldsymbol {V}}} と成るように B {\displaystyle {\boldsymbol {B}}} を更新する。近似ヘッセ行列の初期値としては単位行列などが用いられる。最適化の解 x k {\displaystyle {\boldsymbol {x}}_{k}} は近似によって得られた B k {\displaystyle {\boldsymbol {B}}_{k}} を用いたニュートン・ステップにより更新される。 アルゴリズムをまとめると以下のようになる。 Δ x k = − α B k − 1 ∇ f ( x k ) {\displaystyle \Delta {\boldsymbol {x}}_{k}=-\alpha {\boldsymbol {B}}_{k}^{-1}\nabla f({\boldsymbol {x}}_{k})} x k + 1 = x k + Δ x k {\displaystyle {\boldsymbol {x}}_{k+1}={\boldsymbol {x}}_{k}+\Delta {\boldsymbol {x}}_{k}} 新しい点での勾配 ∇ f ( x k + 1 ) {\displaystyle \nabla f({\boldsymbol {x}}_{k+1})} を計算し y k = ∇ f ( x k + 1 ) − ∇ f ( x k ) {\displaystyle {\boldsymbol {y}}_{k}=\nabla f({\boldsymbol {x}}_{k+1})-\nabla f({\boldsymbol {x}}_{k})} とする y k {\displaystyle {\boldsymbol {y}}_{k}} を用いてヘッセ行列の逆行列 B k + 1 − 1 {\displaystyle {\boldsymbol {B}}_{k+1}^{-1}} を直接近似する。近似の式は各手法ごとに以下のリストの通り。 Method B k + 1 = {\displaystyle {\boldsymbol {B}}_{k+1}=} H k + 1 = B k + 1 − 1 = {\displaystyle {\boldsymbol {H}}_{k+1}={\boldsymbol {B}}_{k+1}^{-1}=} DFP法(英語版) ( I − y k Δ x k ⊺ y k ⊺ Δ x k ) B k ( I − Δ x k y k ⊺ y k ⊺ Δ x k ) + y k y k ⊺ y k ⊺ Δ x k {\displaystyle \left({\boldsymbol {I}}-{\frac {{\boldsymbol {y}}_{k}\,\Delta {\boldsymbol {x}}_{k}^{\intercal }}{{\boldsymbol {y}}_{k}^{\intercal }\,\Delta {\boldsymbol {x}}_{k}}}\right){\boldsymbol {B}}_{k}\left({\boldsymbol {I}}-{\frac {\Delta {\boldsymbol {x}}_{k}{\boldsymbol {y}}_{k}^{\intercal }}{{\boldsymbol {y}}_{k}^{\intercal }\,\Delta {\boldsymbol {x}}_{k}}}\right)+{\frac {{\boldsymbol {y}}_{k}{\boldsymbol {y}}_{k}^{\intercal }}{{\boldsymbol {y}}_{k}^{\intercal }\,\Delta {\boldsymbol {x}}_{k}}}} H k + Δ x k Δ x k ⊺ y k T Δ x k − H k y k y k ⊺ H k ⊺ y k ⊺ H k y k {\displaystyle {\boldsymbol {H}}_{k}+{\frac {\Delta {\boldsymbol {x}}_{k}\Delta {\boldsymbol {x}}_{k}^{\intercal }}{{\boldsymbol {y}}_{k}^{T}\,\Delta {\boldsymbol {x}}_{k}}}-{\frac {{\boldsymbol {H}}_{k}{\boldsymbol {y}}_{k}{\boldsymbol {y}}_{k}^{\intercal }{\boldsymbol {H}}_{k}^{\intercal }}{{\boldsymbol {y}}_{k}^{\intercal }{\boldsymbol {H}}_{k}{\boldsymbol {y}}_{k}}}} BFGS法 B k + y k y k ⊺ y k ⊺ Δ x k − B k Δ x k ( B k Δ x k ) ⊺ Δ x k T B k Δ x k {\displaystyle {\boldsymbol {B}}_{k}+{\frac {{\boldsymbol {y}}_{k}{\boldsymbol {y}}_{k}^{\intercal }}{{\boldsymbol {y}}_{k}^{\intercal }\Delta {\boldsymbol {x}}_{k}}}-{\frac {{\boldsymbol {B}}_{k}\Delta {\boldsymbol {x}}_{k}({\boldsymbol {B}}_{k}\Delta {\boldsymbol {x}}_{k})^{\intercal }}{\Delta {\boldsymbol {x}}_{k}^{T}{\boldsymbol {B}}_{k}\,\Delta {\boldsymbol {x}}_{k}}}} ( I − y k Δ x k ⊺ y k ⊺ Δ x k ) ⊺ H k ( I − y k Δ x k ⊺ y k ⊺ Δ x k ) + Δ x k Δ x k ⊺ y k ⊺ Δ x k {\displaystyle \left({\boldsymbol {I}}-{\frac {{\boldsymbol {y}}_{k}\Delta {\boldsymbol {x}}_{k}^{\intercal }}{{\boldsymbol {y}}_{k}^{\intercal }\Delta {\boldsymbol {x}}_{k}}}\right)^{\intercal }{\boldsymbol {H}}_{k}\left({\boldsymbol {I}}-{\frac {{\boldsymbol {y}}_{k}\Delta {\boldsymbol {x}}_{k}^{\intercal }}{{\boldsymbol {y}}_{k}^{\intercal }\Delta {\boldsymbol {x}}_{k}}}\right)+{\frac {\Delta {\boldsymbol {x}}_{k}\Delta {\boldsymbol {x}}_{k}^{\intercal }}{{\boldsymbol {y}}_{k}^{\intercal }\,\Delta {\boldsymbol {x}}_{k}}}} ブロイデン法 B k + y k − B k Δ x k Δ x k ⊺ Δ x k Δ x k ⊺ {\displaystyle {\boldsymbol {B}}_{k}+{\frac {{\boldsymbol {y}}_{k}-{\boldsymbol {B}}_{k}\Delta {\boldsymbol {x}}_{k}}{\Delta {\boldsymbol {x}}_{k}^{\intercal }\,\Delta {\boldsymbol {x}}_{k}}}\,\Delta {\boldsymbol {x}}_{k}^{\intercal }} H k + ( Δ x k − H k y k ) Δ x k ⊺ H k Δ x k ⊺ H k y k {\displaystyle {\boldsymbol {H}}_{k}+{\frac {(\Delta {\boldsymbol {x}}_{k}-{\boldsymbol {H}}_{k}{\boldsymbol {y}}_{k})\Delta {\boldsymbol {x}}_{k}^{\intercal }{\boldsymbol {H}}_{k}}{\Delta {\boldsymbol {x}}_{k}^{\intercal }{\boldsymbol {H}}_{k}{\boldsymbol {y}}_{k}}}} Broyden family ( 1 − φ k ) B k + 1 BFGS + φ k B k + 1 DFP , φ ∈ [ 0 , 1 ] {\displaystyle (1-\varphi _{k}){\boldsymbol {B}}_{k+1}^{\text{BFGS}}+\varphi _{k}{\boldsymbol {B}}_{k+1}^{\text{DFP}},\qquad \varphi \in [0,1]} SR1法(英語版) B k + ( y k − B k Δ x k ) ( y k − B k Δ x k ) ⊺ ( y k − B k Δ x k ) ⊺ Δ x k {\displaystyle {\boldsymbol {B}}_{k}+{\frac {({\boldsymbol {y}}_{k}-{\boldsymbol {B}}_{k}\,\Delta {\boldsymbol {x}}_{k})({\boldsymbol {y}}_{k}-{\boldsymbol {B}}_{k}\,\Delta {\boldsymbol {x}}_{k})^{\intercal }}{({\boldsymbol {y}}_{k}-{\boldsymbol {B}}_{k}\,\Delta {\boldsymbol {x}}_{k})^{\intercal }\,\Delta {\boldsymbol {x}}_{k}}}} H k + ( Δ x k − H k y k ) ( Δ x k − H k y k ) ⊺ ( Δ x k − H k y k ) ⊺ y k {\displaystyle {\boldsymbol {H}}_{k}+{\frac {(\Delta {\boldsymbol {x}}_{k}-{\boldsymbol {H}}_{k}{\boldsymbol {y}}_{k})(\Delta {\boldsymbol {x}}_{k}-{\boldsymbol {H}}_{k}{\boldsymbol {y}}_{k})^{\intercal }}{(\Delta {\boldsymbol {x}}_{k}-{\boldsymbol {H}}_{k}{\boldsymbol {y}}_{k})^{\intercal }{\boldsymbol {y}}_{k}}}}
※この「手法の説明」の解説は、「準ニュートン法」の解説の一部です。
「手法の説明」を含む「準ニュートン法」の記事については、「準ニュートン法」の概要を参照ください。
- 手法の説明のページへのリンク