この 章の 目標
ニュートン法を 2 次近似の 最小化と して 導き、ヘッセ行列の リプシッツ連続性と 正則性のもとで 局所 2 次収束を 証明できる
ニュートン法が 大域的には 発散しうる 例を 挙げ、減衰ニュートン法で 直せる ことを 説明できる
非線形最小二乗問題に ガウス–ニュートン法と レーベンバーグ–マーカート法を 適用し、両者の 違いを 説明できる
セカント条件から BFGS 更新を 導き、曲率条件のもとで 正定値性が 保たれる ことを 証明できる
L-BFGS と、対数バリアと 中心パスに よる 内点法の 考え方を 説明できる
前提 :第5章 、01-calculus 第7章 (ヘッセ行列・作用素ノルム)。6.7 節では 第3章の 生産計画の 例と 第4章の 弱双対性を 使う。
第5章 で 見たように、勾配法の 反復回数は 条件数 κ \kappa κ に 比例し、悪条件の 問題では 数万回に 達する。ニュートン法は ヘッセ行列で 各方向の 曲がり方を 補正するので、変数の スケールの 影響を 受けず、解の 近くでは 正しい 桁数が 毎回 ほぼ 2 倍に なる。ロジスティック回帰など 正準リンクの 一般化線形モデルの 標準的な 計算法(IRLS)も ニュートン法である( 22 統計学 第6章 定理 6.7)。
代償は 二つある。1 回の 反復で ヘッセ行列を 作って n n n 元の 連立一次方程式を 解く 手間と、解から 遠いと 発散しうる ことである。本章では、ニュートン法の 局所的な 速さを 証明した あと、大域的な 振る 舞いを 直す減衰ニュートン法、最小二乗に 特化した ガウス–ニュートン法と レーベンバーグ–マーカート法、ヘッセ行列を 勾配から 推定する 準ニュートン法(BFGS, L-BFGS)を 学ぶ。最後に、制約付き問題に ニュートン法を 使う 内点法の 考え方を 述べる。
∥ A ∥ \lVert A \rVert ∥ A ∥ は 行列の 作用素ノルム sup ∥ x ∥ ≤ 1 ∥ A x ∥ \sup_{\lVert x \rVert \leq 1}\lVert Ax \rVert sup ∥ x ∥ ≤ 1 ∥ A x ∥ である(01-calculus 第7章。∥ A B ∥ ≤ ∥ A ∥ ∥ B ∥ \lVert AB \rVert \leq \lVert A \rVert\lVert B \rVert ∥ A B ∥ ≤ ∥ A ∥ ∥ B ∥ が 成り立つ)。線形収束・2 次収束などの 言葉は 第5章で 定義した。
6.1 ニュートン法
点 x k x_k x k の まわりで f f f を 2 次の テイラー多項式
m k ( d ) = f ( x k ) + ∇ f ( x k ) ⊤ d + 1 2 d ⊤ ∇ 2 f ( x k ) d m_k(d) = f(x_k) + \nabla f(x_k)^{\top}d + \frac{1}{2}d^{\top}\nabla^2 f(x_k)d m k ( d ) = f ( x k ) + ∇ f ( x k ) ⊤ d + 2 1 d ⊤ ∇ 2 f ( x k ) d
で 近似する。 ∇ 2 f ( x k ) ≻ 0 \nabla^2 f(x_k) \succ 0 ∇ 2 f ( x k ) ≻ 0 なら m k m_k m k は 強凸な 二次関数で、最小点は ∇ 2 f ( x k ) d = − ∇ f ( x k ) \nabla^2 f(x_k)d = -\nabla f(x_k) ∇ 2 f ( x k ) d = − ∇ f ( x k ) の 解である( 第1章 命題 1.21)。これは 方程式 ∇ f ( x ) = 0 \nabla f(x) = 0 ∇ f ( x ) = 0 を x k x_k x k で 1 次近似して 解く こと(1 変数の ニュートン–ラフソン法の 多変数版)とも 同じである。
定義 6.1 (ニュートン法, Newton's method)∇ 2 f ( x k ) \nabla^2 f(x_k) ∇ 2 f ( x k ) が 正則の とき、連立一次方程式 ∇ 2 f ( x k ) d k = − ∇ f ( x k ) \nabla^2 f(x_k)d_k = -\nabla f(x_k) ∇ 2 f ( x k ) d k = − ∇ f ( x k ) を 解いて x k + 1 = x k + d k x_{k+1} = x_k + d_k x k + 1 = x k + d k と する。 d k d_k d k を ニュートン方向 (Newton direction) と いう。
実装では 逆行列を 作らず、連立一次方程式を 解く(正定値なら コレスキー分解で 約 n 3 / 3 n^3/3 n 3 /3 回の 浮動小数点演算)。変数を x = A y + b x = Ay + b x = A y + b (A A A は 正則)と 取り替えても ニュートン法の 点列は 対応する(問題 6.2)。勾配法と 違って、変数の スケールに 依存しない。
例 6.2 f ( x ) = x − log x f(x) = x - \log x f ( x ) = x − log x (x > 0 x > 0 x > 0 、最小点 x ∗ = 1 x^{\ast} = 1 x ∗ = 1 )では f ′ ( x ) = 1 − 1 / x f'(x) = 1 - 1/x f ′ ( x ) = 1 − 1/ x , f ′ ′ ( x ) = 1 / x 2 f''(x) = 1/x^2 f ′′ ( x ) = 1/ x 2 なので、x k + 1 = x k − ( 1 − 1 / x k ) x k 2 = 2 x k − x k 2 x_{k+1} = x_k - (1 - 1/x_k)x_k^2 = 2x_k - x_k^2 x k + 1 = x k − ( 1 − 1/ x k ) x k 2 = 2 x k − x k 2 。誤差 e k = 1 − x k e_k = 1 - x_k e k = 1 − x k は e k + 1 = e k 2 e_{k+1} = e_k^2 e k + 1 = e k 2 を 満たす。 x 0 = 1 / 2 x_0 = 1/2 x 0 = 1/2 なら x k = 3 / 4 , 15 / 16 , 255 / 256 , 65535 / 65536 , … x_k = 3/4, 15/16, 255/256, 65535/65536, \dots x k = 3/4 , 15/16 , 255/256 , 65535/65536 , … で、e 5 = 2 − 32 ≈ 2.3 × 10 − 10 e_5 = 2^{-32} \approx 2.3 \times 10^{-10} e 5 = 2 − 32 ≈ 2.3 × 1 0 − 10 。正しい 桁数が 毎回 2 倍に なる。一方 x 0 = 3 x_0 = 3 x 0 = 3 なら x 1 = − 3 x_1 = -3 x 1 = − 3 で、定義域から 出てしまう(問題 6.1)。
6.2 局所 2 次収束
補題 6.3 (逆行列の 摂動) A A A を 正則な n n n 次正方行列、B B B を n n n 次正方行列とし、∥ A − 1 ∥ ∥ B − A ∥ < 1 \lVert A^{-1} \rVert\lVert B - A \rVert < 1 ∥ A − 1 ∥ ∥ B − A ∥ < 1 と する。この とき B B B は 正則で
∥ B − 1 ∥ ≤ ∥ A − 1 ∥ 1 − ∥ A − 1 ∥ ∥ B − A ∥ \lVert B^{-1} \rVert \leq \frac{\lVert A^{-1} \rVert}{1 - \lVert A^{-1} \rVert\lVert B - A \rVert} ∥ B − 1 ∥ ≤ 1 − ∥ A − 1 ∥ ∥ B − A ∥ ∥ A − 1 ∥
証明. ∥ x ∥ = ∥ A − 1 A x ∥ ≤ ∥ A − 1 ∥ ∥ A x ∥ \lVert x \rVert = \lVert A^{-1}Ax \rVert \leq \lVert A^{-1} \rVert\lVert Ax \rVert ∥ x ∥ = ∥ A − 1 A x ∥ ≤ ∥ A − 1 ∥ ∥ A x ∥ より、すべての x x x で
∥ B x ∥ ≥ ∥ A x ∥ − ∥ ( B − A ) x ∥ ≥ ( 1 ∥ A − 1 ∥ − ∥ B − A ∥ ) ∥ x ∥ \lVert Bx \rVert \geq \lVert Ax \rVert - \lVert (B - A)x \rVert \geq \Bigl(\frac{1}{\lVert A^{-1} \rVert} - \lVert B - A \rVert\Bigr)\lVert x \rVert ∥ B x ∥ ≥ ∥ A x ∥ − ∥( B − A ) x ∥ ≥ ( ∥ A − 1 ∥ 1 − ∥ B − A ∥ ) ∥ x ∥
右辺の 係数は 正なので B x = 0 ⇒ x = 0 Bx = 0 \Rightarrow x = 0 B x = 0 ⇒ x = 0 、すな わち B B B は 単射で 正則である。 x = B − 1 y x = B^{-1}y x = B − 1 y を 代入すれば 評価を 得る。 □ \square □
定理 6.4 (ニュートン法の 局所 2 次収束) U ⊂ R n U \subset \mathbb{R}^n U ⊂ R n を 開集合、 f : U → R f\colon U \to \mathbb{R} f : U → R を C 2 C^2 C 2 級とし、x ∗ ∈ U x^{\ast} \in U x ∗ ∈ U で ∇ f ( x ∗ ) = 0 \nabla f(x^{\ast}) = 0 ∇ f ( x ∗ ) = 0 かつ ∇ 2 f ( x ∗ ) \nabla^2 f(x^{\ast}) ∇ 2 f ( x ∗ ) は 正則と する。さらに r > 0 r > 0 r > 0 , M > 0 M > 0 M > 0 が あって、閉球 B ˉ = { x ∣ ∥ x − x ∗ ∥ ≤ r } ⊂ U \bar{B} = \lbrace x \mid \lVert x - x^{\ast} \rVert \leq r \rbrace \subset U B ˉ = { x ∣ ∥ x − x ∗ ∥ ≤ r } ⊂ U 上で
∥ ∇ 2 f ( x ) − ∇ 2 f ( y ) ∥ ≤ M ∥ x − y ∥ ( x , y ∈ B ˉ ) \lVert \nabla^2 f(x) - \nabla^2 f(y) \rVert \leq M\lVert x - y \rVert \quad (x, y \in \bar{B}) ∥ ∇ 2 f ( x ) − ∇ 2 f ( y )∥ ≤ M ∥ x − y ∥ ( x , y ∈ B ˉ )
と する(ヘッセ行列の リプシッツ連続性)。 β = ∥ ∇ 2 f ( x ∗ ) − 1 ∥ \beta = \lVert \nabla^2 f(x^{\ast})^{-1} \rVert β = ∥ ∇ 2 f ( x ∗ ) − 1 ∥ , δ = min ( r , 1 2 β M ) \delta = \min(r, \frac{1}{2\beta M}) δ = min ( r , 2 β M 1 ) と おく。 ∥ x 0 − x ∗ ∥ < δ \lVert x_0 - x^{\ast} \rVert < \delta ∥ x 0 − x ∗ ∥ < δ ならば、ニュートン法の 点列は すべて 定義されて ∥ x k − x ∗ ∥ < δ \lVert x_k - x^{\ast} \rVert < \delta ∥ x k − x ∗ ∥ < δ を 満たし、
∥ x k + 1 − x ∗ ∥ ≤ β M ∥ x k − x ∗ ∥ 2 ≤ 1 2 ∥ x k − x ∗ ∥ \lVert x_{k+1} - x^{\ast} \rVert \leq \beta M\lVert x_k - x^{\ast} \rVert^2 \leq \frac{1}{2}\lVert x_k - x^{\ast} \rVert ∥ x k + 1 − x ∗ ∥ ≤ β M ∥ x k − x ∗ ∥ 2 ≤ 2 1 ∥ x k − x ∗ ∥
が 成り立つ。特に x k → x ∗ x_k \to x^{\ast} x k → x ∗ で、収束は 2 次である。
証明. ∥ x − x ∗ ∥ < δ \lVert x - x^{\ast} \rVert < \delta ∥ x − x ∗ ∥ < δ と なる x x x に ついて、 x + = x − ∇ 2 f ( x ) − 1 ∇ f ( x ) x^{+} = x - \nabla^2 f(x)^{-1}\nabla f(x) x + = x − ∇ 2 f ( x ) − 1 ∇ f ( x ) が 定義されて ∥ x + − x ∗ ∥ ≤ β M ∥ x − x ∗ ∥ 2 \lVert x^{+} - x^{\ast} \rVert \leq \beta M\lVert x - x^{\ast} \rVert^2 ∥ x + − x ∗ ∥ ≤ β M ∥ x − x ∗ ∥ 2 と なる ことを 示せばよい(この とき右辺は β M δ ∥ x − x ∗ ∥ ≤ 1 2 ∥ x − x ∗ ∥ \beta M\delta\lVert x - x^{\ast} \rVert \leq \frac{1}{2}\lVert x - x^{\ast} \rVert β M δ ∥ x − x ∗ ∥ ≤ 2 1 ∥ x − x ∗ ∥ 以下なので、帰納法で すべての 主張が 従う)。
(i) ∥ ∇ 2 f ( x ) − ∇ 2 f ( x ∗ ) ∥ ≤ M ∥ x − x ∗ ∥ < M δ ≤ 1 2 β \lVert \nabla^2 f(x) - \nabla^2 f(x^{\ast}) \rVert \leq M\lVert x - x^{\ast} \rVert < M\delta \leq \frac{1}{2\beta} ∥ ∇ 2 f ( x ) − ∇ 2 f ( x ∗ )∥ ≤ M ∥ x − x ∗ ∥ < M δ ≤ 2 β 1 なので、補題 6.3(A = ∇ 2 f ( x ∗ ) A = \nabla^2 f(x^{\ast}) A = ∇ 2 f ( x ∗ ) , B = ∇ 2 f ( x ) B = \nabla^2 f(x) B = ∇ 2 f ( x ) )より ∇ 2 f ( x ) \nabla^2 f(x) ∇ 2 f ( x ) は 正則で、 ∥ ∇ 2 f ( x ) − 1 ∥ ≤ β / ( 1 − 1 2 ) = 2 β \lVert \nabla^2 f(x)^{-1} \rVert \leq \beta/(1 - \frac{1}{2}) = 2\beta ∥ ∇ 2 f ( x ) − 1 ∥ ≤ β / ( 1 − 2 1 ) = 2 β 。
(ii) h = x ∗ − x h = x^{\ast} - x h = x ∗ − x 、R = ∇ f ( x ∗ ) − ∇ f ( x ) − ∇ 2 f ( x ) h R = \nabla f(x^{\ast}) - \nabla f(x) - \nabla^2 f(x)h R = ∇ f ( x ∗ ) − ∇ f ( x ) − ∇ 2 f ( x ) h と おく。単位ベクトル w w w に ついて φ ( s ) = ⟨ w , ∇ f ( x + s h ) ⟩ \varphi(s) = \langle w, \nabla f(x + sh) \rangle φ ( s ) = ⟨ w , ∇ f ( x + s h )⟩ (0 ≤ s ≤ 1 0 \leq s \leq 1 0 ≤ s ≤ 1 。線分は B ˉ \bar{B} B ˉ に 含まれる)は C 1 C^1 C 1 級で、連鎖律より φ ′ ( s ) = ⟨ w , ∇ 2 f ( x + s h ) h ⟩ \varphi'(s) = \langle w, \nabla^2 f(x + sh)h \rangle φ ′ ( s ) = ⟨ w , ∇ 2 f ( x + s h ) h ⟩ 。微分積分学の 基本定理( 01-calculus 第5章 定理 5.13)より
⟨ w , R ⟩ = φ ( 1 ) − φ ( 0 ) − ⟨ w , ∇ 2 f ( x ) h ⟩ = ∫ 0 1 ⟨ w , ( ∇ 2 f ( x + s h ) − ∇ 2 f ( x ) ) h ⟩ d s ≤ ∫ 0 1 M s ∥ h ∥ 2 d s = M 2 ∥ h ∥ 2 \langle w, R \rangle = \varphi(1) - \varphi(0) - \langle w, \nabla^2 f(x)h \rangle = \int_0^1 \bigl\langle w, (\nabla^2 f(x + sh) - \nabla^2 f(x))h \bigr\rangle\,ds \leq \int_0^1 Ms\lVert h \rVert^2\,ds = \frac{M}{2}\lVert h \rVert^2 ⟨ w , R ⟩ = φ ( 1 ) − φ ( 0 ) − ⟨ w , ∇ 2 f ( x ) h ⟩ = ∫ 0 1 ⟨ w , ( ∇ 2 f ( x + s h ) − ∇ 2 f ( x )) h ⟩ d s ≤ ∫ 0 1 M s ∥ h ∥ 2 d s = 2 M ∥ h ∥ 2
R ≠ 0 R \neq 0 R = 0 なら w = R / ∥ R ∥ w = R/\lVert R \rVert w = R / ∥ R ∥ と して ∥ R ∥ ≤ M 2 ∥ x − x ∗ ∥ 2 \lVert R \rVert \leq \frac{M}{2}\lVert x - x^{\ast} \rVert^2 ∥ R ∥ ≤ 2 M ∥ x − x ∗ ∥ 2 。
(iii) ∇ f ( x ∗ ) = 0 \nabla f(x^{\ast}) = 0 ∇ f ( x ∗ ) = 0 より x + − x ∗ = ∇ 2 f ( x ) − 1 ( ∇ 2 f ( x ) ( x − x ∗ ) − ∇ f ( x ) ) = ∇ 2 f ( x ) − 1 R x^{+} - x^{\ast} = \nabla^2 f(x)^{-1}\bigl(\nabla^2 f(x)(x - x^{\ast}) - \nabla f(x)\bigr) = \nabla^2 f(x)^{-1}R x + − x ∗ = ∇ 2 f ( x ) − 1 ( ∇ 2 f ( x ) ( x − x ∗ ) − ∇ f ( x ) ) = ∇ 2 f ( x ) − 1 R 。(i)(ii) より ∥ x + − x ∗ ∥ ≤ 2 β ⋅ M 2 ∥ x − x ∗ ∥ 2 = β M ∥ x − x ∗ ∥ 2 \lVert x^{+} - x^{\ast} \rVert \leq 2\beta \cdot \frac{M}{2}\lVert x - x^{\ast} \rVert^2 = \beta M\lVert x - x^{\ast} \rVert^2 ∥ x + − x ∗ ∥ ≤ 2 β ⋅ 2 M ∥ x − x ∗ ∥ 2 = β M ∥ x − x ∗ ∥ 2 。□ \square □
∇ 2 f ( x ∗ ) ≻ 0 \nabla^2 f(x^{\ast}) \succ 0 ∇ 2 f ( x ∗ ) ≻ 0 なら x ∗ x^{\ast} x ∗ は 狭義の 局所最小点である(第1章 定理 1.19)。仮定の 役割を 確かめておく。
正則性 :f ( x ) = x 4 f(x) = x^4 f ( x ) = x 4 では f ′ ′ ( 0 ) = 0 f''(0) = 0 f ′′ ( 0 ) = 0 で、ニュートン法は x k + 1 = x k − 4 x k 3 12 x k 2 = 2 3 x k x_{k+1} = x_k - \frac{4x_k^3}{12x_k^2} = \frac{2}{3}x_k x k + 1 = x k − 12 x k 2 4 x k 3 = 3 2 x k と なり、線形収束しかしない。
初期点の 近さ :定理の δ \delta δ は 保守的な ことが 多い。例 6.2 では、定理は ∣ x 0 − 1 ∣ \lvert x_0 - 1 \rvert ∣ x 0 − 1 ∣ が 0.15 0.15 0.15 程度以下なら 収束を 保証するが(問題 6.1)、実際には 0 < x 0 < 2 0 < x_0 < 2 0 < x 0 < 2 で 収束する。それでも、遠い 初期点で 収束が 保証されない ことは 本質的である(6.3 節)。
最小点とは 限らない :定理は ∇ f ( x ∗ ) = 0 \nabla f(x^{\ast}) = 0 ∇ f ( x ∗ ) = 0 と 正則性しか 使わないので、極大点や 鞍点にも 同じ 速さで 収束する。
注意
ニュートン法は「勾配が 0 0 0 の 点」を 探す方法で あって、最小化の 方法ではない。凸でない 関数では、ヘッセ行列が 正定値でない 点で ニュートン方向が 上り方向に なることが あり、極大点や 鞍点に 収束する こともある(問題 6.3)。ヘッセ行列が 正定値でない ときは、 ∇ 2 f ( x k ) + τ I \nabla^2 f(x_k) + \tau I ∇ 2 f ( x k ) + τ I (τ > 0 \tau > 0 τ > 0 )に 取り替えて 正定値に する、信頼領域法を 使う、などの 修正が 必要である(Nocedal–Wright, Numerical Optimization 第2版の 第3・4章。本章で 引く 同書の 章番号は 第2版の もの)。
6.3 大域的な 振る 舞いと 減衰ニュートン法
例 6.5 (狭義凸でも 発散する) f ( x ) = 1 + x 2 f(x) = \sqrt{1 + x^2} f ( x ) = 1 + x 2 は f ′ ′ ( x ) = ( 1 + x 2 ) − 3 / 2 > 0 f''(x) = (1 + x^2)^{-3/2} > 0 f ′′ ( x ) = ( 1 + x 2 ) − 3/2 > 0 で 狭義凸、最小点は 0 0 0 だけである(∣ x ∣ → ∞ \lvert x \rvert \to \infty ∣ x ∣ → ∞ で f ′ ′ ( x ) → 0 f''(x) \to 0 f ′′ ( x ) → 0 なので 強凸ではない)。 f ′ ( x ) = x / 1 + x 2 f'(x) = x/\sqrt{1 + x^2} f ′ ( x ) = x / 1 + x 2 より f ′ ( x ) / f ′ ′ ( x ) = x ( 1 + x 2 ) f'(x)/f''(x) = x(1 + x^2) f ′ ( x ) / f ′′ ( x ) = x ( 1 + x 2 ) で、ニュートン法は
x k + 1 = x k − x k ( 1 + x k 2 ) = − x k 3 x_{k+1} = x_k - x_k(1 + x_k^2) = -x_k^3 x k + 1 = x k − x k ( 1 + x k 2 ) = − x k 3
と なる。 ∣ x 0 ∣ < 1 \lvert x_0 \rvert < 1 ∣ x 0 ∣ < 1 なら 非常に 速く 0 0 0 に 収束するが( x 0 = 0.5 x_0 = 0.5 x 0 = 0.5 から − 0.125 , 0.00195 , − 7.5 × 10 − 9 -0.125, 0.00195, -7.5 \times 10^{-9} − 0.125 , 0.00195 , − 7.5 × 1 0 − 9 )、∣ x 0 ∣ = 1 \lvert x_0 \rvert = 1 ∣ x 0 ∣ = 1 なら ± 1 \pm 1 ± 1 を 往復し、 ∣ x 0 ∣ > 1 \lvert x_0 \rvert > 1 ∣ x 0 ∣ > 1 なら 発散する( x 0 = 1.1 x_0 = 1.1 x 0 = 1.1 から − 1.331 , 2.358 , − 13.11 , 2253 , … -1.331, 2.358, -13.11, 2253, \dots − 1.331 , 2.358 , − 13.11 , 2253 , … )。遠くでは f f f が ほぼ ∣ x ∣ \lvert x \rvert ∣ x ∣ のように 平らで、2 次近似の 最小点が はるか 遠くに 出るからである。
対策は、ニュートン方向を「進む方向」と してだけ 使い、進む 距離は 直線探索で 決める ことである。
定義 6.6 (減衰ニュートン法, damped Newton method)∇ 2 f ( x k ) ≻ 0 \nabla^2 f(x_k) \succ 0 ∇ 2 f ( x k ) ≻ 0 の とき、ニュートン方向 d k d_k d k に 沿って、 t ˉ = 1 \bar{t} = 1 t ˉ = 1 から 始める アルミホ条件の バックトラッキング(第5章 定義 5.5)で t k t_k t k を 選び、 x k + 1 = x k + t k d k x_{k+1} = x_k + t_kd_k x k + 1 = x k + t k d k と する。
∇ 2 f ( x k ) ≻ 0 \nabla^2 f(x_k) \succ 0 ∇ 2 f ( x k ) ≻ 0 で ∇ f ( x k ) ≠ 0 \nabla f(x_k) \neq 0 ∇ f ( x k ) = 0 なら ∇ f ( x k ) ⊤ d k = − ∇ f ( x k ) ⊤ ∇ 2 f ( x k ) − 1 ∇ f ( x k ) < 0 \nabla f(x_k)^{\top}d_k = -\nabla f(x_k)^{\top}\nabla^2 f(x_k)^{-1}\nabla f(x_k) < 0 ∇ f ( x k ) ⊤ d k = − ∇ f ( x k ) ⊤ ∇ 2 f ( x k ) − 1 ∇ f ( x k ) < 0 なので、d k d_k d k は 降下方向で、バックトラッキングは 有限回で 終わる(第5章 命題 5.6)。 λ ( x ) = ( ∇ f ( x ) ⊤ ∇ 2 f ( x ) − 1 ∇ f ( x ) ) 1 / 2 \lambda(x) = \bigl(\nabla f(x)^{\top}\nabla^2 f(x)^{-1}\nabla f(x)\bigr)^{1/2} λ ( x ) = ( ∇ f ( x ) ⊤ ∇ 2 f ( x ) − 1 ∇ f ( x ) ) 1/2 を ニュートン減少量 (Newton decrement) と いう。 x x x での 2 次近似を m ( d ) m(d) m ( d ) と すると λ ( x ) 2 / 2 = f ( x ) − min d m ( d ) \lambda(x)^2/2 = f(x) - \min_d m(d) λ ( x ) 2 /2 = f ( x ) − min d m ( d ) は 2 次近似で 見込まれる 減少量なので、停止判定に 使われる。
例 6.5 で x 0 = 3 x_0 = 3 x 0 = 3 から、c = 1 / 4 c = 1/4 c = 1/4 , β = 1 / 2 \beta = 1/2 β = 1/2 の 減衰ニュートン法を 行うと、 t k = 1 / 8 , 1 / 2 , 1 , 1 , 1 t_k = 1/8, 1/2, 1, 1, 1 t k = 1/8 , 1/2 , 1 , 1 , 1 と 選ばれて x k = − 0.75 , − 0.164 , 0.0044 , − 8.6 × 10 − 8 , 6.4 × 10 − 22 x_k = -0.75, -0.164, 0.0044, -8.6 \times 10^{-8}, 6.4 \times 10^{-22} x k = − 0.75 , − 0.164 , 0.0044 , − 8.6 × 1 0 − 8 , 6.4 × 1 0 − 22 と なる(多倍長の 計算で 確かめた。最後の 値は 倍精度では 桁落ちで 数 % ずれる)。最初は 短い 歩幅で 近づき、近づくと t = 1 t = 1 t = 1 が 受け入れられて 純粋な ニュートン法の 速さに 戻る。この 振る 舞いは 一般に 成り立つ。
定理 6.7 (減衰ニュートン法の 2 段階の 収束、主張) f : R n → R f\colon \mathbb{R}^n \to \mathbb{R} f : R n → R を C 2 C^2 C 2 級の 凸関数とし、初期点の 下位集合 S = { x ∣ f ( x ) ≤ f ( x 0 ) } S = \lbrace x \mid f(x) \leq f(x_0) \rbrace S = { x ∣ f ( x ) ≤ f ( x 0 )} 上で μ I ⪯ ∇ 2 f ( x ) ⪯ L I \mu I \preceq \nabla^2 f(x) \preceq LI μ I ⪯ ∇ 2 f ( x ) ⪯ L I (μ > 0 \mu > 0 μ > 0 )を 満たし、 ∇ 2 f \nabla^2 f ∇ 2 f が S S S 上で リプシッツ連続であると する。アルミホ条件の 定数を 0 < c < 1 / 2 0 < c < 1/2 0 < c < 1/2 と すると、減衰ニュートン法は 最小点 x ∗ x^{\ast} x ∗ に 収束する。さらに、有限回の 反復の あとは t k = 1 t_k = 1 t k = 1 が 常に 受け入れられ、収束は 2 次である。 f ( x k ) − p ∗ ≤ ε f(x_k) - p^{\ast} \leq \varepsilon f ( x k ) − p ∗ ≤ ε までの 反復回数は f ( x 0 ) − p ∗ γ + log 2 log 2 ε 0 ε \frac{f(x_0) - p^{\ast}}{\gamma} + \log_2\log_2\frac{\varepsilon_0}{\varepsilon} γ f ( x 0 ) − p ∗ + log 2 log 2 ε ε 0 以下である(γ , ε 0 \gamma, \varepsilon_0 γ , ε 0 は μ , L \mu, L μ , L 、ヘッセ行列の リプシッツ定数と 直線探索の 定数 c , β c, \beta c , β で 決まる 正の 数。Boyd–Vandenberghe, Convex Optimization 9.5 節)。
log 2 log 2 ( ε 0 / ε ) \log_2\log_2(\varepsilon_0/\varepsilon) log 2 log 2 ( ε 0 / ε ) は ε = 10 − 15 ε 0 \varepsilon = 10^{-15}\varepsilon_0 ε = 1 0 − 15 ε 0 でも 6 6 6 程度で、2 次収束の 段階は 実際上数回で 終わる。 c < 1 / 2 c < 1/2 c < 1/2 が 要るのは、二次関数では t = 1 t = 1 t = 1 の 一歩に よる 減少量が ちょうど λ ( x ) 2 / 2 \lambda(x)^2/2 λ ( x ) 2 /2 で、アルミホ条件 f ( x + d ) ≤ f ( x ) − c λ ( x ) 2 f(x + d) \leq f(x) - c\lambda(x)^2 f ( x + d ) ≤ f ( x ) − c λ ( x ) 2 が c ≤ 1 / 2 c \leq 1/2 c ≤ 1/2 の ときしか 成り立たないからである( c > 1 / 2 c > 1/2 c > 1/2 では 解の 近くでも t = 1 t = 1 t = 1 が 受け入れられず、収束は 線形に 落ちる)。前半の 段階でも 線形収束する ことは、第5章と 同じ 議論で 示せる(問題 6.7)。
6.4 ガウス–ニュートン法と レーベンバーグ–マーカート法
測定値に 非線形な モデルを あては める 問題(薬の 血中濃度の 減衰、センサーの 較正曲線、需要の 飽和曲線など)は、 r : R n → R m r\colon \mathbb{R}^n \to \mathbb{R}^m r : R n → R m (残差、m ≥ n m \geq n m ≥ n )に ついて
f ( x ) = 1 2 ∥ r ( x ) ∥ 2 = 1 2 ∑ i = 1 m r i ( x ) 2 f(x) = \frac{1}{2}\lVert r(x) \rVert^2 = \frac{1}{2}\sum_{i=1}^{m}r_i(x)^2 f ( x ) = 2 1 ∥ r ( x ) ∥ 2 = 2 1 i = 1 ∑ m r i ( x ) 2
を 最小化する 非線形最小二乗問題に なる。ヤコビ行列を J ( x ) = ( ∂ r i / ∂ x j ) J(x) = (\partial r_i/\partial x_j) J ( x ) = ( ∂ r i / ∂ x j ) (m × n m \times n m × n )と すると
∇ f ( x ) = J ( x ) ⊤ r ( x ) , ∇ 2 f ( x ) = J ( x ) ⊤ J ( x ) + ∑ i = 1 m r i ( x ) ∇ 2 r i ( x ) \nabla f(x) = J(x)^{\top}r(x), \qquad \nabla^2 f(x) = J(x)^{\top}J(x) + \sum_{i=1}^{m}r_i(x)\nabla^2 r_i(x) ∇ f ( x ) = J ( x ) ⊤ r ( x ) , ∇ 2 f ( x ) = J ( x ) ⊤ J ( x ) + i = 1 ∑ m r i ( x ) ∇ 2 r i ( x )
である。残差が 小さい ときや r r r が 一次関数に 近いときは、第 2 項が 小さい。
定義 6.8 (ガウス–ニュートン法・ レーベンバーグ–マーカート法)ヘッセ行列の 第 2 項を 無視して J k ⊤ J k d = − J k ⊤ r k J_k^{\top}J_kd = -J_k^{\top}r_k J k ⊤ J k d = − J k ⊤ r k (J k = J ( x k ) J_k = J(x_k) J k = J ( x k ) , r k = r ( x k ) r_k = r(x_k) r k = r ( x k ) )を 解き、 x k + 1 = x k + d x_{k+1} = x_k + d x k + 1 = x k + d と する 方法を ガウス–ニュートン法 (Gauss–Newton method) と いう。 λ > 0 \lambda > 0 λ > 0 に ついて ( J k ⊤ J k + λ I ) d = − J k ⊤ r k (J_k^{\top}J_k + \lambda I)d = -J_k^{\top}r_k ( J k ⊤ J k + λ I ) d = − J k ⊤ r k を 解く 方法を レーベンバーグ–マーカート法 (Levenberg–Marquardt method) と いう。
ガウス–ニュートン方向は、線形化した 残差の 最小二乗問題 min d ∥ J k d + r k ∥ 2 \min_d\lVert J_kd + r_k \rVert^2 min d ∥ J k d + r k ∥ 2 の 解である( 02-linear-algebra 第7章 定理 7.19 の 正規方程式)。2 階微分が 要らず、 J k ⊤ J k J_k^{\top}J_k J k ⊤ J k は 常に 半正定値である。
命題 6.9 g = J ⊤ r ≠ 0 g = J^{\top}r \neq 0 g = J ⊤ r = 0 と する。
J J J の 列が 一次独立なら、ガウス–ニュートン方向 d G N = − ( J ⊤ J ) − 1 g d_{\mathrm{GN}} = -(J^{\top}J)^{-1}g d GN = − ( J ⊤ J ) − 1 g は 降下方向である。
λ > 0 \lambda > 0 λ > 0 なら、d ( λ ) = − ( J ⊤ J + λ I ) − 1 g d(\lambda) = -(J^{\top}J + \lambda I)^{-1}g d ( λ ) = − ( J ⊤ J + λ I ) − 1 g は 降下方向であり、 ∥ d ∥ ≤ ∥ d ( λ ) ∥ \lVert d \rVert \leq \lVert d(\lambda) \rVert ∥ d ∥ ≤ ∥ d ( λ )∥ の 範囲で ∥ J d + r ∥ 2 \lVert Jd + r \rVert^2 ∥ J d + r ∥ 2 を 最小に する。
証明. 1・2 の 前半:対称行列 P = J ⊤ J P = J^{\top}J P = J ⊤ J (1 の 場合。 v ⊤ P v = ∥ J v ∥ 2 v^{\top}Pv = \lVert Jv \rVert^2 v ⊤ P v = ∥ J v ∥ 2 で 列が 一次独立だから)または P = J ⊤ J + λ I P = J^{\top}J + \lambda I P = J ⊤ J + λ I (2 の 場合)は 正定値なので P − 1 P^{-1} P − 1 も 正定値で、 g ⊤ d = − g ⊤ P − 1 g < 0 g^{\top}d = -g^{\top}P^{-1}g < 0 g ⊤ d = − g ⊤ P − 1 g < 0 。2 の 後半: d ( λ ) d(\lambda) d ( λ ) は 強凸な 二次関数 q ( d ) = ∥ J d + r ∥ 2 + λ ∥ d ∥ 2 q(d) = \lVert Jd + r \rVert^2 + \lambda\lVert d \rVert^2 q ( d ) = ∥ J d + r ∥ 2 + λ ∥ d ∥ 2 の 最小点である( ∇ q = 2 ( J ⊤ J d + J ⊤ r + λ d ) \nabla q = 2(J^{\top}Jd + J^{\top}r + \lambda d) ∇ q = 2 ( J ⊤ J d + J ⊤ r + λ d ) )。∥ d ∥ ≤ ∥ d ( λ ) ∥ \lVert d \rVert \leq \lVert d(\lambda) \rVert ∥ d ∥ ≤ ∥ d ( λ )∥ なら ∥ J d + r ∥ 2 = q ( d ) − λ ∥ d ∥ 2 ≥ q ( d ( λ ) ) − λ ∥ d ∥ 2 ≥ ∥ J d ( λ ) + r ∥ 2 \lVert Jd + r \rVert^2 = q(d) - \lambda\lVert d \rVert^2 \geq q(d(\lambda)) - \lambda\lVert d \rVert^2 \geq \lVert Jd(\lambda) + r \rVert^2 ∥ J d + r ∥ 2 = q ( d ) − λ ∥ d ∥ 2 ≥ q ( d ( λ )) − λ ∥ d ∥ 2 ≥ ∥ J d ( λ ) + r ∥ 2 。□ \square □
λ \lambda λ が 小さければ ガウス–ニュートン法に 近く、 λ \lambda λ が 大きければ d ( λ ) ≈ − g / λ d(\lambda) \approx -g/\lambda d ( λ ) ≈ − g / λ と 短い 勾配方向に なる(問題 6.4)。命題 6.9 の 2 は、レーベンバーグ–マーカート法が「線形化が 信頼できる 半径 ∥ d ( λ ) ∥ \lVert d(\lambda) \rVert ∥ d ( λ )∥ の 中で 最良の 一歩」を とる 信頼領域法 (trust-region method) である ことを 意味する。実装では、 f f f が 減れば 一歩を 採用して λ \lambda λ を 小さくし(線形化を 信頼する)、減らなければ 一歩を 捨てて λ \lambda λ を 大きくする。収束に ついて、ガウス–ニュートン法は 解での 残差が 0 0 0 で J J J の 列が 一次独立なら 局所的に 2 次収束し、残差が 小さければ 速く 線形収束するが、残差が 大きいと 収束しない こともある(主張。Nocedal–Wright 第10章)。
次の コードは、 y = 10 e − 0.5 t y = 10e^{-0.5t} y = 10 e − 0.5 t に 雑音を 加えた 10 点の データに y ≈ a e − b t y \approx ae^{-bt} y ≈ a e − b t を あてはめる。
import numpy as np
rng = np.random.default_rng(0)
t = np.arange(10.0) # 計測時刻
y = 10.0 * np.exp(-0.5 * t) + 0.2 * rng.standard_normal(10)
r = lambda p: p[0] * np.exp(-p[1] * t) - y # 残差、p = (a, b)
J = lambda p: np.column_stack([np.exp(-p[1] * t), -p[0] * t * np.exp(-p[1] * t)])
F = lambda p: 0.5 * np.sum(r(p) ** 2)
def gauss_newton(p, iters=20):
for _ in range(iters):
p = p + np.linalg.lstsq(J(p), -r(p), rcond=None)[0]
return p
def levenberg_marquardt(p, iters=20, lam=1.0):
for _ in range(iters):
Jp = J(p)
d = np.linalg.solve(Jp.T @ Jp + lam * np.eye(2), -Jp.T @ r(p))
if F(p + d) < F(p):
p, lam = p + d, lam / 10 # 成功:ガウス–ニュートン法に近づける
else:
lam = lam * 10 # 失敗:短い勾配方向に近づける
return p
for p0 in [(1.0, 0.0), (1.0, 1.0)]:
p_gn, p_lm = gauss_newton(np.array(p0)), levenberg_marquardt(np.array(p0))
print(f"start {p0}: GN {np.round(p_gn, 4)} F={F(p_gn):.4f}"
f" LM {np.round(p_lm, 4)} F={F(p_lm):.4f}")
start (1.0, 0.0): GN [10.0022 0.4933] F=0.1066 LM [10.0022 0.4933] F=0.1066
start (1.0, 1.0): GN [-0. -7.1409] F=79.8532 LM [10.0022 0.4933] F=0.1066
( a , b ) = ( 1 , 0 ) (a, b) = (1, 0) ( a , b ) = ( 1 , 0 ) からは どちらも 最小点 ( 10.0022 , 0.4933 ) (10.0022, 0.4933) ( 10.0022 , 0.4933 ) に 着く。 ( 1 , 1 ) (1, 1) ( 1 , 1 ) からの ガウス–ニュートン法は、最初の 一歩で b ≈ − 7.14 b \approx -7.14 b ≈ − 7.14 (減衰ではなく 急増する モデル)に 飛んで F ≈ 3.2 × 10 57 F \approx 3.2 \times 10^{57} F ≈ 3.2 × 1 0 57 と なり、その 後 a ≈ 0 a \approx 0 a ≈ 0 (− 0. -0. − 0. は − 1.7 × 10 − 29 -1.7 \times 10^{-29} − 1.7 × 1 0 − 29 を 丸めた 表示)で 動けなくなる。この ときモデル a e 7.14 t ae^{7.14t} a e 7.14 t は、最後の 時刻 t = 9 t = 9 t = 9 の 測定値(雑音で 負の − 0.14 -0.14 − 0.14 に なっている)だけに 合い、ほかの 時刻では ほぼ 0 0 0 である。J J J の 第 1 列 e 7.14 t e^{7.14t} e 7.14 t は 1 1 1 から 約 8 × 10 27 8 \times 10^{27} 8 × 1 0 27 まで 変わり、 J J J の 2 つの 特異値は 約 8 × 10 27 8 \times 10^{27} 8 × 1 0 27 と 1 × 10 − 4 1 \times 10^{-4} 1 × 1 0 − 4 に なる。 lstsq は 小さい ほうの 特異値を 数値的に 0 0 0 と みなして 捨てるので、一歩は 事実上 0 0 0 に なる(勾配は 0 0 0 でなく、停留点で 止まったのではない)。レーベンバーグ–マーカート法は 値が 増える 一歩を 捨てるので、同じ 初期点から 最小点に 着く。
ヒント
実務では
曲線の あてはめでは、初期値の 選び方が 結果を 左右する。 y > 0 y > 0 y > 0 なら log y ≈ log a − b t \log y \approx \log a - bt log y ≈ log a − b t に 直線を あてはめて 初期値を 作る、と いった モデルに 合わせた 工夫が 有効である。収束したら 残差を 時刻に 対して プロットし、系統的な ずれが ないかを 確かめる(モデルの 誤りは 最適化では 直らない)。パラメータの 桁が 大きく 違う ときは、スケールを そろえると J ⊤ J J^{\top}J J ⊤ J の 条件数が 改善する。パラメータの 不確かさの 評価には、最小点での J ⊤ J J^{\top}J J ⊤ J から 作る 近似的な 共分散が よく 使われる(線形の 場合は 22 統計学 第5章 )。
6.5 準ニュートン法と BFGS 更新
ヘッセ行列が 計算できない、または 計算が 高すぎる とき、勾配の 変化から ヘッセ行列を 推定しながら 進むのが 準ニュートン法 (quasi-Newton method) である。s k = x k + 1 − x k s_k = x_{k+1} - x_k s k = x k + 1 − x k , y k = ∇ f ( x k + 1 ) − ∇ f ( x k ) y_k = \nabla f(x_{k+1}) - \nabla f(x_k) y k = ∇ f ( x k + 1 ) − ∇ f ( x k ) と おく。
定義 6.10 (セカント条件, secant condition)対称行列 B k + 1 B_{k+1} B k + 1 が B k + 1 s k = y k B_{k+1}s_k = y_k B k + 1 s k = y k を 満たすとき、 B k + 1 B_{k+1} B k + 1 は セカント条件を 満たすと いう。
微分積分学の 基本定理を 成分ごとに 使うと y k = ( ∫ 0 1 ∇ 2 f ( x k + τ s k ) d τ ) s k y_k = \bigl(\int_0^1 \nabla^2 f(x_k + \tau s_k)\ d\tau\bigr)s_k y k = ( ∫ 0 1 ∇ 2 f ( x k + τ s k ) d τ ) s k なので、セカント条件は「B k + 1 B_{k+1} B k + 1 が 線分上の 平均の ヘッセ行列と s k s_k s k 方向で 一致する」ことを 要求する。1 変数なら B k + 1 = ( f ′ ( x k + 1 ) − f ′ ( x k ) ) / ( x k + 1 − x k ) B_{k+1} = (f'(x_{k+1}) - f'(x_k))/(x_{k+1} - x_k) B k + 1 = ( f ′ ( x k + 1 ) − f ′ ( x k )) / ( x k + 1 − x k ) で、割線(セカント)の 傾きである。
正定値な B k + 1 B_{k+1} B k + 1 が セカント条件を 満たすには、 s k ⊤ y k = s k ⊤ B k + 1 s k > 0 s_k^{\top}y_k = s_k^{\top}B_{k+1}s_k > 0 s k ⊤ y k = s k ⊤ B k + 1 s k > 0 でなければならない。この 曲率条件 (curvature condition) s k ⊤ y k > 0 s_k^{\top}y_k > 0 s k ⊤ y k > 0 は、f f f が μ \mu μ -強凸なら s k ⊤ y k ≥ μ ∥ s k ∥ 2 s_k^{\top}y_k \geq \mu\lVert s_k \rVert^2 s k ⊤ y k ≥ μ ∥ s k ∥ 2 (第2章 定理 2.22 の 3)で 自動的に 成り立ち、一般の f f f では 次の 直線探索で 保証される。
定義 6.11 (ウルフ条件, Wolfe conditions)0 < c 1 < c 2 < 1 0 < c_1 < c_2 < 1 0 < c 1 < c 2 < 1 とし、d d d を 降下方向と する。ステップ幅 t t t が アルミホ条件 f ( x + t d ) ≤ f ( x ) + c 1 t ∇ f ( x ) ⊤ d f(x + td) \leq f(x) + c_1t\nabla f(x)^{\top}d f ( x + t d ) ≤ f ( x ) + c 1 t ∇ f ( x ) ⊤ d と ∇ f ( x + t d ) ⊤ d ≥ c 2 ∇ f ( x ) ⊤ d \nabla f(x + td)^{\top}d \geq c_2\nabla f(x)^{\top}d ∇ f ( x + t d ) ⊤ d ≥ c 2 ∇ f ( x ) ⊤ d を 満たすとき、 ウルフ条件 を 満たすと いう。
t t t が ウルフ条件を 満たせば、 s = t d s = td s = t d , y = ∇ f ( x + t d ) − ∇ f ( x ) y = \nabla f(x + td) - \nabla f(x) y = ∇ f ( x + t d ) − ∇ f ( x ) に ついて s ⊤ y = t ( ∇ f ( x + t d ) − ∇ f ( x ) ) ⊤ d ≥ t ( c 2 − 1 ) ∇ f ( x ) ⊤ d > 0 s^{\top}y = t(\nabla f(x + td) - \nabla f(x))^{\top}d \geq t(c_2 - 1)\nabla f(x)^{\top}d > 0 s ⊤ y = t ( ∇ f ( x + t d ) − ∇ f ( x ) ) ⊤ d ≥ t ( c 2 − 1 ) ∇ f ( x ) ⊤ d > 0 である。f f f が C 1 C^1 C 1 級で その 直線上で 下に 有界なら、ウルフ条件を 満たす t t t は 存在する(主張。Nocedal–Wright 第3章)。準ニュートン法では c 2 = 0.9 c_2 = 0.9 c 2 = 0.9 が よく 使われる。
セカント条件だけでは B k + 1 B_{k+1} B k + 1 は 決まらない( n ( n + 1 ) / 2 n(n + 1)/2 n ( n + 1 ) /2 個の 未知数に n n n 個の 式)。そこで B k B_k B k を 少しだけ修正する。
BFGS 更新の 導出. B k B_k B k を 対称正定値とし、 B k + 1 B_{k+1} B k + 1 を 対称な 2 階の 修正 B k + 1 = B k + a u u ⊤ + b v v ⊤ B_{k+1} = B_k + a\ uu^{\top} + b\ vv^{\top} B k + 1 = B k + a u u ⊤ + b v v ⊤ (a , b ∈ R a, b \in \mathbb{R} a , b ∈ R , u , v ∈ R n u, v \in \mathbb{R}^n u , v ∈ R n )の 形で 探す。セカント条件は B k s k + a ( u ⊤ s k ) u + b ( v ⊤ s k ) v = y k B_ks_k + a(u^{\top}s_k)u + b(v^{\top}s_k)v = y_k B k s k + a ( u ⊤ s k ) u + b ( v ⊤ s k ) v = y k と なる。左辺の B k s k B_ks_k B k s k を 打ち消して y k y_k y k を 作る ために u = y k u = y_k u = y k , v = B k s k v = B_ks_k v = B k s k とし、a ( y k ⊤ s k ) = 1 a(y_k^{\top}s_k) = 1 a ( y k ⊤ s k ) = 1 , b ( s k ⊤ B k s k ) = − 1 b(s_k^{\top}B_ks_k) = -1 b ( s k ⊤ B k s k ) = − 1 と すれば 満たされる。こうして
B k + 1 = B k − B k s k s k ⊤ B k s k ⊤ B k s k + y k y k ⊤ y k ⊤ s k (6.1) B_{k+1} = B_k - \frac{B_ks_ks_k^{\top}B_k}{s_k^{\top}B_ks_k} + \frac{y_ky_k^{\top}}{y_k^{\top}s_k} \tag{6.1} B k + 1 = B k − s k ⊤ B k s k B k s k s k ⊤ B k + y k ⊤ s k y k y k ⊤ ( 6.1 )
を 得る。第 2 項は B k B_k B k が もっていた s k s_k s k 方向の 曲率の 情報を 取り除き、第 3 項は 観測した 曲率 y k y_k y k を 入れる。これを BFGS 更新 (ブロイデン–フレッチャー–ゴールドファーブ–シャノ)と いう。同じ 考え方を 逆行列 H k = B k − 1 H_k = B_k^{-1} H k = B k − 1 に ついて行うと DFP 更新が 得られる。BFGS 更新の 逆行列 H k + 1 H_{k+1} H k + 1 (定理 6.12 の 3)は、H y k = s k Hy_k = s_k H y k = s k (逆行列の 形の セカント条件)を 満たす対称行列 H H H の うち、(ある 重みつきの フロベニウスノルムで) H k H_k H k に 最も 近い ものとしても 特徴づけられる(主張。Nocedal–Wright 第6章)。
定理 6.12 (BFGS 更新の 性質) B k B_k B k を 対称正定値、 s k ⊤ y k > 0 s_k^{\top}y_k > 0 s k ⊤ y k > 0 とし、B k + 1 B_{k+1} B k + 1 を (6.1) で 定める。 ρ k = 1 / ( y k ⊤ s k ) \rho_k = 1/(y_k^{\top}s_k) ρ k = 1/ ( y k ⊤ s k ) , H k = B k − 1 H_k = B_k^{-1} H k = B k − 1 と する。
B k + 1 B_{k+1} B k + 1 は 対称で、セカント条件 B k + 1 s k = y k B_{k+1}s_k = y_k B k + 1 s k = y k を 満たす。
B k + 1 B_{k+1} B k + 1 は 正定値である。
B k + 1 B_{k+1} B k + 1 の 逆行列は H k + 1 = ( I − ρ k s k y k ⊤ ) H k ( I − ρ k y k s k ⊤ ) + ρ k s k s k ⊤ H_{k+1} = (I - \rho_ks_ky_k^{\top})H_k(I - \rho_ky_ks_k^{\top}) + \rho_ks_ks_k^{\top} H k + 1 = ( I − ρ k s k y k ⊤ ) H k ( I − ρ k y k s k ⊤ ) + ρ k s k s k ⊤ である。
証明. 添字 k k k を 省く。1: B k + 1 s = B s − B s s ⊤ B s s ⊤ B s + y y ⊤ s y ⊤ s = y B_{k+1}s = Bs - Bs\frac{s^{\top}Bs}{s^{\top}Bs} + y\frac{y^{\top}s}{y^{\top}s} = y B k + 1 s = B s − B s s ⊤ B s s ⊤ B s + y y ⊤ s y ⊤ s = y 。
2:z ≠ 0 z \neq 0 z = 0 に ついて
z ⊤ B k + 1 z = ( z ⊤ B z − ( s ⊤ B z ) 2 s ⊤ B s ) + ( y ⊤ z ) 2 y ⊤ s z^{\top}B_{k+1}z = \Bigl(z^{\top}Bz - \frac{(s^{\top}Bz)^2}{s^{\top}Bs}\Bigr) + \frac{(y^{\top}z)^2}{y^{\top}s} z ⊤ B k + 1 z = ( z ⊤ B z − s ⊤ B s ( s ⊤ B z ) 2 ) + y ⊤ s ( y ⊤ z ) 2
内積 ⟨ u , v ⟩ B = u ⊤ B v \langle u, v \rangle_B = u^{\top}Bv ⟨ u , v ⟩ B = u ⊤ B v に ついての コーシー–シュワルツの 不等式 ( s ⊤ B z ) 2 ≤ ( s ⊤ B s ) ( z ⊤ B z ) (s^{\top}Bz)^2 \leq (s^{\top}Bs)(z^{\top}Bz) ( s ⊤ B z ) 2 ≤ ( s ⊤ B s ) ( z ⊤ B z ) より 括弧内は 0 0 0 以上で、等号は z z z が s s s の 定数倍の ときに 限る。その とき z = α s z = \alpha s z = α s (α ≠ 0 \alpha \neq 0 α = 0 )で、最後の 項は α 2 y ⊤ s > 0 \alpha^2y^{\top}s > 0 α 2 y ⊤ s > 0 。いずれに しても z ⊤ B k + 1 z > 0 z^{\top}B_{k+1}z > 0 z ⊤ B k + 1 z > 0 。
3:H k + 1 y = ( I − ρ s y ⊤ ) H ( y − ρ y ( s ⊤ y ) ) + ρ s ( s ⊤ y ) = s H_{k+1}y = (I - \rho sy^{\top})H(y - \rho y(s^{\top}y)) + \rho s(s^{\top}y) = s H k + 1 y = ( I − ρ s y ⊤ ) H ( y − ρ y ( s ⊤ y )) + ρ s ( s ⊤ y ) = s なので B k + 1 H k + 1 y = B k + 1 s = y B_{k+1}H_{k+1}y = B_{k+1}s = y B k + 1 H k + 1 y = B k + 1 s = y 。s ⊤ z = 0 s^{\top}z = 0 s ⊤ z = 0 と なる z z z では H k + 1 z = H z − ρ ( y ⊤ H z ) s H_{k+1}z = Hz - \rho(y^{\top}Hz)s H k + 1 z = H z − ρ ( y ⊤ H z ) s で、B k + 1 H z = z − B s s ⊤ z s ⊤ B s + ρ y ( y ⊤ H z ) = z + ρ ( y ⊤ H z ) y B_{k+1}Hz = z - Bs\frac{s^{\top}z}{s^{\top}Bs} + \rho y(y^{\top}Hz) = z + \rho(y^{\top}Hz)y B k + 1 H z = z − B s s ⊤ B s s ⊤ z + ρ y ( y ⊤ H z ) = z + ρ ( y ⊤ H z ) y と B k + 1 s = y B_{k+1}s = y B k + 1 s = y より B k + 1 H k + 1 z = z B_{k+1}H_{k+1}z = z B k + 1 H k + 1 z = z 。s ⊤ y > 0 s^{\top}y > 0 s ⊤ y > 0 より y y y は s s s の 直交補空間に 含まれないので、 y y y と この 補空間で R n \mathbb{R}^n R n が 張られ、 B k + 1 H k + 1 = I B_{k+1}H_{k+1} = I B k + 1 H k + 1 = I 。□ \square □
逆に s k ⊤ y k ≤ 0 s_k^{\top}y_k \leq 0 s k ⊤ y k ≤ 0 なら、セカント条件を 満たす正定値行列は 存在しない(問題 6.5)。準ニュートン法で ウルフ条件を 使うのは この ためである。
BFGS 法 は、H 0 ≻ 0 H_0 \succ 0 H 0 ≻ 0 (たとえば I I I )から 始め、 d k = − H k ∇ f ( x k ) d_k = -H_k\nabla f(x_k) d k = − H k ∇ f ( x k ) に 沿って ウルフ条件を 満たす t k t_k t k で 進み、定理 6.12 の 3 で H k H_k H k を 更新する。 d k d_k d k は 常に 降下方向で、1 回の 反復の 手間は 行列と ベクトルの 積と 2 階の 更新の O ( n 2 ) O(n^2) O ( n 2 ) で 済み、連立一次方程式を 解く 必要も ない。 f f f が C 2 C^2 C 2 級で、初期点の 下位集合 { x ∣ f ( x ) ≤ f ( x 0 ) } \lbrace x \mid f(x) \leq f(x_0) \rbrace { x ∣ f ( x ) ≤ f ( x 0 )} が 凸で、その 上で μ I ⪯ ∇ 2 f ⪯ L I \mu I \preceq \nabla^2 f \preceq LI μ I ⪯ ∇ 2 f ⪯ L I (μ > 0 \mu > 0 μ > 0 )なら、ウルフ条件の BFGS 法は 任意の H 0 ≻ 0 H_0 \succ 0 H 0 ≻ 0 から 最小点に 収束する。さらに ヘッセ行列が 最小点の 近くで リプシッツ連続で、直線探索が t = 1 t = 1 t = 1 を 最初に 試し c 1 < 1 / 2 c_1 < 1/2 c 1 < 1/2 なら、収束は 超 1 次である(主張。Nocedal–Wright 第6章)。
次の コードは、列の スケールが 大きく 異なる 特徴量を もつリッジ正則化つきロジスティック回帰( 第1章 例 1.6・例 1.13)で、勾配の ノルムが 初期値の 10 − 6 10^{-6} 1 0 − 6 倍以下に なるまでの 反復回数を 比べる。直線探索は アルミホ条件の バックトラッキングだけを 使っているが、この 目的関数は 強凸なので 曲率条件は 自動的に 成り立つ。
import numpy as np
rng = np.random.default_rng(0)
m, n = 500, 10
scale = np.logspace(0, 1.5, n) # 列のスケールが 1〜約 32 倍
A = rng.standard_normal((m, n)) * scale
y = (rng.random(m) < 1 / (1 + np.exp(-A @ (rng.standard_normal(n) / scale)))).astype(float)
sig = lambda s: 1 / (1 + np.exp(-s))
f = lambda x: np.sum(np.logaddexp(0, A @ x) - y * (A @ x)) + x @ x / 2 # リッジ正則化つき
grad = lambda x: A.T @ (sig(A @ x) - y) + x
hess = lambda x: A.T @ (A * (sig(A @ x) * (1 - sig(A @ x)))[:, None]) + np.eye(n)
def run(method):
x, H, I, k = np.zeros(n), np.eye(n), np.eye(n), 0
g = grad(x); tol = 1e-6 * np.linalg.norm(g)
while np.linalg.norm(g) > tol:
if method == "gradient": d = -g
elif method == "BFGS": d = -H @ g
else: d = -np.linalg.solve(hess(x), g)
t = 1.0 # アルミホ条件のバックトラッキング
while f(x + t * d) > f(x) + 1e-4 * t * (g @ d):
t /= 2
s = t * d; x = x + s
g_new = grad(x); yk = g_new - g; g, k = g_new, k + 1
if method == "BFGS": # 強凸なので s^T y > 0
rho = 1 / (yk @ s)
H = (I - rho * np.outer(s, yk)) @ H @ (I - rho * np.outer(yk, s)) + rho * np.outer(s, s)
return k
for method in ["gradient", "BFGS", "Newton"]:
print(f"{method:8s} {run(method)}")
gradient 9037
BFGS 21
Newton 6
勾配法(バックトラッキングつき)は 9037 回かかる。BFGS 法は 最初の 10 回ほどは 短い 歩幅で 曲率を 学習し、その後は t = 1 t = 1 t = 1 が 受け入れられて 勾配の ノルムが 急速に 小さくなる。ニュートン法は 6 回で、最後の 3 回で 勾配の ノルムが 29 → 2.1 → 0.014 → 5.8 × 10 − 7 29 \to 2.1 \to 0.014 \to 5.8 \times 10^{-7} 29 → 2.1 → 0.014 → 5.8 × 1 0 − 7 と 2 次収束の 様子を 示す。1 回の 反復の 手間は、勾配法が O ( m n ) O(mn) O ( mn ) 、BFGS 法が O ( m n + n 2 ) O(mn + n^2) O ( mn + n 2 ) 、ニュートン法が ヘッセ行列を 作る O ( m n 2 ) O(mn^2) O ( m n 2 ) と 解く O ( n 3 ) O(n^3) O ( n 3 ) である。
6.6 L-BFGS(紹介)
n = 10 6 n = 10^6 n = 1 0 6 では n × n n \times n n × n の H k H_k H k を 記憶する ことさえできない( 10 12 10^{12} 1 0 12 個の 成分)。 L-BFGS (記憶制限つき BFGS, limited-memory BFGS)は、直近の m m m 組(数個から 20 個程度)の ( s i , y i ) (s_i, y_i) ( s i , y i ) だけを 記憶し、 H k 0 = γ k I H_k^0 = \gamma_kI H k 0 = γ k I (γ k = s k − 1 ⊤ y k − 1 / y k − 1 ⊤ y k − 1 \gamma_k = s_{k-1}^{\top}y_{k-1}/y_{k-1}^{\top}y_{k-1} γ k = s k − 1 ⊤ y k − 1 / y k − 1 ⊤ y k − 1 が よく 使われる)から 始めて、記憶した 組で 定理 6.12 の 3 の 更新を 古い順に m m m 回施した 行列 H k H_k H k を、行列を 作らずに ∇ f ( x k ) \nabla f(x_k) ∇ f ( x k ) に 掛ける。この 積は 2 重の ループに よる 再帰で O ( m n ) O(mn) O ( mn ) の 手間で 計算できる(Nocedal–Wright 第7章)。記憶容量は O ( m n ) O(mn) O ( mn ) で、勾配法と ほぼ 同じ 手間で 曲率の 情報を 使える ため、変数の 多い 滑らかな 問題(大規模な ロジスティック回帰、物理シミュレーションの パラメータ推定など)の 標準的な 解法の 一つに なっている。
ヒント
実務では
滑らかな 凸問題では、ヘッセ行列を 作って 解ける 規模なら ニュートン法、変数が それより 多ければ L-BFGS が よく 使われる。準ニュートン法は 勾配の 誤差に 弱い。勾配を 差分近似で 代用したり、勾配の 実装に 誤りが あったりすると y k y_k y k が 狂い、曲率の 推定が 壊れる。勾配は 解析的に、または 自動微分で 計算し、いく つかの 点で 差分商 ( f ( x + ϵ e i ) − f ( x − ϵ e i ) ) / ( 2 ϵ ) (f(x + \epsilon e_i) - f(x - \epsilon e_i))/(2\epsilon) ( f ( x + ϵ e i ) − f ( x − ϵ e i )) / ( 2 ϵ ) と 比べて 確かめておく。データを 少し 追加する たびに 解き直す ときは、前回の 解を 初期点に する(ウォームスタート)と 反復回数が 大きく 減る。
6.7 内点法の 考え方:対数バリアと 中心パス
制約付き問題に ニュートン法を 使う ために、制約を 目的関数の「壁」に 置き換える。不等式形の 線形計画問題
minimize c ⊤ x subject to a i ⊤ x ≤ b i ( i = 1 , … , m ) \text{minimize} \quad c^{\top}x \qquad \text{subject to} \quad a_i^{\top}x \leq b_i \quad (i = 1, \dots, m) minimize c ⊤ x subject to a i ⊤ x ≤ b i ( i = 1 , … , m )
を 考え、 a i ⊤ x < b i a_i^{\top}x < b_i a i ⊤ x < b i (すべての i i i )を 満たす点が あり、実行可能領域は 有界であると する。 対数バリア関数 (logarithmic barrier) を
ϕ ( x ) = − ∑ i = 1 m log ( b i − a i ⊤ x ) ( a i ⊤ x < b i for all i ) \phi(x) = -\sum_{i=1}^{m}\log(b_i - a_i^{\top}x) \quad (a_i^{\top}x < b_i \ \text{for all} \ i) ϕ ( x ) = − i = 1 ∑ m log ( b i − a i ⊤ x ) ( a i ⊤ x < b i for all i )
と 定める。 ϕ \phi ϕ は 凸で、境界に 近づくと + ∞ +\infty + ∞ に 発散する。 t > 0 t > 0 t > 0 に ついて、 t c ⊤ x + ϕ ( x ) tc^{\top}x + \phi(x) t c ⊤ x + ϕ ( x ) を 実行可能領域の 内部で 最小化する 点を x ∗ ( t ) x^{\ast}(t) x ∗ ( t ) と する(境界で + ∞ +\infty + ∞ に 発散し領域が 有界なので 最小点が 存在する。また、 a i ⊤ d = 0 a_i^{\top}d = 0 a i ⊤ d = 0 (すべての i i i )と なる d ≠ 0 d \neq 0 d = 0 が あれば 直線 x + s d x + sd x + s d が 領域に 含まれて 有界性に 反するので、 a i a_i a i たちは R n \mathbb{R}^n R n を 張り、 ∇ 2 ϕ = ∑ i a i a i ⊤ / ( b i − a i ⊤ x ) 2 ≻ 0 \nabla^2\phi = \sum_i a_ia_i^{\top}/(b_i - a_i^{\top}x)^2 \succ 0 ∇ 2 ϕ = ∑ i a i a i ⊤ / ( b i − a i ⊤ x ) 2 ≻ 0 より 最小点は 一つである)。曲線 t ↦ x ∗ ( t ) t \mapsto x^{\ast}(t) t ↦ x ∗ ( t ) を 中心パス (central path) と いう。 t t t が 小さいと 壁の 効果が 強く x ∗ ( t ) x^{\ast}(t) x ∗ ( t ) は 領域の「中心」に あり、 t t t が 大きいと 目的関数が 優勢に なって 最適解に 近づく。
命題 6.13 (中心パス上の 双対ギャップ) λ i ( t ) = 1 t ( b i − a i ⊤ x ∗ ( t ) ) > 0 \lambda_i(t) = \dfrac{1}{t(b_i - a_i^{\top}x^{\ast}(t))} > 0 λ i ( t ) = t ( b i − a i ⊤ x ∗ ( t )) 1 > 0 と すると A ⊤ λ ( t ) + c = 0 A^{\top}\lambda(t) + c = 0 A ⊤ λ ( t ) + c = 0 (A A A は a i ⊤ a_i^{\top} a i ⊤ を 行と する 行列)であり、最適値 p ∗ p^{\ast} p ∗ に ついて
c ⊤ x ∗ ( t ) − p ∗ ≤ c ⊤ x ∗ ( t ) + b ⊤ λ ( t ) = m t c^{\top}x^{\ast}(t) - p^{\ast} \leq c^{\top}x^{\ast}(t) + b^{\top}\lambda(t) = \frac{m}{t} c ⊤ x ∗ ( t ) − p ∗ ≤ c ⊤ x ∗ ( t ) + b ⊤ λ ( t ) = t m
証明. x ∗ ( t ) x^{\ast}(t) x ∗ ( t ) で 勾配が 0 0 0 なので t c + ∑ i a i b i − a i ⊤ x ∗ ( t ) = 0 tc + \sum_i\frac{a_i}{b_i - a_i^{\top}x^{\ast}(t)} = 0 t c + ∑ i b i − a i ⊤ x ∗ ( t ) a i = 0 で、t t t で 割れば c + A ⊤ λ = 0 c + A^{\top}\lambda = 0 c + A ⊤ λ = 0 。実行可能な 任意の x x x に ついて、 λ ≥ 0 \lambda \geq 0 λ ≥ 0 と A x ≤ b Ax \leq b A x ≤ b より c ⊤ x = − λ ⊤ A x ≥ − λ ⊤ b c^{\top}x = -\lambda^{\top}Ax \geq -\lambda^{\top}b c ⊤ x = − λ ⊤ A x ≥ − λ ⊤ b なので p ∗ ≥ − b ⊤ λ p^{\ast} \geq -b^{\top}\lambda p ∗ ≥ − b ⊤ λ (第4章 定理 4.11 の 弱双対性の 特別な 場合)。また c ⊤ x ∗ ( t ) + b ⊤ λ = λ ⊤ ( b − A x ∗ ( t ) ) = ∑ i 1 t = m t c^{\top}x^{\ast}(t) + b^{\top}\lambda = \lambda^{\top}(b - Ax^{\ast}(t)) = \sum_i\frac{1}{t} = \frac{m}{t} c ⊤ x ∗ ( t ) + b ⊤ λ = λ ⊤ ( b − A x ∗ ( t )) = ∑ i t 1 = t m 。□ \square □
λ ( t ) \lambda(t) λ ( t ) は 双対問題の 実行可能解で、KKT 条件(第4章 定義 4.2)の 相補性 λ i ( b i − a i ⊤ x ) = 0 \lambda_i(b_i - a_i^{\top}x) = 0 λ i ( b i − a i ⊤ x ) = 0 を λ i ( b i − a i ⊤ x ) = 1 / t \lambda_i(b_i - a_i^{\top}x) = 1/t λ i ( b i − a i ⊤ x ) = 1/ t に ゆるめた ものを 満たしている。 t → ∞ t \to \infty t → ∞ で KKT 条件に 近づく。
例 6.14 (生産計画の 中心パス) 第3章 例 3.1 の 生産計画( 40 x 1 + 30 x 2 40x_1 + 30x_2 40 x 1 + 30 x 2 を、機械 2 x 1 + x 2 ≤ 100 2x_1 + x_2 \leq 100 2 x 1 + x 2 ≤ 100 、作業 x 1 + x 2 ≤ 80 x_1 + x_2 \leq 80 x 1 + x 2 ≤ 80 、原料 x 1 ≤ 40 x_1 \leq 40 x 1 ≤ 40 、x ≥ 0 x \geq 0 x ≥ 0 のもとで 最大化。最適解 ( 20 , 60 ) (20, 60) ( 20 , 60 ) 、最大利益 2600 2600 2600 )を、c = ( − 40 , − 30 ) c = (-40, -30) c = ( − 40 , − 30 ) , m = 5 m = 5 m = 5 の 最小化と して 中心パスを たどると 次のようになる(ニュートン法で 計算し、sympy の 高精度計算で 確かめた)。
t t t
x ∗ ( t ) x^{\ast}(t) x ∗ ( t )
利益
2600 − 2600 - 2600 − 利益
( λ 1 , λ 2 , λ 3 ) (\lambda_1, \lambda_2, \lambda_3) ( λ 1 , λ 2 , λ 3 )
0.01 0.01 0.01
( 15.45 , 59.78 ) (15.45, 59.78) ( 15.45 , 59.78 )
2411.29 2411.29 2411.29
188.71 188.71 188.71
( 10.73 , 20.95 , 4.07 ) (10.73, 20.95, 4.07) ( 10.73 , 20.95 , 4.07 )
0.1 0.1 0.1
( 19.48 , 60.03 ) (19.48, 60.03) ( 19.48 , 60.03 )
2580.01 2580.01 2580.01
19.99 19.99 19.99
( 9.86 , 20.31 , 0.49 ) (9.86, 20.31, 0.49) ( 9.86 , 20.31 , 0.49 )
1 1 1
( 19.95 , 60.00 ) (19.95, 60.00) ( 19.95 , 60.00 )
2598.00 2598.00 2598.00
2.00 2.00 2.00
( 9.98 , 20.03 , 0.05 ) (9.98, 20.03, 0.05) ( 9.98 , 20.03 , 0.05 )
10 10 10
( 19.995 , 60.000 ) (19.995, 60.000) ( 19.995 , 60.000 )
2599.80 2599.80 2599.80
0.20 0.20 0.20
( 9.998 , 20.003 , 0.005 ) (9.998, 20.003, 0.005) ( 9.998 , 20.003 , 0.005 )
最適値との ずれは 命題 6.13 の 上界 5 / t 5/t 5/ t 以下で(主双対の ギャップは ちょうど 5 / t 5/t 5/ t )、機械・作業・原料の 制約の 乗数 λ 1 , λ 2 , λ 3 \lambda_1, \lambda_2, \lambda_3 λ 1 , λ 2 , λ 3 は 第3章 例 3.31 の シャドウプライス ( 10 , 20 , 0 ) (10, 20, 0) ( 10 , 20 , 0 ) に 近づく。
バリア法 は、t t t を μ \mu μ 倍(たとえば μ = 10 \mu = 10 μ = 10 )ずつ 大きくしながら、前の x ∗ ( t ) x^{\ast}(t) x ∗ ( t ) を 初期点に して 減衰ニュートン法で 次の x ∗ ( μ t ) x^{\ast}(\mu t) x ∗ ( μ t ) を 求める( 中心化 )。命題 6.13 より、最初の 中心化で x ∗ ( t 0 ) x^{\ast}(t_0) x ∗ ( t 0 ) を 求めた あと、双対ギャップ m / t m/t m / t が ε \varepsilon ε 以下に なるまでの 外側の 反復は ⌈ log ( m / ( t 0 ε ) ) / log μ ⌉ \lceil \log(m/(t_0\varepsilon))/\log\mu \rceil ⌈ log ( m / ( t 0 ε )) / log μ ⌉ 回である。各中心化の ニュートン反復の 回数は、自己整合性 (self-concordance) の 理論に より t t t に よらない 上界を もち(上界は m m m , μ \mu μ と 直線探索の 定数に 依存する)、 μ = 1 + 1 / m \mu = 1 + 1/\sqrt{m} μ = 1 + 1/ m と すると 全体で O ( m log ( m / ( t 0 ε ) ) ) O(\sqrt{m}\log(m/(t_0\varepsilon))) O ( m log ( m / ( t 0 ε ))) 回の ニュートン反復で 足りる(主張。Boyd–Vandenberghe 第11章)。一般の 凸問題でも、 g i ( x ) ≤ 0 g_i(x) \leq 0 g i ( x ) ≤ 0 に 対して ϕ ( x ) = − ∑ i log ( − g i ( x ) ) \phi(x) = -\sum_i\log(-g_i(x)) ϕ ( x ) = − ∑ i log ( − g i ( x )) と すれば 同じ 構成が でき、双対ギャップは m / t m/t m / t に なる(主張。同書 11.2 節)。実用的な ソルバーの 多くは、主問題と 双対問題の 変数を 同時に 更新する 主双対内点法を 使っている。
まとめ
ニュートン法は 2 次近似の 最小化 ∇ 2 f ( x k ) d = − ∇ f ( x k ) \nabla^2 f(x_k)d = -\nabla f(x_k) ∇ 2 f ( x k ) d = − ∇ f ( x k ) で、変数の スケールに 依存しない。
∇ 2 f ( x ∗ ) \nabla^2 f(x^{\ast}) ∇ 2 f ( x ∗ ) が 正則で ヘッセ行列が リプシッツ連続なら、 x ∗ x^{\ast} x ∗ の 近くから 局所的に 2 次収束する : ∥ x k + 1 − x ∗ ∥ ≤ β M ∥ x k − x ∗ ∥ 2 \lVert x_{k+1} - x^{\ast} \rVert \leq \beta M\lVert x_k - x^{\ast} \rVert^2 ∥ x k + 1 − x ∗ ∥ ≤ β M ∥ x k − x ∗ ∥ 2 。正則性が ないと 線形収束に 落ちる ことがある( x 4 x^4 x 4 )。極大点や 鞍点にも 収束しうる。
遠くからは 狭義凸関数でも 発散しうる( 1 + x 2 \sqrt{1 + x^2} 1 + x 2 で x k + 1 = − x k 3 x_{k+1} = -x_k^3 x k + 1 = − x k 3 )。減衰ニュートン法は、強凸性などの 仮定のもとで 直線探索に より 大域的に 収束し、最後は t = 1 t = 1 t = 1 で 2 次収束する(アルミホ条件の 定数は c < 1 / 2 c < 1/2 c < 1/2 )。
非線形最小二乗では ガウス–ニュートン法が 2 階微分なしで 速いが、初期値が 悪いと 破綻しうる。レーベンバーグ–マーカート法は 信頼領域法と して 安定に 動く。
準ニュートン法は セカント条件 B k + 1 s k = y k B_{k+1}s_k = y_k B k + 1 s k = y k を 満たすように 近似を 更新する。BFGS 更新は 2 階の 修正と して 導かれ、曲率条件 s k ⊤ y k > 0 s_k^{\top}y_k > 0 s k ⊤ y k > 0 のもとで 正定値性を 保つ。ウルフ条件が これを 保証する。
L-BFGS は m m m 組の ベクトルだけで BFGS を 近似し、大規模問題の 標準的な 解法に なっている。
内点法は 対数バリアで 制約を 壁に 置き換え、中心パスを t → ∞ t \to \infty t → ∞ に たどる。中心パス上の 双対ギャップは m / t m/t m / t である。
演習問題
問題 6.1 ★ 例 6.2 の f ( x ) = x − log x f(x) = x - \log x f ( x ) = x − log x に ついて、(1) ニュートン法が 収束する 初期点 x 0 x_0 x 0 の 範囲を 求めよ。(2) 定理 6.4 を r = 1 / 4 r = 1/4 r = 1/4 と して 適用すると、収束が 保証される δ \delta δ は いくらか。
解答
(1) e k + 1 = e k 2 e_{k+1} = e_k^2 e k + 1 = e k 2 より e k = e 0 2 k e_k = e_0^{2^k} e k = e 0 2 k なので、x 0 > 0 x_0 > 0 x 0 > 0 で ∣ e 0 ∣ = ∣ 1 − x 0 ∣ < 1 \lvert e_0 \rvert = \lvert 1 - x_0 \rvert < 1 ∣ e 0 ∣ = ∣ 1 − x 0 ∣ < 1 、すな わち 0 < x 0 < 2 0 < x_0 < 2 0 < x 0 < 2 なら x k → 1 x_k \to 1 x k → 1 。x 0 = 2 x_0 = 2 x 0 = 2 なら x 1 = 0 x_1 = 0 x 1 = 0 、x 0 > 2 x_0 > 2 x 0 > 2 なら x 1 < 0 x_1 < 0 x 1 < 0 で 定義域を 出る。
(2) f ′ ′ ( x ) = x − 2 f''(x) = x^{-2} f ′′ ( x ) = x − 2 なので β = 1 / f ′ ′ ( 1 ) = 1 \beta = 1/f''(1) = 1 β = 1/ f ′′ ( 1 ) = 1 。[ 3 / 4 , 5 / 4 ] [3/4, 5/4] [ 3/4 , 5/4 ] 上で ∣ f ′ ′ ′ ( x ) ∣ = 2 / x 3 ≤ 2 / ( 3 / 4 ) 3 = 128 / 27 \lvert f'''(x) \rvert = 2/x^3 \leq 2/(3/4)^3 = 128/27 ∣ f ′′′ ( x )∣ = 2/ x 3 ≤ 2/ ( 3/4 ) 3 = 128/27 なので、平均値の 定理より M = 128 / 27 M = 128/27 M = 128/27 ととれる。δ = min ( 1 / 4 , 27 / 256 ) = 27 / 256 ≈ 0.105 \delta = \min(1/4, 27/256) = 27/256 \approx 0.105 δ = min ( 1/4 , 27/256 ) = 27/256 ≈ 0.105 。r r r を 変えて 最適化しても δ \delta δ は 約 0.152 0.152 0.152 どまりで(4 r = ( 1 − r ) 3 4r = (1 - r)^3 4 r = ( 1 − r ) 3 の 解)、実際の 収束域 ∣ x 0 − 1 ∣ < 1 \lvert x_0 - 1 \rvert < 1 ∣ x 0 − 1 ∣ < 1 より ずっと 狭い。定理は「十分近ければ 速い」ことを 保証する もので、収束域を 正確に 与える ものではない。
問題 6.2 ★ ★ A A A を 正則な n n n 次正方行列、b ∈ R n b \in \mathbb{R}^n b ∈ R n とし、g ( y ) = f ( A y + b ) g(y) = f(Ay + b) g ( y ) = f ( A y + b ) と する。(1) y 0 y_0 y 0 から g g g に ニュートン法を 適用した 点列 y k y_k y k と、x 0 = A y 0 + b x_0 = Ay_0 + b x 0 = A y 0 + b から f f f に 適用した 点列 x k x_k x k に ついて、 x k = A y k + b x_k = Ay_k + b x k = A y k + b を 示せ。(2) 最急降下法では 同じことが 成り立たない ことを、 f ( x ) = 1 2 ( x 1 2 + 100 x 2 2 ) f(x) = \frac{1}{2}(x_1^2 + 100x_2^2) f ( x ) = 2 1 ( x 1 2 + 100 x 2 2 ) , A = diag ( 1 , 1 / 10 ) A = \operatorname{diag}(1, 1/10) A = diag ( 1 , 1/10 ) , b = 0 b = 0 b = 0 で 説明せよ。
解答
(1) 連鎖律より ∇ g ( y ) = A ⊤ ∇ f ( A y + b ) \nabla g(y) = A^{\top}\nabla f(Ay + b) ∇ g ( y ) = A ⊤ ∇ f ( A y + b ) , ∇ 2 g ( y ) = A ⊤ ∇ 2 f ( A y + b ) A \nabla^2 g(y) = A^{\top}\nabla^2 f(Ay + b)A ∇ 2 g ( y ) = A ⊤ ∇ 2 f ( A y + b ) A 。x = A y + b x = Ay + b x = A y + b と すると
y − ∇ 2 g ( y ) − 1 ∇ g ( y ) = y − A − 1 ∇ 2 f ( x ) − 1 ( A ⊤ ) − 1 A ⊤ ∇ f ( x ) = y − A − 1 ∇ 2 f ( x ) − 1 ∇ f ( x ) y - \nabla^2 g(y)^{-1}\nabla g(y) = y - A^{-1}\nabla^2 f(x)^{-1}(A^{\top})^{-1}A^{\top}\nabla f(x) = y - A^{-1}\nabla^2 f(x)^{-1}\nabla f(x) y − ∇ 2 g ( y ) − 1 ∇ g ( y ) = y − A − 1 ∇ 2 f ( x ) − 1 ( A ⊤ ) − 1 A ⊤ ∇ f ( x ) = y − A − 1 ∇ 2 f ( x ) − 1 ∇ f ( x )
で、A A A を 掛けて b b b を 足すと x − ∇ 2 f ( x ) − 1 ∇ f ( x ) x - \nabla^2 f(x)^{-1}\nabla f(x) x − ∇ 2 f ( x ) − 1 ∇ f ( x ) に なる。帰納法で x k = A y k + b x_k = Ay_k + b x k = A y k + b 。
(2) g ( y ) = 1 2 ( y 1 2 + y 2 2 ) g(y) = \frac{1}{2}(y_1^2 + y_2^2) g ( y ) = 2 1 ( y 1 2 + y 2 2 ) は 条件数 1 1 1 で、ステップ幅 1 1 1 の 最急降下法は 1 回で 最小点 0 0 0 に 着く。一方 f f f は 条件数 100 100 100 で、最急降下法の 反復回数は κ = 100 \kappa = 100 κ = 100 に 比例する(第5章)。最急降下法 y k + 1 = y k − t ∇ g ( y k ) y_{k+1} = y_k - t\nabla g(y_k) y k + 1 = y k − t ∇ g ( y k ) を x x x で 書くと x k + 1 = x k − t A A ⊤ ∇ f ( x k ) x_{k+1} = x_k - tAA^{\top}\nabla f(x_k) x k + 1 = x k − t A A ⊤ ∇ f ( x k ) で、f f f の 最急降下法とは 別の 方法(前処理つき勾配法)に なる。ニュートン法は 座標の 取り方に よらないので、スケーリングの 工夫を 要しない。
問題 6.3 ★ ★ f ( x ) = x 3 − 3 x f(x) = x^3 - 3x f ( x ) = x 3 − 3 x の 極小点 x = 1 x = 1 x = 1 を 求める ため、次の 実装を した。「ニュートン法 x k + 1 = x k − f ′ ( x k ) / f ′ ′ ( x k ) x_{k+1} = x_k - f'(x_k)/f''(x_k) x k + 1 = x k − f ′ ( x k ) / f ′′ ( x k ) を、∣ f ′ ( x k ) ∣ < 10 − 10 \lvert f'(x_k) \rvert < 10^{-10} ∣ f ′ ( x k )∣ < 1 0 − 10 に なるまで 繰り返す」。(1) x 0 = − 2 x_0 = -2 x 0 = − 2 から 始めると 何が 起こるか。(2) 「ニュートン方向に アルミホ条件の バックトラッキングを つければ 安全だ」と いう 修正案の 問題点を 述べ、正しい 対策を 挙げよ。
解答
(1) x k + 1 = x k − 3 x k 2 − 3 6 x k = x k 2 + 1 2 x k x_{k+1} = x_k - \frac{3x_k^2 - 3}{6x_k} = \frac{x_k^2 + 1}{2x_k} x k + 1 = x k − 6 x k 3 x k 2 − 3 = 2 x k x k 2 + 1 なので、x 0 = − 2 x_0 = -2 x 0 = − 2 から − 1.25 , − 1.025 , − 1.0003 , … -1.25, -1.025, -1.0003, \dots − 1.25 , − 1.025 , − 1.0003 , … と − 1 -1 − 1 に 2 次収束し、停止条件を 満たして 終わる。しかし f ′ ′ ( − 1 ) = − 6 < 0 f''(-1) = -6 < 0 f ′′ ( − 1 ) = − 6 < 0 で、x = − 1 x = -1 x = − 1 は 極大点 である(f ( − 2 ) = − 2 f(-2) = -2 f ( − 2 ) = − 2 から f ( − 1 ) = 2 f(-1) = 2 f ( − 1 ) = 2 へ 値が 増えている)。
(2) x 0 = − 2 x_0 = -2 x 0 = − 2 では f ′ ′ ( − 2 ) = − 12 < 0 f''(-2) = -12 < 0 f ′′ ( − 2 ) = − 12 < 0 で、ニュートン方向 d = − f ′ ( − 2 ) / f ′ ′ ( − 2 ) = 0.75 d = -f'(-2)/f''(-2) = 0.75 d = − f ′ ( − 2 ) / f ′′ ( − 2 ) = 0.75 は f ′ ( − 2 ) d = 6.75 > 0 f'(-2)d = 6.75 > 0 f ′ ( − 2 ) d = 6.75 > 0 の 上り方向である。上り方向では アルミホ条件 (5.1) の 右辺が f ( x ) f(x) f ( x ) より 大きくなり、条件は「十分に 減った」ことを 表さない。この 例では、 f ′ ( x ) = 3 x 2 − 3 f'(x) = 3x^2 - 3 f ′ ( x ) = 3 x 2 − 3 が [ − 2 , − 1.25 ] [-2, -1.25] [ − 2 , − 1.25 ] で 減少するので、 ( f ( − 2 + 0.75 t ) − f ( − 2 ) ) / t (f(-2 + 0.75t) - f(-2))/t ( f ( − 2 + 0.75 t ) − f ( − 2 )) / t (区間 [ − 2 , − 2 + 0.75 t ] [-2, -2 + 0.75t] [ − 2 , − 2 + 0.75 t ] での f f f の 平均変化率の 0.75 0.75 0.75 倍)は t t t に ついて 減少し、 t = 1 t = 1 t = 1 で 3.796875 = 9 16 ⋅ 6.75 3.796875 = \frac{9}{16} \cdot 6.75 3.796875 = 16 9 ⋅ 6.75 なので、0 < t ≤ 1 0 < t \leq 1 0 < t ≤ 1 で f ( − 2 + 0.75 t ) − f ( − 2 ) ≥ 9 16 ⋅ 6.75 t f(-2 + 0.75t) - f(-2) \geq \frac{9}{16} \cdot 6.75t f ( − 2 + 0.75 t ) − f ( − 2 ) ≥ 16 9 ⋅ 6.75 t である。よって 通常の c < 1 / 2 c < 1/2 c < 1/2 ではどの t t t も 条件を 満た さず、バックトラッキングは 終わらない( t t t が 0 0 0 に 近づき続ける)。 c ≥ 9 / 16 c \geq 9/16 c ≥ 9/16 なら t = 1 t = 1 t = 1 が 受け入れられるが、値は − 2 -2 − 2 から 約 1.80 1.80 1.80 へ 増える。どちらに しても 対策に ならない。正しい 対策は、ヘッセ行列(ここでは f ′ ′ f'' f ′′ )が 正定値でない ときに f ′ ′ + τ f'' + \tau f ′′ + τ (τ > 0 \tau > 0 τ > 0 を 正定値に なるまで 大きく する)や 勾配方向に 取り替えて 降下方向を 保証し、そのうえで 直線探索を 使う ことである。ただし この f f f は x → − ∞ x \to -\infty x → − ∞ で − ∞ -\infty − ∞ に 発散する(下に 有界でない)。 x 0 = − 2 x_0 = -2 x 0 = − 2 では 降下方向は 左向きなので、降下法は 値を 減らしながら左へ 進み続け、 x = 1 x = 1 x = 1 には 着かない。局所最小点 x = 1 x = 1 x = 1 を 求めるには x 0 > − 1 x_0 > -1 x 0 > − 1 から 始める 必要が あり、停止時には f ′ ′ ( x ) > 0 f''(x) > 0 f ′′ ( x ) > 0 を 確かめるべきである。
問題 6.4 ★ ★ J J J を m × n m \times n m × n 行列、r ∈ R m r \in \mathbb{R}^m r ∈ R m , g = J ⊤ r ≠ 0 g = J^{\top}r \neq 0 g = J ⊤ r = 0 とし、d ( λ ) = − ( J ⊤ J + λ I ) − 1 g d(\lambda) = -(J^{\top}J + \lambda I)^{-1}g d ( λ ) = − ( J ⊤ J + λ I ) − 1 g (λ > 0 \lambda > 0 λ > 0 )と する。(1) ∥ d ( λ ) ∥ \lVert d(\lambda) \rVert ∥ d ( λ )∥ は λ \lambda λ に ついて 単調減少である ことを 示せ。(2) λ → ∞ \lambda \to \infty λ → ∞ で λ d ( λ ) → − g \lambda d(\lambda) \to -g λ d ( λ ) → − g 、J J J の 列が 一次独立なら λ → + 0 \lambda \to +0 λ → + 0 で d ( λ ) → d G N d(\lambda) \to d_{\mathrm{GN}} d ( λ ) → d GN である ことを 示せ。
解答
J ⊤ J J^{\top}J J ⊤ J を 直交行列で 対角化し(固有値 σ i ≥ 0 \sigma_i \geq 0 σ i ≥ 0 、正規直交な 固有ベクトル v i v_i v i )、g = ∑ i γ i v i g = \sum_i\gamma_iv_i g = ∑ i γ i v i と 展開すると d ( λ ) = − ∑ i γ i σ i + λ v i d(\lambda) = -\sum_i\frac{\gamma_i}{\sigma_i + \lambda}v_i d ( λ ) = − ∑ i σ i + λ γ i v i 。
(1) ∥ d ( λ ) ∥ 2 = ∑ i γ i 2 ( σ i + λ ) 2 \lVert d(\lambda) \rVert^2 = \sum_i\frac{\gamma_i^2}{(\sigma_i + \lambda)^2} ∥ d ( λ ) ∥ 2 = ∑ i ( σ i + λ ) 2 γ i 2 の 各項は λ \lambda λ に ついて 単調減少で、 g ≠ 0 g \neq 0 g = 0 より ある γ i ≠ 0 \gamma_i \neq 0 γ i = 0 なので 狭義に 減少する。
(2) λ d ( λ ) = − ∑ i λ σ i + λ γ i v i → − ∑ i γ i v i = − g \lambda d(\lambda) = -\sum_i\frac{\lambda}{\sigma_i + \lambda}\gamma_iv_i \to -\sum_i\gamma_iv_i = -g λ d ( λ ) = − ∑ i σ i + λ λ γ i v i → − ∑ i γ i v i = − g 。列が 一次独立なら J ⊤ J J^{\top}J J ⊤ J は 正定値で σ i > 0 \sigma_i > 0 σ i > 0 なので、d ( λ ) → − ∑ i γ i σ i v i = − ( J ⊤ J ) − 1 g = d G N d(\lambda) \to -\sum_i\frac{\gamma_i}{\sigma_i}v_i = -(J^{\top}J)^{-1}g = d_{\mathrm{GN}} d ( λ ) → − ∑ i σ i γ i v i = − ( J ⊤ J ) − 1 g = d GN 。λ \lambda λ を 動かすと、一歩は ガウス–ニュートン方向から 短い 最急降下方向まで 連続に 変わる。
問題 6.5 ★ ★ (1) B 0 = I B_0 = I B 0 = I , s 0 = ( 1 , 1 ) s_0 = (1, 1) s 0 = ( 1 , 1 ) , y 0 = ( 1 , 4 ) y_0 = (1, 4) y 0 = ( 1 , 4 ) (f ( x ) = 1 2 ( x 1 2 + 4 x 2 2 ) f(x) = \frac{1}{2}(x_1^2 + 4x_2^2) f ( x ) = 2 1 ( x 1 2 + 4 x 2 2 ) なら y 0 = diag ( 1 , 4 ) s 0 y_0 = \operatorname{diag}(1, 4)s_0 y 0 = diag ( 1 , 4 ) s 0 )と して BFGS 更新 (6.1) の B 1 B_1 B 1 を 求め、セカント条件と 正定値性を 確かめよ。定理 6.12 の 3 の 式で H 1 H_1 H 1 を 求め、 B 1 H 1 = I B_1H_1 = I B 1 H 1 = I を 確かめよ。(2) s ≠ 0 s \neq 0 s = 0 , s ⊤ y ≤ 0 s^{\top}y \leq 0 s ⊤ y ≤ 0 の とき、 B s = y Bs = y B s = y を 満たす正定値対称行列 B B B は 存在しない ことを 示せ。
解答
(1) s 0 ⊤ B 0 s 0 = 2 s_0^{\top}B_0s_0 = 2 s 0 ⊤ B 0 s 0 = 2 , y 0 ⊤ s 0 = 5 y_0^{\top}s_0 = 5 y 0 ⊤ s 0 = 5 より
B 1 = I − 1 2 ( 1 1 1 1 ) + 1 5 ( 1 4 4 16 ) = 1 10 ( 7 3 3 37 ) B_1 = I - \frac{1}{2}\begin{pmatrix} 1 & 1 \\ 1 & 1 \end{pmatrix} + \frac{1}{5}\begin{pmatrix} 1 & 4 \\ 4 & 16 \end{pmatrix} = \frac{1}{10}\begin{pmatrix} 7 & 3 \\ 3 & 37 \end{pmatrix} B 1 = I − 2 1 ( 1 1 1 1 ) + 5 1 ( 1 4 4 16 ) = 10 1 ( 7 3 3 37 )
B 1 s 0 = 1 10 ( 10 , 40 ) = ( 1 , 4 ) = y 0 B_1s_0 = \frac{1}{10}(10, 40) = (1, 4) = y_0 B 1 s 0 = 10 1 ( 10 , 40 ) = ( 1 , 4 ) = y 0 。B 1 B_1 B 1 の ( 1 , 1 ) (1, 1) ( 1 , 1 ) 成分は 7 / 10 > 0 7/10 > 0 7/10 > 0 , det B 1 = ( 259 − 9 ) / 100 = 5 / 2 > 0 \det B_1 = (259 - 9)/100 = 5/2 > 0 det B 1 = ( 259 − 9 ) /100 = 5/2 > 0 なので 正定値(固有値は 約 0.670 0.670 0.670 と 3.730 3.730 3.730 )。ρ 0 = 1 / 5 \rho_0 = 1/5 ρ 0 = 1/5 , H 0 = I H_0 = I H 0 = I で
I − ρ 0 s 0 y 0 ⊤ = 1 5 ( 4 − 4 − 1 1 ) , H 1 = 1 25 ( 4 − 4 − 1 1 ) ( 4 − 1 − 4 1 ) + 1 5 ( 1 1 1 1 ) = 1 25 ( 37 − 3 − 3 7 ) I - \rho_0s_0y_0^{\top} = \frac{1}{5}\begin{pmatrix} 4 & -4 \\ -1 & 1 \end{pmatrix}, \qquad H_1 = \frac{1}{25}\begin{pmatrix} 4 & -4 \\ -1 & 1 \end{pmatrix}\begin{pmatrix} 4 & -1 \\ -4 & 1 \end{pmatrix} + \frac{1}{5}\begin{pmatrix} 1 & 1 \\ 1 & 1 \end{pmatrix} = \frac{1}{25}\begin{pmatrix} 37 & -3 \\ -3 & 7 \end{pmatrix} I − ρ 0 s 0 y 0 ⊤ = 5 1 ( 4 − 1 − 4 1 ) , H 1 = 25 1 ( 4 − 1 − 4 1 ) ( 4 − 4 − 1 1 ) + 5 1 ( 1 1 1 1 ) = 25 1 ( 37 − 3 − 3 7 )
掛けると
B 1 H 1 = 1 250 ( 259 − 9 − 21 + 21 111 − 111 − 9 + 259 ) = I B_1H_1 = \frac{1}{250}\begin{pmatrix} 259 - 9 & -21 + 21 \\ 111 - 111 & -9 + 259 \end{pmatrix} = I B 1 H 1 = 250 1 ( 259 − 9 111 − 111 − 21 + 21 − 9 + 259 ) = I
である。な お ∇ 2 f = diag ( 1 , 4 ) \nabla^2 f = \operatorname{diag}(1, 4) ∇ 2 f = diag ( 1 , 4 ) と 比べると、 B 1 B_1 B 1 は 1 回の 更新で s 0 s_0 s 0 方向の 曲率だけを 正しく 取り込んでいる。
(2) B s = y Bs = y B s = y なら s ⊤ B s = s ⊤ y ≤ 0 s^{\top}Bs = s^{\top}y \leq 0 s ⊤ B s = s ⊤ y ≤ 0 で、s ≠ 0 s \neq 0 s = 0 なので B B B は 正定値でない。
問題 6.6 ★ ★ 1 変数の 線形計画「 0 ≤ x ≤ 1 0 \leq x \leq 1 0 ≤ x ≤ 1 のもとで x x x を 最小化」( p ∗ = 0 p^{\ast} = 0 p ∗ = 0 )に ついて、中心パス x ∗ ( t ) x^{\ast}(t) x ∗ ( t ) を 求め、 x ∗ ( t ) ≤ 2 / t x^{\ast}(t) \leq 2/t x ∗ ( t ) ≤ 2/ t を 確かめよ。また t → ∞ t \to \infty t → ∞ で x ∗ ( t ) ≈ 1 / t x^{\ast}(t) \approx 1/t x ∗ ( t ) ≈ 1/ t である ことを 示せ。
解答
ϕ ( x ) = − log x − log ( 1 − x ) \phi(x) = -\log x - \log(1 - x) ϕ ( x ) = − log x − log ( 1 − x ) で、t x + ϕ ( x ) tx + \phi(x) t x + ϕ ( x ) の 導関数 t − 1 x + 1 1 − x t - \frac{1}{x} + \frac{1}{1 - x} t − x 1 + 1 − x 1 を 0 0 0 と おいて x ( 1 − x ) x(1 - x) x ( 1 − x ) を 掛けると t x 2 − ( t + 2 ) x + 1 = 0 tx^2 - (t + 2)x + 1 = 0 t x 2 − ( t + 2 ) x + 1 = 0 。( 0 , 1 ) (0, 1) ( 0 , 1 ) に ある 根は
x ∗ ( t ) = t + 2 − t 2 + 4 2 t x^{\ast}(t) = \frac{t + 2 - \sqrt{t^2 + 4}}{2t} x ∗ ( t ) = 2 t t + 2 − t 2 + 4
(( t + 2 ) 2 > t 2 + 4 (t + 2)^2 > t^2 + 4 ( t + 2 ) 2 > t 2 + 4 より 正、 t + 2 − 2 t < t 2 + 4 t + 2 - 2t < \sqrt{t^2 + 4} t + 2 − 2 t < t 2 + 4 より 1 1 1 未満)。命題 6.13 は m = 2 m = 2 m = 2 で x ∗ ( t ) − 0 ≤ 2 / t x^{\ast}(t) - 0 \leq 2/t x ∗ ( t ) − 0 ≤ 2/ t を 与える。直接にも、 t 2 + 4 > t \sqrt{t^2 + 4} > t t 2 + 4 > t より x ∗ ( t ) < 2 2 t = 1 t ≤ 2 t x^{\ast}(t) < \frac{2}{2t} = \frac{1}{t} \leq \frac{2}{t} x ∗ ( t ) < 2 t 2 = t 1 ≤ t 2 。また t 2 + 4 = t + 2 t + O ( t − 3 ) \sqrt{t^2 + 4} = t + \frac{2}{t} + O(t^{-3}) t 2 + 4 = t + t 2 + O ( t − 3 ) より x ∗ ( t ) = 1 t − 1 t 2 + O ( t − 4 ) x^{\ast}(t) = \frac{1}{t} - \frac{1}{t^2} + O(t^{-4}) x ∗ ( t ) = t 1 − t 2 1 + O ( t − 4 ) で、t = 1 , 10 , 100 t = 1, 10, 100 t = 1 , 10 , 100 では 0.382 , 0.0901 , 0.0099 0.382, 0.0901, 0.0099 0.382 , 0.0901 , 0.0099 である。乗数は λ 1 = 1 t x ∗ \lambda_1 = \frac{1}{tx^{\ast}} λ 1 = t x ∗ 1 (x ≥ 0 x \geq 0 x ≥ 0 の 制約)、 λ 2 = 1 t ( 1 − x ∗ ) \lambda_2 = \frac{1}{t(1 - x^{\ast})} λ 2 = t ( 1 − x ∗ ) 1 で、λ 1 → 1 \lambda_1 \to 1 λ 1 → 1 , λ 2 → 0 \lambda_2 \to 0 λ 2 → 0 と なり、最適解 x = 0 x = 0 x = 0 での KKT 条件の 乗数に 近づく。
問題 6.7 ★ ★ ★ f f f を C 2 C^2 C 2 級とし、すべての x x x で μ I ⪯ ∇ 2 f ( x ) ⪯ L I \mu I \preceq \nabla^2 f(x) \preceq LI μ I ⪯ ∇ 2 f ( x ) ⪯ L I (0 < μ ≤ L 0 < \mu \leq L 0 < μ ≤ L )と する。減衰ニュートン法(アルミホ条件の 定数 0 < c < 1 / 2 0 < c < 1/2 0 < c < 1/2 、縮小率 β \beta β 、t ˉ = 1 \bar{t} = 1 t ˉ = 1 )に ついて、 t min = min ( 1 , 2 β ( 1 − c ) μ / L ) t_{\min} = \min(1, 2\beta(1 - c)\mu/L) t m i n = min ( 1 , 2 β ( 1 − c ) μ / L ) と して
f ( x k + 1 ) − p ∗ ≤ ( 1 − 2 c μ t min L ) ( f ( x k ) − p ∗ ) f(x_{k+1}) - p^{\ast} \leq \Bigl(1 - \frac{2c\mu t_{\min}}{L}\Bigr)(f(x_k) - p^{\ast}) f ( x k + 1 ) − p ∗ ≤ ( 1 − L 2 c μ t m i n ) ( f ( x k ) − p ∗ )
を 示せ(任意の 初期点から 線形収束する)。
解答
x = x k x = x_k x = x k , g = ∇ f ( x ) g = \nabla f(x) g = ∇ f ( x ) , H = ∇ 2 f ( x ) H = \nabla^2 f(x) H = ∇ 2 f ( x ) , d = − H − 1 g d = -H^{-1}g d = − H − 1 g , λ 2 = g ⊤ H − 1 g \lambda^2 = g^{\top}H^{-1}g λ 2 = g ⊤ H − 1 g と する。 H − 1 ⪰ 1 L I H^{-1} \succeq \frac{1}{L}I H − 1 ⪰ L 1 I より λ 2 ≥ ∥ g ∥ 2 / L \lambda^2 \geq \lVert g \rVert^2/L λ 2 ≥ ∥ g ∥ 2 / L 。H − 1 ⪯ 1 μ I H^{-1} \preceq \frac{1}{\mu}I H − 1 ⪯ μ 1 I より ∥ d ∥ 2 = ( H − 1 / 2 g ) ⊤ H − 1 ( H − 1 / 2 g ) ≤ 1 μ λ 2 \lVert d \rVert^2 = (H^{-1/2}g)^{\top}H^{-1}(H^{-1/2}g) \leq \frac{1}{\mu}\lambda^2 ∥ d ∥ 2 = ( H − 1/2 g ) ⊤ H − 1 ( H − 1/2 g ) ≤ μ 1 λ 2 (H − 1 / 2 H^{-1/2} H − 1/2 は H − 1 H^{-1} H − 1 の 正の 平方根)。 f f f は 凸で ∇ 2 f ⪯ L I \nabla^2 f \preceq LI ∇ 2 f ⪯ L I なので L L L -平滑で(第2章 定理 2.23)、降下補題より
f ( x + t d ) ≤ f ( x ) − t λ 2 + L 2 t 2 ∥ d ∥ 2 ≤ f ( x ) − t λ 2 ( 1 − L 2 μ t ) f(x + td) \leq f(x) - t\lambda^2 + \frac{L}{2}t^2\lVert d \rVert^2 \leq f(x) - t\lambda^2\Bigl(1 - \frac{L}{2\mu}t\Bigr) f ( x + t d ) ≤ f ( x ) − t λ 2 + 2 L t 2 ∥ d ∥ 2 ≤ f ( x ) − t λ 2 ( 1 − 2 μ L t )
t ≤ 2 ( 1 − c ) μ / L t \leq 2(1 - c)\mu/L t ≤ 2 ( 1 − c ) μ / L なら 右辺は f ( x ) − c t λ 2 f(x) - ct\lambda^2 f ( x ) − c t λ 2 以下なので、アルミホ条件 f ( x + t d ) ≤ f ( x ) + c t g ⊤ d = f ( x ) − c t λ 2 f(x + td) \leq f(x) + ctg^{\top}d = f(x) - ct\lambda^2 f ( x + t d ) ≤ f ( x ) + c t g ⊤ d = f ( x ) − c t λ 2 が 成り立つ。第5章 命題 5.6 の 後半と 同じ 議論で、採られる t t t は t min t_{\min} t m i n 以上である。よって f ( x k + 1 ) ≤ f ( x ) − c t min λ 2 ≤ f ( x ) − c t min L ∥ g ∥ 2 f(x_{k+1}) \leq f(x) - ct_{\min}\lambda^2 \leq f(x) - \frac{ct_{\min}}{L}\lVert g \rVert^2 f ( x k + 1 ) ≤ f ( x ) − c t m i n λ 2 ≤ f ( x ) − L c t m i n ∥ g ∥ 2 。f f f は μ \mu μ -強凸(第2章 定理 2.22)で L L L -平滑なので ∥ g ∥ 2 ≥ 2 μ ( f ( x ) − p ∗ ) \lVert g \rVert^2 \geq 2\mu(f(x) - p^{\ast}) ∥ g ∥ 2 ≥ 2 μ ( f ( x ) − p ∗ ) (第2章 系 2.24 の ポリャク–ロヤシェヴィチの 不等式)で、代入すると 求める 不等式を 得る。 c < 1 / 2 c < 1/2 c < 1/2 , t min ≤ 1 t_{\min} \leq 1 t m i n ≤ 1 , μ ≤ L \mu \leq L μ ≤ L より 係数は 0 0 0 以上 1 1 1 未満である。この 評価は 線形収束しか 与えないが、解の 近くでは 定理 6.4 の 2 次収束が 効く(定理 6.7)。