Lemma

第5章勾配法

目安 8〜11 時間定理など 14演習 6 問
ここまでの道

この章の目標

  • 最急降下法とアルミホ条件による直線探索を定式化し、直線探索が有限回で終わることを証明できる
  • 降下補題から、LL-平滑な凸関数での O(1/k)O(1/k) の収束と強凸関数での線形収束を証明し、どの量がどの速さで収束するかを正確に述べられる
  • 二次関数で条件数が収束を遅くするしくみを計算で示し、スケーリングの重要性を説明できる
  • ネステロフの加速勾配法の O(1/k2)O(1/k^2) の評価を、1 次の方法の下界と比べて説明できる
  • 共役勾配法が二次関数を nn 回以内の反復で最小化することを説明できる
  • 射影勾配法・近接勾配法で制約や ∥x∥1\lVert x \rVert_1 を含む問題を解き、ソフト閾値関数が近接写像であることを証明できる

前提:第2章、02-linear-algebra 第8章(正定値性・固有値)。最適性条件は第1章で扱った。ラッソの統計的な意味は 24 機械学習の数理 第2章 にある。

100 万個の特徴量をもつロジスティック回帰のように、実務の最適化問題の多くは変数が非常に多い。第6章のニュートン法は n×nn \times n のヘッセ行列を使うので n=106n = 10^6 では現実的でなく、勾配 ∇f(x)\nabla f(x) だけを使う1 次の方法 (first-order method) が主役になる。本章では、その速さが第2章の LL-平滑性と強凸性(定義 2.21)から導かれ、条件数 κ=L/μ\kappa = L/\mu に支配されることを示す。後半では、より速い加速法と共役勾配法、制約や微分できない項 λ∥x∥1\lambda\lVert x \rVert_1 を扱う射影勾配法・近接勾配法を学ぶ。

f ⁣:Rn→Rf\colon \mathbb{R}^n \to \mathbb{R} は微分可能とし、最小点 x∗x^{\ast} があるとき p∗=f(x∗)p^{\ast} = f(x^{\ast}) と書く。00 に収束する数列 ek≥0e_k \geq 0 について、ある 0<q<10 < q < 1 と CC で ek≤Cqke_k \leq Cq^k となることを線形収束 (linear convergence)、ek+1/ek→0e_{k+1}/e_k \to 0 を超 1 次収束 (superlinear)、ek+1≤Cek2e_{k+1} \leq Ce_k^2 を 2 次収束 (quadratic)、O(1/k)O(1/k) のように線形収束より遅いものを劣線形収束 (sublinear) という。

5.1 最急降下法と降下補題

単位ベクトル dd の方向の変化率 ⟨∇f(x),d⟩\langle \nabla f(x), d \rangle は、コーシー–シュワルツの不等式より −∥∇f(x)∥-\lVert \nabla f(x) \rVert 以上で、∇f(x)≠0\nabla f(x) \neq 0 なら等号は d=−∇f(x)/∥∇f(x)∥d = -\nabla f(x)/\lVert \nabla f(x) \rVert のときに限る。−∇f(x)-\nabla f(x) は最も急に下る方向である。

定義 5.1(最急降下法, gradient descent)初期点 x0x_0 とステップ幅 tk>0t_k > 0 を与え、xk+1=xk−tk∇f(xk)x_{k+1} = x_k - t_k\nabla f(x_k)(k=0,1,2,…k = 0, 1, 2, \dots)で点列を作る方法を最急降下法(勾配法)という。機械学習ではステップ幅を学習率 (learning rate) とよぶ。

ステップ幅が小さすぎれば進まず、大きすぎれば谷を飛び越える。どこまで大きくしてよいかを教えるのが次の不等式である。

補題 5.2(降下補題, descent lemma)ff が LL-平滑ならば、すべての x,yx, y について

f(y)≤f(x)+⟨∇f(x),y−x⟩+L2∥y−x∥2f(y) \leq f(x) + \langle \nabla f(x), y - x \rangle + \frac{L}{2}\lVert y - x \rVert^2

証明. 第2章 定理 2.23 (1)(LL-平滑性の特徴づけ)で示した。要点は、微分積分学の基本定理により

f(y)−f(x)−⟨∇f(x),y−x⟩=∫01⟨∇f(x+s(y−x))−∇f(x),y−x⟩ ds≤∫01Ls∥y−x∥2 ds=L2∥y−x∥2f(y) - f(x) - \langle \nabla f(x), y - x \rangle = \int_0^1 \langle \nabla f(x + s(y - x)) - \nabla f(x), y - x \rangle\,ds \leq \int_0^1 Ls\lVert y - x \rVert^2\,ds = \frac{L}{2}\lVert y - x \rVert^2

となることである(不等号はコーシー–シュワルツの不等式と LL-平滑性による)。□\square

凸性は使っていない。ff は xx で接する放物面で上から押さえられる。

系 5.3(1 回の反復での減少量)ff を LL-平滑とし、x+=x−t∇f(x)x^{+} = x - t\nabla f(x), 0<t≤1/L0 < t \leq 1/L とすると

f(x+)≤f(x)−t(1−Lt2)∥∇f(x)∥2≤f(x)−t2∥∇f(x)∥2f(x^{+}) \leq f(x) - t\Bigl(1 - \frac{Lt}{2}\Bigr)\lVert \nabla f(x) \rVert^2 \leq f(x) - \frac{t}{2}\lVert \nabla f(x) \rVert^2

証明. 補題 5.2 で y=x+y = x^{+} とすると右辺は f(x)−t∥∇f(x)∥2+Lt22∥∇f(x)∥2f(x) - t\lVert \nabla f(x) \rVert^2 + \frac{Lt^2}{2}\lVert \nabla f(x) \rVert^2 で、t≤1/Lt \leq 1/L なら 1−Lt/2≥1/21 - Lt/2 \geq 1/2。□\square

注意 5.4(非凸の場合)凸性がなくても、f≥finf⁡f \geq f_{\inf} なら tk=1/Lt_k = 1/L として系 5.3 を i=0,…,k−1i = 0, \dots, k - 1 について足すと 12L∑i<k∥∇f(xi)∥2≤f(x0)−finf⁡\frac{1}{2L}\sum_{i < k}\lVert \nabla f(x_i) \rVert^2 \leq f(x_0) - f_{\inf} で、min⁡i<k∥∇f(xi)∥2≤2L(f(x0)−finf⁡)/k\min_{i < k}\lVert \nabla f(x_i) \rVert^2 \leq 2L(f(x_0) - f_{\inf})/k、∇f(xk)→0\nabla f(x_k) \to 0 を得る。保証されるのは停留点に近づくことだけで、鞍点(第1章 例 1.23 の原点など)の近くで止まることもある。

5.2 直線探索とアルミホ条件

LL は多くの場合わからず、わかっても大域的な LL は局所的な曲がり方より大きすぎることが多い。f(xk+td)f(x_k + td) を厳密に最小化するのは高くつくので、「十分に減った」ことだけを確かめる。

定義 5.5(アルミホ条件, Armijo condition)dd を xx における降下方向(⟨∇f(x),d⟩<0\langle \nabla f(x), d \rangle < 0)、0<c<10 < c < 1 とする。ステップ幅 t>0t > 0 が

f(x+td)≤f(x)+ct⟨∇f(x),d⟩(5.1)f(x + td) \leq f(x) + ct\langle \nabla f(x), d \rangle \tag{5.1}

を満たすとき、アルミホ条件を満たすという。初期値 tˉ>0\bar{t} > 0 と 0<β<10 < \beta < 1 を決め、t=tˉ,βtˉ,β2tˉ,…t = \bar{t}, \beta\bar{t}, \beta^2\bar{t}, \dots と試して (5.1) を満たす最初の tt を採る方法をバックトラッキング (backtracking line search) という。

(5.1) の右辺は傾きを cc 倍にゆるめた接線である。cc は小さめ(たとえば 10−410^{-4})、β=1/2\beta = 1/2 がよく使われる。

命題 5.6(バックトラッキングは有限回で終わる)ff が xx で微分可能で ⟨∇f(x),d⟩<0\langle \nabla f(x), d \rangle < 0 ならば、ある t0>0t_0 > 0 があって、0<t≤t00 < t \leq t_0 のすべての tt が (5.1) を満たす。したがってバックトラッキングは有限回の試行で終わる。さらに ff が LL-平滑で d=−∇f(x)≠0d = -\nabla f(x) \neq 0 なら、0<t≤2(1−c)/L0 < t \leq 2(1 - c)/L のすべての tt が (5.1) を満たし、採られる tt は min⁡(tˉ,2β(1−c)/L)\min(\bar{t}, 2\beta(1 - c)/L) 以上である。

証明. a=−⟨∇f(x),d⟩>0a = -\langle \nabla f(x), d \rangle > 0, r(t)=f(x+td)−f(x)+atr(t) = f(x + td) - f(x) + at とおくと、微分可能性より r(t)/t→0r(t)/t \to 0(t→+0t \to +0)。(5.1) は r(t)≤(1−c)atr(t) \leq (1 - c)at と同値で、(1−c)a>0(1 - c)a > 0 なので十分小さい t>0t > 0 で成り立つ。試す t=βjtˉt = \beta^j\bar{t} は 00 に近づくから、有限回で t0t_0 以下になる。後半:系 5.3 の計算から f(x−t∇f(x))≤f(x)−t(1−Lt/2)∥∇f(x)∥2f(x - t\nabla f(x)) \leq f(x) - t(1 - Lt/2)\lVert \nabla f(x) \rVert^2 で、t≤2(1−c)/Lt \leq 2(1 - c)/L なら 1−Lt/2≥c1 - Lt/2 \geq c なので (5.1) が成り立つ。最初の tˉ\bar{t} が採られなければ、採られた tt について t/βt/\beta は (5.1) を満たさなかったので t/β>2(1−c)/Lt/\beta > 2(1 - c)/L。□\square

したがって LL を知らなくても毎回 f(xk+1)≤f(xk)−ctmin⁡∥∇f(xk)∥2f(x_{k+1}) \leq f(x_k) - ct_{\min}\lVert \nabla f(x_k) \rVert^2(tmin⁡=min⁡(tˉ,2β(1−c)/L)t_{\min} = \min(\bar{t}, 2\beta(1 - c)/L))が保証される。ここから次節と同じ議論で、μ\mu-強凸なら関数値の誤差は毎回 1−2cμtmin⁡1 - 2c\mu t_{\min} 倍以下になり(定理 5.8 の証明の前半を参照)、c=1/2c = 1/2 なら定理 5.7 の評価が 1/L1/L を tmin⁡t_{\min} に置き換えた形で成り立つ(問題 5.2)。c<1/2c < 1/2 でも O(1/k)O(1/k) の収束は示せるが、定数は変わる。ウルフ条件は第6章で扱う。

5.3 収束の速さ

定理 5.7(LL-平滑な凸関数での収束)ff を LL-平滑な凸関数とし、最小点 x∗x^{\ast} をもつとする。tk=1/Lt_k = 1/L の最急降下法について f(xk)f(x_k) と ∥xk−x∗∥\lVert x_k - x^{\ast} \rVert は単調非増加で、k≥1k \geq 1 について

f(xk)−p∗≤L∥x0−x∗∥22kf(x_k) - p^{\ast} \leq \frac{L\lVert x_0 - x^{\ast} \rVert^2}{2k}

証明. g=∇f(xk)g = \nabla f(x_k) とおく。系 5.3 と凸関数の 1 次条件 f(xk)≤p∗+⟨g,xk−x∗⟩f(x_k) \leq p^{\ast} + \langle g, x_k - x^{\ast} \rangle(第2章 定理 2.14)より

f(xk+1)≤p∗+⟨g,xk−x∗⟩−12L∥g∥2=p∗+L2(∥xk−x∗∥2−∥xk−x∗−1Lg∥2)=p∗+L2(∥xk−x∗∥2−∥xk+1−x∗∥2)\begin{aligned} f(x_{k+1}) &\leq p^{\ast} + \langle g, x_k - x^{\ast} \rangle - \frac{1}{2L}\lVert g \rVert^2 = p^{\ast} + \frac{L}{2}\Bigl(\lVert x_k - x^{\ast} \rVert^2 - \Bigl\lVert x_k - x^{\ast} - \frac{1}{L}g \Bigr\rVert^2\Bigr) \\ &= p^{\ast} + \frac{L}{2}\bigl(\lVert x_k - x^{\ast} \rVert^2 - \lVert x_{k+1} - x^{\ast} \rVert^2\bigr) \end{aligned}

(最初の等号は展開すれば確かめられる)。左辺は p∗p^{\ast} 以上なので ∥xk+1−x∗∥≤∥xk−x∗∥\lVert x_{k+1} - x^{\ast} \rVert \leq \lVert x_k - x^{\ast} \rVert。f(xk+1)≤f(xk)f(x_{k+1}) \leq f(x_k) は系 5.3 による。上の不等式を k=0,…,K−1k = 0, \dots, K - 1 について足すと右辺は順に打ち消し合い、∑k=1K(f(xk)−p∗)≤L2∥x0−x∗∥2\sum_{k=1}^{K}(f(x_k) - p^{\ast}) \leq \frac{L}{2}\lVert x_0 - x^{\ast} \rVert^2。f(xk)f(x_k) は単調非増加だから左辺は K(f(xK)−p∗)K(f(x_K) - p^{\ast}) 以上である。□\square

精度を 1 桁上げるには反復回数が 10 倍要る。評価は次元 nn によらない。定数の異なる評価もある(Nesterov, Lectures on Convex Optimization の 2.1 節は別の議論で 2L∥x0−x∗∥2k+4\frac{2L\lVert x_0 - x^{\ast} \rVert^2}{k + 4} を示している)。

定理 5.8(強凸関数での線形収束)ff を μ\mu-強凸かつ LL-平滑とし、κ=L/μ\kappa = L/\mu とする。tk=1/Lt_k = 1/L の最急降下法について

f(xk)−p∗≤(1−1κ)k(f(x0)−p∗),∥xk−x∗∥2≤(1−1κ)k∥x0−x∗∥2f(x_k) - p^{\ast} \leq \Bigl(1 - \frac{1}{\kappa}\Bigr)^k(f(x_0) - p^{\ast}), \qquad \lVert x_k - x^{\ast} \rVert^2 \leq \Bigl(1 - \frac{1}{\kappa}\Bigr)^k\lVert x_0 - x^{\ast} \rVert^2

すなわち、目的関数の値の誤差と、最小点までの距離の 2 乗が、どちらも毎回 1−1/κ1 - 1/\kappa 倍以下になる(距離そのものは 1−1/κ\sqrt{1 - 1/\kappa} 倍以下)。

証明. 第2章 系 2.24 より、ff はただ一つの最小点 x∗x^{\ast} をもち、12L∥∇f(x)∥2≤f(x)−p∗≤12μ∥∇f(x)∥2\frac{1}{2L}\lVert \nabla f(x) \rVert^2 \leq f(x) - p^{\ast} \leq \frac{1}{2\mu}\lVert \nabla f(x) \rVert^2 が成り立つ(右側はポリャク–ロヤシェヴィチの不等式)。

関数値:系 5.3 と右側の不等式より f(xk+1)−p∗≤f(xk)−p∗−12L∥∇f(xk)∥2≤(1−μL)(f(xk)−p∗)f(x_{k+1}) - p^{\ast} \leq f(x_k) - p^{\ast} - \frac{1}{2L}\lVert \nabla f(x_k) \rVert^2 \leq (1 - \frac{\mu}{L})(f(x_k) - p^{\ast})。

距離:g=∇f(xk)g = \nabla f(x_k) とすると ∥xk+1−x∗∥2=∥xk−x∗∥2−2L⟨g,xk−x∗⟩+1L2∥g∥2\lVert x_{k+1} - x^{\ast} \rVert^2 = \lVert x_k - x^{\ast} \rVert^2 - \frac{2}{L}\langle g, x_k - x^{\ast} \rangle + \frac{1}{L^2}\lVert g \rVert^2。強凸性の特徴づけ(第2章 定理 2.22 の 2)の不等式 p∗≥f(xk)+⟨g,x∗−xk⟩+μ2∥x∗−xk∥2p^{\ast} \geq f(x_k) + \langle g, x^{\ast} - x_k \rangle + \frac{\mu}{2}\lVert x^{\ast} - x_k \rVert^2 から ⟨g,xk−x∗⟩≥f(xk)−p∗+μ2∥xk−x∗∥2\langle g, x_k - x^{\ast} \rangle \geq f(x_k) - p^{\ast} + \frac{\mu}{2}\lVert x_k - x^{\ast} \rVert^2、左側の不等式から ∥g∥2≤2L(f(xk)−p∗)\lVert g \rVert^2 \leq 2L(f(x_k) - p^{\ast})。代入すると f(xk)−p∗f(x_k) - p^{\ast} の項が打ち消し合い、∥xk+1−x∗∥2≤(1−μL)∥xk−x∗∥2\lVert x_{k+1} - x^{\ast} \rVert^2 \leq (1 - \frac{\mu}{L})\lVert x_k - x^{\ast} \rVert^2。□\square

(1−1/κ)k≤e−k/κ(1 - 1/\kappa)^k \leq e^{-k/\kappa} なので、誤差を ε\varepsilon 倍にするには約 κlog⁡(1/ε)\kappa\log(1/\varepsilon) 回で足りる。ステップ幅 2/(μ+L)2/(\mu + L) では距離が毎回 κ−1κ+1\frac{\kappa - 1}{\kappa + 1} 倍以下になる(Nesterov の本の 2.1 節。二次関数の場合は次節で示す)。

5.4 条件数と収束の遅さ

Q≻0Q \succ 0 の固有値を μ=λ1≤⋯≤λn=L\mu = \lambda_1 \leq \cdots \leq \lambda_n = L とし、f(x)=12x⊤Qx−c⊤xf(x) = \frac{1}{2}x^{\top}Qx - c^{\top}x を考える。x∗=Q−1cx^{\ast} = Q^{-1}c, ∇f(x)=Q(x−x∗)\nabla f(x) = Q(x - x^{\ast}) なので、固定ステップ tt の最急降下法の誤差 ek=xk−x∗e_k = x_k - x^{\ast} は ek+1=(I−tQ)eke_{k+1} = (I - tQ)e_k に従う。QQ の正規直交な固有ベクトル uiu_i(02-linear-algebra 第7章 定理 7.32)で e0=∑iaiuie_0 = \sum_i a_iu_i と展開すると、ek=∑i(1−tλi)kaiuie_k = \sum_i(1 - t\lambda_i)^ka_iu_i である。

命題 5.9(二次関数での最急降下法)ρ(t)=max⁡i∣1−tλi∣=max⁡(∣1−tμ∣,∣1−tL∣)\rho(t) = \max_i\lvert 1 - t\lambda_i \rvert = \max(\lvert 1 - t\mu \rvert, \lvert 1 - tL \rvert) とすると ∥ek∥≤ρ(t)k∥e0∥\lVert e_k \rVert \leq \rho(t)^k\lVert e_0 \rVert である。

  1. ρ(t)<1  ⟺  0<t<2/L\rho(t) < 1 \iff 0 < t < 2/L。t>2/Lt > 2/L なら、unu_n の成分は毎回 ∣1−tL∣>1\lvert 1 - tL \rvert > 1 倍になり、an≠0a_n \neq 0 なら発散する。
  2. ρ(t)\rho(t) は t=2/(μ+L)t = 2/(\mu + L) で最小値 κ−1κ+1\frac{\kappa - 1}{\kappa + 1} をとる。t=1/Lt = 1/L なら ρ=1−1/κ\rho = 1 - 1/\kappa である。

証明. ∥ek∥2=∑i(1−tλi)2kai2≤ρ(t)2k∥e0∥2\lVert e_k \rVert^2 = \sum_i(1 - t\lambda_i)^{2k}a_i^2 \leq \rho(t)^{2k}\lVert e_0 \rVert^2 で、∣1−tλ∣\lvert 1 - t\lambda \rvert は λ\lambda の凸関数なので最大は λ=μ,L\lambda = \mu, L でとられる。1 は ∣1−tλ∣<1  ⟺  0<tλ<2\lvert 1 - t\lambda \rvert < 1 \iff 0 < t\lambda < 2 による。2:∣1−tμ∣\lvert 1 - t\mu \rvert は t≤1/μt \leq 1/\mu で減少、∣1−tL∣\lvert 1 - tL \rvert は t≥1/Lt \geq 1/L で増加するので、最大値は 1−tμ=tL−11 - t\mu = tL - 1、すなわち t=2/(μ+L)t = 2/(\mu + L) で最小になり、値は L−μL+μ\frac{L - \mu}{L + \mu}。□\square

最も急な方向(λ=L\lambda = L)に合わせて t<2/Lt < 2/L とすると、最も緩い方向(λ=μ\lambda = \mu)の誤差は毎回 1−tμ>1−2/κ1 - t\mu > 1 - 2/\kappa 倍にしかならない。これが条件数の大きい問題で勾配法が遅い理由である。

例 5.10(谷底のジグザグ)f(x)=12(x12+κx22)f(x) = \frac{1}{2}(x_1^2 + \kappa x_2^2)(κ>1\kappa > 1)を、毎回 tt を厳密に最小化する直線探索(二次関数では t=∥g∥2/(g⊤Qg)t = \lVert g \rVert^2/(g^{\top}Qg), g=∇f(x)g = \nabla f(x))で x0=(κ,1)x_0 = (\kappa, 1) から解く。x=a(κ,σ)x = a(\kappa, \sigma)(σ=±1\sigma = \pm 1)なら g=aκ(1,σ)g = a\kappa(1, \sigma)、t=2/(κ+1)t = 2/(\kappa + 1) で、次の点は aκ−1κ+1(κ,−σ)a\frac{\kappa - 1}{\kappa + 1}(\kappa, -\sigma) になる。よって

xk=(κ−1κ+1)k(κ,(−1)k),f(xk)=(κ−1κ+1)2kf(x0)x_k = \Bigl(\frac{\kappa - 1}{\kappa + 1}\Bigr)^k\bigl(\kappa, (-1)^k\bigr), \qquad f(x_k) = \Bigl(\frac{\kappa - 1}{\kappa + 1}\Bigr)^{2k}f(x_0)

で、点は x2x_2 の符号を毎回変えながら谷底を往復する。f(xk)≤10−6f(x0)f(x_k) \leq 10^{-6}f(x_0) となる最小の kk は、κ=10,100,1000\kappa = 10, 100, 1000 でそれぞれ 35,346,345435, 346, 3454 回で、ほぼ κ\kappa に比例する(NumPy で確かめた)。直線探索を厳密にしても、方向が悪ければ遅い。

注意

「学習率を大きくすれば速く収束する」は誤りである。命題 5.9 のとおり t>2/Lt > 2/L では発散し、t=2/Lt = 2/L でも unu_n 方向の誤差は符号を変えるだけで減らない。損失が振動したり増え続けたりしたら、まず学習率と特徴量のスケール(LL を決める)を疑う。

ヒント

実務では 条件数は変数のスケールで大きく変わる(第2章 例 2.25 と直後の「実務では」)。基本の対策は特徴量の標準化と、x=Pyx = Py と変数を取り替えて yy について勾配法を行う前処理 (preconditioning) である(xx で書くと xk+1=xk−tPP⊤∇f(xk)x_{k+1} = x_k - tPP^{\top}\nabla f(x_k)。PP⊤PP^{\top} を毎回その点でのヘッセ行列の逆行列に取り替え、t=1t = 1 としたものがニュートン法)。学習率はバックトラッキングで決めるほうが安全なことが多い。また、勾配が小さくても最小点に近いとは限らず、∥x−x∗∥\lVert x - x^{\ast} \rVert は ∥∇f(x)∥/μ\lVert \nabla f(x) \rVert/\mu 程度まで大きくありうる。

5.5 ネステロフの加速勾配法

最急降下法は直前の点の勾配しか使わない。過去の勾配も使えばどこまで速くできるか。まず限界を述べる。

定理 5.11(1 次の方法の下界、主張)1≤k≤(n−1)/21 \leq k \leq (n - 1)/2 と x0∈Rnx_0 \in \mathbb{R}^n に対し、LL-平滑な凸な二次関数 ff で、xj∈x0+span⁡{∇f(x0),…,∇f(xj−1)}x_j \in x_0 + \operatorname{span}\lbrace \nabla f(x_0), \dots, \nabla f(x_{j-1}) \rbrace(j=1,…,kj = 1, \dots, k)を満たす任意の点列について f(xk)−p∗≥3L∥x0−x∗∥232(k+1)2f(x_k) - p^{\ast} \geq \frac{3L\lVert x_0 - x^{\ast} \rVert^2}{32(k + 1)^2} となるものが存在する(Nesterov の本の 2.1 節)。

O(1/k)O(1/k) と O(1/k2)O(1/k^2) のすき間を埋めるのがネステロフ(1983 年)の方法である。

定義 5.12(ネステロフの加速勾配法, accelerated gradient method)y0=x0y_0 = x_0 とし、k=0,1,2,…k = 0, 1, 2, \dots について

xk+1=yk−1L∇f(yk),yk+1=xk+1+kk+3(xk+1−xk)x_{k+1} = y_k - \frac{1}{L}\nabla f(y_k), \qquad y_{k+1} = x_{k+1} + \frac{k}{k + 3}(x_{k+1} - x_k)

yk+1y_{k+1} は直前の移動の方向に慣性(モメンタム)で少し先へ進んだ点で、そこで勾配を計算する。

定理 5.13(加速勾配法の収束)ff を LL-平滑な凸関数とし、最小点 x∗x^{\ast} をもつとする。定義 5.12 の点列は、k≥1k \geq 1 について f(xk)−p∗≤2L∥x0−x∗∥2(k+1)2f(x_k) - p^{\ast} \leq \dfrac{2L\lVert x_0 - x^{\ast} \rVert^2}{(k + 1)^2} を満たす。

証明. θk=2/(k+2)\theta_k = 2/(k + 2)、v0=x0v_0 = x_0, vk+1=xk+(xk+1−xk)/θkv_{k+1} = x_k + (x_{k+1} - x_k)/\theta_k とおくと、帰納法で yk=(1−θk)xk+θkvky_k = (1 - \theta_k)x_k + \theta_kv_k が確かめられ(θk+1(θk−1−1)=kk+3\theta_{k+1}(\theta_k^{-1} - 1) = \frac{k}{k + 3} による)、g=∇f(yk)g = \nabla f(y_k) として vk+1=vk−1θkLgv_{k+1} = v_k - \frac{1}{\theta_kL}g となる。系 5.3 より f(xk+1)≤f(yk)−12L∥g∥2f(x_{k+1}) \leq f(y_k) - \frac{1}{2L}\lVert g \rVert^2。凸性 f(yk)≤f(z)+⟨g,yk−z⟩f(y_k) \leq f(z) + \langle g, y_k - z \rangle を z=xkz = x_k と z=x∗z = x^{\ast} について 1−θk1 - \theta_k 倍と θk\theta_k 倍して足すと、yk−(1−θk)xk−θkx∗=θk(vk−x∗)y_k - (1 - \theta_k)x_k - \theta_kx^{\ast} = \theta_k(v_k - x^{\ast}) より

f(xk+1)−p∗≤(1−θk)(f(xk)−p∗)+θk⟨g,vk−x∗⟩−12L∥g∥2f(x_{k+1}) - p^{\ast} \leq (1 - \theta_k)(f(x_k) - p^{\ast}) + \theta_k\langle g, v_k - x^{\ast} \rangle - \frac{1}{2L}\lVert g \rVert^2

最後の 2 項は、vk+1v_{k+1} の式を展開すると θk2L2(∥vk−x∗∥2−∥vk+1−x∗∥2)\frac{\theta_k^2L}{2}(\lVert v_k - x^{\ast} \rVert^2 - \lVert v_{k+1} - x^{\ast} \rVert^2) に等しい。θk2\theta_k^2 で割り、1−θkθk2=k(k+2)4≤(k+1)24\frac{1 - \theta_k}{\theta_k^2} = \frac{k(k + 2)}{4} \leq \frac{(k + 1)^2}{4} を使うと、Ek=(k+1)24(f(xk)−p∗)+L2∥vk−x∗∥2E_k = \frac{(k + 1)^2}{4}(f(x_k) - p^{\ast}) + \frac{L}{2}\lVert v_k - x^{\ast} \rVert^2 は k≥1k \geq 1 で単調非増加で、θ0=1\theta_0 = 1 より E1≤L2∥x0−x∗∥2E_1 \leq \frac{L}{2}\lVert x_0 - x^{\ast} \rVert^2。よって (k+1)24(f(xk)−p∗)≤Ek≤L2∥x0−x∗∥2\frac{(k + 1)^2}{4}(f(x_k) - p^{\ast}) \leq E_k \leq \frac{L}{2}\lVert x_0 - x^{\ast} \rVert^2。□\square

定理 5.11 より、この速さは定数倍を除いて改善できない(加速法は最適な 1 次の方法である)。ff が μ\mu-強凸なら、慣性の係数を定数 κ−1κ+1\frac{\sqrt{\kappa} - 1}{\sqrt{\kappa} + 1} にした方法(x−1=x0x_{-1} = x_0 として yk=xk+κ−1κ+1(xk−xk−1)y_k = x_k + \frac{\sqrt{\kappa} - 1}{\sqrt{\kappa} + 1}(x_k - x_{k-1}), xk+1=yk−1L∇f(yk)x_{k+1} = y_k - \frac{1}{L}\nabla f(y_k))が f(xk)−p∗≤(1−1/κ)k(f(x0)−p∗+μ2∥x0−x∗∥2)f(x_k) - p^{\ast} \leq (1 - 1/\sqrt{\kappa})^k(f(x_0) - p^{\ast} + \frac{\mu}{2}\lVert x_0 - x^{\ast} \rVert^2) を満たし(主張。Nesterov の本の 2.2 節)、反復回数が κlog⁡(1/ε)\kappa\log(1/\varepsilon) から κlog⁡(1/ε)\sqrt{\kappa}\log(1/\varepsilon) に減る。

注意

加速法では f(xk)f(x_k) は単調に減るとは限らない。慣性で谷を行き過ぎて値が一時的に増えるのは正常な動作である(増えたら慣性をリセットする再出発 (restart) という工夫もある)。定理 5.13 は凸性と正確な勾配を前提にしている。非凸関数ではこの保証はなく、勾配に誤差があると、加速法は最急降下法より誤差を蓄積しやすい。

5.6 共役勾配法

二次関数 f(x)=12x⊤Qx−c⊤xf(x) = \frac{1}{2}x^{\top}Qx - c^{\top}x(Q≻0Q \succ 0)の最小化は Qx=cQx = c を解くことと同じである。QQ が大きく疎なとき、QQ とベクトルの積だけで解く方法として共役勾配法が使われる。

定義 5.14(共役)00 でないベクトル d0,…,dm−1d_0, \dots, d_{m-1} が di⊤Qdj=0d_i^{\top}Qd_j = 0(i≠ji \neq j)を満たすとき QQ-共役 (QQ-conjugate) という。

QQ-共役は内積 ⟨u,v⟩Q=u⊤Qv\langle u, v \rangle_Q = u^{\top}Qv についての直交性なので、QQ-共役なベクトルは一次独立である。

定理 5.15(共役方向法は nn 回で終わる)d0,…,dn−1d_0, \dots, d_{n-1} を QQ-共役とし、x0x_0 から直線 xk+αdkx_k + \alpha d_k 上の最小点 xk+1=xk+αkdkx_{k+1} = x_k + \alpha_kd_k, αk=−∇f(xk)⊤dk/(dk⊤Qdk)\alpha_k = -\nabla f(x_k)^{\top}d_k/(d_k^{\top}Qd_k)(α\alpha についての導関数 ∇f(xk)⊤dk+αdk⊤Qdk\nabla f(x_k)^{\top}d_k + \alpha d_k^{\top}Qd_k を 00 にする値)へ順に進むと、xn=x∗x_n = x^{\ast} である。

証明. did_i は基底なので x∗−x0=∑iσidix^{\ast} - x_0 = \sum_i\sigma_id_i と書け、dkd_k との QQ-内積をとると σk=dk⊤Q(x∗−x0)/(dk⊤Qdk)\sigma_k = d_k^{\top}Q(x^{\ast} - x_0)/(d_k^{\top}Qd_k)。xk−x0∈span⁡{d0,…,dk−1}x_k - x_0 \in \operatorname{span}\lbrace d_0, \dots, d_{k-1} \rbrace は dkd_k と QQ-直交し、∇f(xk)=Q(xk−x∗)\nabla f(x_k) = Q(x_k - x^{\ast}) だから −∇f(xk)⊤dk=dk⊤Q(x∗−xk)=dk⊤Q(x∗−x0)-\nabla f(x_k)^{\top}d_k = d_k^{\top}Q(x^{\ast} - x_k) = d_k^{\top}Q(x^{\ast} - x_0)。よって αk=σk\alpha_k = \sigma_k で、xn=x0+∑iσidi=x∗x_n = x_0 + \sum_i\sigma_id_i = x^{\ast}。□\square

共役な方向を、勾配から 1 本ずつ作りながら進むのが共役勾配法である。

定義 5.16(共役勾配法, conjugate gradient method)r0=Qx0−cr_0 = Qx_0 - c(=∇f(x0)= \nabla f(x_0))、d0=−r0d_0 = -r_0 とし、rk≠0r_k \neq 0 である間、次を繰り返す。

αk=rk⊤rkdk⊤Qdk,xk+1=xk+αkdk,rk+1=rk+αkQdk,dk+1=−rk+1+rk+1⊤rk+1rk⊤rkdk\alpha_k = \frac{r_k^{\top}r_k}{d_k^{\top}Qd_k}, \quad x_{k+1} = x_k + \alpha_kd_k, \quad r_{k+1} = r_k + \alpha_kQd_k, \quad d_{k+1} = -r_{k+1} + \frac{r_{k+1}^{\top}r_{k+1}}{r_k^{\top}r_k}d_k

定理 5.17(共役勾配法の性質、主張)Q≻0Q \succ 0 とする。rk≠0r_k \neq 0 である限り、d0,…,dkd_0, \dots, d_k は QQ-共役、r0,…,rkr_0, \dots, r_k は互いに直交し、xkx_k は x0+span⁡{r0,Qr0,…,Qk−1r0}x_0 + \operatorname{span}\lbrace r_0, Qr_0, \dots, Q^{k-1}r_0 \rbrace 上の ff の最小点である。したがって厳密に計算すれば、高々 nn 回(実は QQ の相異なる固有値の個数以下の回数)で xk=x∗x_k = x^{\ast} となる。また ∥v∥Q=v⊤Qv\lVert v \rVert_Q = \sqrt{v^{\top}Qv} として ∥xk−x∗∥Q≤2(κ−1κ+1)k∥x0−x∗∥Q\lVert x_k - x^{\ast} \rVert_Q \leq 2\bigl(\frac{\sqrt{\kappa} - 1}{\sqrt{\kappa} + 1}\bigr)^k\lVert x_0 - x^{\ast} \rVert_Q が成り立つ(Nocedal–Wright, Numerical Optimization 第5章)。

例 5.18 x0=0x_0 = 0 から

f(x)=2x12+2x1x2+x22−2x1=12x⊤Qx−c⊤x,Q=(4222),c=(20)f(x) = 2x_1^2 + 2x_1x_2 + x_2^2 - 2x_1 = \frac{1}{2}x^{\top}Qx - c^{\top}x, \qquad Q = \begin{pmatrix} 4 & 2 \\ 2 & 2 \end{pmatrix}, \quad c = \begin{pmatrix} 2 \\ 0 \end{pmatrix}

を最小化する(x∗=(1,−1)x^{\ast} = (1, -1), p∗=−1p^{\ast} = -1, κ=(7+35)/2≈6.85\kappa = (7 + 3\sqrt{5})/2 \approx 6.85)。共役勾配法では r0=(−2,0)r_0 = (-2, 0), d0=(2,0)d_0 = (2, 0), α0=4/16=1/4\alpha_0 = 4/16 = 1/4 で x1=(1/2,0)x_1 = (1/2, 0), r1=(0,1)r_1 = (0, 1)。次に d1=−r1+14d0=(1/2,−1)d_1 = -r_1 + \frac{1}{4}d_0 = (1/2, -1) で、Qd1=(0,−1)Qd_1 = (0, -1) より d0⊤Qd1=0d_0^{\top}Qd_1 = 0(共役)、α1=1/(d1⊤Qd1)=1\alpha_1 = 1/(d_1^{\top}Qd_1) = 1 で x2=(1,−1)=x∗x_2 = (1, -1) = x^{\ast}。2 回で終わる。同じ点から厳密な直線探索の最急降下法を行うと、x1x_1 は同じだがその後は (1/2,−1/2),(3/4,−1/2),(3/4,−3/4),…(1/2, -1/2), (3/4, -1/2), (3/4, -3/4), \dots とジグザグに進み、f(xk)−p∗=2−kf(x_k) - p^{\ast} = 2^{-k} で(sympy で厳密に確かめた)有限回では終わらない。

丸め誤差があると共役性が少しずつ崩れて nn 回での終了は保証されないが、共役勾配法は大規模な正定値の連立一次方程式(リッジ回帰の正規方程式、第6章のニュートン方程式など)の反復解法として広く使われる。二次関数でない ff への拡張を非線形共役勾配法という。

固有値が 11 から κ\kappa まで等間隔に並ぶ n=100n = 100 次元の二次関数(QQ は対角、c=1c = \mathbf{1}, x0=0x_0 = 0)で、∥xk−x∗∥≤10−6∥x0−x∗∥\lVert x_k - x^{\ast} \rVert \leq 10^{-6}\lVert x_0 - x^{\ast} \rVert となるまでの反復回数を NumPy で数えると次のようになった(加速法は強凸版)。

κ\kappa 1010 100100 10001000 1000010000
最急降下法(t=1/Lt = 1/L) 121 1351 13802 138148
加速法 41 156 519 1660
共役勾配法 22 46 51 52

κ\kappa が 10 倍になると、最急降下法の回数はほぼ 10 倍(κlog⁡106≈13.8κ\kappa\log 10^6 \approx 13.8\kappa に近い)、加速法はほぼ 10≈3.2\sqrt{10} \approx 3.2 倍で、理論どおりそれぞれ κ\kappa と κ\sqrt{\kappa} に比例する。共役勾配法は n=100n = 100 回より少ない回数で終わる。

5.7 射影勾配法

非負制約・上下限・予算制約のように、閉凸集合 CC の上で ff を最小化したいことは多い。勾配で進んだ点を CC に射影して戻す方法

xk+1=PC(xk−t∇f(xk))x_{k+1} = P_C\bigl(x_k - t\nabla f(x_k)\bigr)

を射影勾配法 (projected gradient method) という。箱への射影は成分ごとの切り詰め、球への射影は縮小で、ともに安く計算できる(第2章 例 2.5)。

命題 5.19(射影勾配法の不動点)CC を空でない閉凸集合、ff を微分可能な凸関数、t>0t > 0 とする。x∗∈Cx^{\ast} \in C が CC 上の ff の最小点であるための必要十分条件は x∗=PC(x∗−t∇f(x∗))x^{\ast} = P_C(x^{\ast} - t\nabla f(x^{\ast})) である。

証明. 射影定理(第2章 定理 2.4)の特徴づけ (2.1) より、x∗=PC(x∗−t∇f(x∗))x^{\ast} = P_C(x^{\ast} - t\nabla f(x^{\ast})) は「すべての y∈Cy \in C で ⟨−t∇f(x∗),y−x∗⟩≤0\langle -t\nabla f(x^{\ast}), y - x^{\ast} \rangle \leq 0」と同値で、これは凸最適化の最適性条件(第2章 定理 2.19 の 2)により x∗x^{\ast} が CC 上の最小点であることと同値である。□\square

射影勾配法が止まる点はちょうど最適解である。t=1/Lt = 1/L なら定理 5.7 と同じ評価が成り立つ(次節の定理 5.23 で h=0h = 0 とした場合)。強凸なら線形収束する(問題 5.6)。

5.8 近接勾配法とラッソ

ラッソ 12∥Ax−b∥2+λ∥x∥1\frac{1}{2}\lVert Ax - b \rVert^2 + \lambda\lVert x \rVert_1 は xi=0x_i = 0 で微分できないので、そのままでは勾配法が使えない(劣勾配で代用すると値が単調に減らず、収束も遅い)。そこで、滑らかな部分だけを 1 次近似する。

以下、CC を空でない閉凸集合、ff を LL-平滑な凸関数、h ⁣:Rn→Rh\colon \mathbb{R}^n \to \mathbb{R} を連続な凸関数(微分可能でなくてよい。実は Rn\mathbb{R}^n 上の凸関数は常に連続である)とし、CC 上で F=f+hF = f + h を最小化する。主な例は C=RnC = \mathbb{R}^n, h=λ∥x∥1h = \lambda\lVert x \rVert_1(ラッソ)と h=0h = 0(射影勾配法)である。ff だけを xkx_k で 1 次近似して罰則を加えた ⟨∇f(xk),u−xk⟩+12t∥u−xk∥2+h(u)\langle \nabla f(x_k), u - x_k \rangle + \frac{1}{2t}\lVert u - x_k \rVert^2 + h(u) を CC 上で最小化することは、平方完成により h(u)+12t∥u−(xk−t∇f(xk))∥2h(u) + \frac{1}{2t}\lVert u - (x_k - t\nabla f(x_k)) \rVert^2 を最小化することと同じである。

定義 5.20(近接写像, proximal operator)t>0t > 0, v∈Rnv \in \mathbb{R}^n に対し Tt(v)=argmin⁡u∈C(h(u)+12t∥u−v∥2)T_t(v) = \operatorname{argmin}_{u \in C}\bigl(h(u) + \frac{1}{2t}\lVert u - v \rVert^2\bigr) とする。C=RnC = \mathbb{R}^n のときこれを prox⁡th(v)\operatorname{prox}_{th}(v) と書き、thth の近接写像という。h=0h = 0 なら Tt=PCT_t = P_C である。xk+1=Tt(xk−t∇f(xk))x_{k+1} = T_t(x_k - t\nabla f(x_k)) で点列を作る方法を近接勾配法 (proximal gradient method) という。

最小点はただ一つ存在する。実際、hh は 00 で劣勾配 ss をもつ(第2章 定理 2.27)ので h(u)≥h(0)+⟨s,u⟩h(u) \geq h(0) + \langle s, u \rangle で、目的関数は連続かつ強圧的だから最小点をもち(第1章 定理 1.11)、狭義凸だから最小点は一つである(第2章 定理 2.18)。

命題 5.21(ℓ1\ell^1 ノルムの近接写像はソフト閾値)λ,t>0\lambda, t > 0 とすると、prox⁡tλ∥⋅∥1(v)\operatorname{prox}_{t\lambda\lVert \cdot \rVert_1}(v) の第 ii 成分は Stλ(vi)=sign⁡(vi)max⁡(∣vi∣−tλ,0)S_{t\lambda}(v_i) = \operatorname{sign}(v_i)\max(\lvert v_i \rvert - t\lambda, 0) である。

証明. 目的関数を tt 倍すると ∑i(tλ∣ui∣+12(ui−vi)2)\sum_i\bigl(t\lambda\lvert u_i \rvert + \frac{1}{2}(u_i - v_i)^2\bigr) と成分ごとの和に分かれるので、各成分で φ(u)=a∣u∣+12(u−v)2\varphi(u) = a\lvert u \rvert + \frac{1}{2}(u - v)^2(a=tλa = t\lambda)を最小化すればよい。平方完成すると

φ(u)=12(u−(v−a))2+av−a22(u≥0),φ(u)=12(u−(v+a))2−av−a22(u≤0)\varphi(u) = \frac{1}{2}\bigl(u - (v - a)\bigr)^2 + av - \frac{a^2}{2} \quad (u \geq 0), \qquad \varphi(u) = \frac{1}{2}\bigl(u - (v + a)\bigr)^2 - av - \frac{a^2}{2} \quad (u \leq 0)

v>av > a なら、[0,∞)[0, \infty) 上の最小点は v−a>0v - a > 0 で、(−∞,0](-\infty, 0] 上では v+a>0v + a > 0 より u=0u = 0 が最小点だから、全体の最小点は v−av - a。v<−av < -a なら同様に v+av + a。∣v∣≤a\lvert v \rvert \leq a なら v−a≤0≤v+av - a \leq 0 \leq v + a より、どちらの半直線でも u=0u = 0 が最小点である。□\square

これは第2章 例 2.30 のソフト閾値を、劣勾配を使わずに示し直したものである。f(x)=12∥Ax−b∥2f(x) = \frac{1}{2}\lVert Ax - b \rVert^2 では ∇f(x)=A⊤(Ax−b)\nabla f(x) = A^{\top}(Ax - b), L=λmax⁡(A⊤A)L = \lambda_{\max}(A^{\top}A)(AA の最大特異値の 2 乗)で、ラッソの近接勾配法は成分ごとに

xk+1=Stλ(xk−tA⊤(Axk−b))x_{k+1} = S_{t\lambda}\bigl(x_k - tA^{\top}(Ax_k - b)\bigr)

となる(ISTA, iterative shrinkage-thresholding algorithm)。勾配で一歩進み、絶対値が tλt\lambda 以下の成分をちょうど 00 にし、残りを tλt\lambda だけ 00 に寄せる。

補題 5.22(近接写像の基本不等式)p=Tt(v)p = T_t(v) ならば、すべての z∈Cz \in C について

h(z)+12t∥z−v∥2≥h(p)+12t∥p−v∥2+12t∥z−p∥2h(z) + \frac{1}{2t}\lVert z - v \rVert^2 \geq h(p) + \frac{1}{2t}\lVert p - v \rVert^2 + \frac{1}{2t}\lVert z - p \rVert^2

証明. ϕ(u)=h(u)+12t∥u−v∥2\phi(u) = h(u) + \frac{1}{2t}\lVert u - v \rVert^2、0<s<10 < s < 1, us=p+s(z−p)∈Cu_s = p + s(z - p) \in C とする。hh の凸性と恒等式 ∥(1−s)a+sb∥2=(1−s)∥a∥2+s∥b∥2−s(1−s)∥a−b∥2\lVert (1 - s)a + sb \rVert^2 = (1 - s)\lVert a \rVert^2 + s\lVert b \rVert^2 - s(1 - s)\lVert a - b \rVert^2(a=p−va = p - v, b=z−vb = z - v)より ϕ(us)≤(1−s)ϕ(p)+sϕ(z)−s(1−s)2t∥z−p∥2\phi(u_s) \leq (1 - s)\phi(p) + s\phi(z) - \frac{s(1 - s)}{2t}\lVert z - p \rVert^2。ϕ(p)≤ϕ(us)\phi(p) \leq \phi(u_s) と合わせて ss で割ると ϕ(p)≤ϕ(z)−1−s2t∥z−p∥2\phi(p) \leq \phi(z) - \frac{1 - s}{2t}\lVert z - p \rVert^2 で、s→0s \to 0 とすればよい。□\square

定理 5.23(近接勾配法の収束)F=f+hF = f + h が CC 上で最小点 x∗x^{\ast} をもつとし、0<t≤1/L0 < t \leq 1/L, x0∈Cx_0 \in C とする。近接勾配法の点列について F(xk+1)≤F(xk)F(x_{k+1}) \leq F(x_k) で、k≥1k \geq 1 について F(xk)−F(x∗)≤∥x0−x∗∥22tkF(x_k) - F(x^{\ast}) \leq \dfrac{\lVert x_0 - x^{\ast} \rVert^2}{2tk} である。

証明. x∈Cx \in C、g=∇f(x)g = \nabla f(x)、v=x−tgv = x - tg、x+=Tt(v)x^{+} = T_t(v)、z∈Cz \in C とする。降下補題(1/t≥L1/t \geq L)と凸性 f(x)≤f(z)+⟨g,x−z⟩f(x) \leq f(z) + \langle g, x - z \rangle より f(x+)≤f(z)+⟨g,x+−z⟩+12t∥x+−x∥2f(x^{+}) \leq f(z) + \langle g, x^{+} - z \rangle + \frac{1}{2t}\lVert x^{+} - x \rVert^2。補題 5.22 に ∥z−v∥2−∥x+−v∥2=∥z−x∥2−∥x+−x∥2+2t⟨g,z−x+⟩\lVert z - v \rVert^2 - \lVert x^{+} - v \rVert^2 = \lVert z - x \rVert^2 - \lVert x^{+} - x \rVert^2 + 2t\langle g, z - x^{+} \rangle を代入すると h(x+)≤h(z)+⟨g,z−x+⟩+12t(∥z−x∥2−∥x+−x∥2−∥z−x+∥2)h(x^{+}) \leq h(z) + \langle g, z - x^{+} \rangle + \frac{1}{2t}(\lVert z - x \rVert^2 - \lVert x^{+} - x \rVert^2 - \lVert z - x^{+} \rVert^2)。2 式を足すと

F(x+)≤F(z)+12t(∥z−x∥2−∥z−x+∥2)(5.2)F(x^{+}) \leq F(z) + \frac{1}{2t}\bigl(\lVert z - x \rVert^2 - \lVert z - x^{+} \rVert^2\bigr) \tag{5.2}

z=xz = x とすると F(x+)≤F(x)F(x^{+}) \leq F(x)。z=x∗z = x^{\ast} とすると定理 5.7 の証明と同じ形の不等式になり、同様に足し合わせればよい。□\square

C=RnC = \mathbb{R}^n, h=0h = 0 なら定理 5.7 に戻る。近接勾配法に定義 5.12 型の慣性をつけた FISTA(Beck–Teboulle, 2009 年)は F(xk)−F(x∗)≤2L∥x0−x∗∥2(k+1)2F(x_k) - F(x^{\ast}) \leq \frac{2L\lVert x_0 - x^{\ast} \rVert^2}{(k + 1)^2} を満たす(主張)。

次のコードは、50 件・20 個の特徴量のうち 3 個(番号 2, 7, 15)だけが効くデータで、ラッソを近接勾配法で解く。

import numpy as np

rng = np.random.default_rng(0)
m, n = 50, 20
A = rng.standard_normal((m, n))
x_true = np.zeros(n); x_true[[2, 7, 15]] = [3.0, -2.0, 1.5]   # 効く特徴量は 3 個だけ
b = A @ x_true + 0.5 * rng.standard_normal(m)
L = np.linalg.norm(A, 2) ** 2                  # f(x) = ||Ax - b||^2 / 2 の L
soft = lambda v, a: np.sign(v) * np.maximum(np.abs(v) - a, 0.0)

print("least squares:", np.count_nonzero(np.linalg.lstsq(A, b, rcond=None)[0]), "nonzeros")
for lam in [2.0, 15.0]:
    x = np.zeros(n)
    for k in range(3000):
        x = soft(x - A.T @ (A @ x - b) / L, lam / L)       # 近接勾配法(ISTA)
    print(f"lam={lam:4.1f}  support={np.flatnonzero(x)}  values={np.round(x[x != 0], 2)}")
least squares: 20 nonzeros
lam= 2.0  support=[ 0  2  7  9 14 15 18 19]  values=[-0.14  2.93 -1.96 -0.16  0.02  1.4   0.07 -0.04]
lam=15.0  support=[ 2  7 15]  values=[ 2.63 -1.46  1.11]

最小二乗法の係数は 20 個すべてが 00 でない。λ=2\lambda = 2 では小さな係数が 5 個残り、λ=15\lambda = 15 ではちょうど 2, 7, 15 番だけが残るが、その係数は真の値 3,−2,1.53, -2, 1.5 より 00 側に縮んでいる。

ヒント

実務では ラッソの罰則は係数の大きさに一様にかかるので、特徴量を標準化してから使う(単位を変えると選ばれる変数が変わる)。λ\lambda は交差検証で選ぶことが多い。係数は 00 側に偏る(上の出力)ので、効果の大きさを報告するときは、選ばれた変数だけで最小二乗法をやり直すなどの補正を検討する。計算には FISTA のほか、成分ごとにソフト閾値を繰り返す座標降下法も広く使われる。

まとめ

  • LL-平滑なら t≤1/Lt \leq 1/L の最急降下法は毎回 t2∥∇f(xk)∥2\frac{t}{2}\lVert \nabla f(x_k) \rVert^2 以上 ff を減らす(降下補題)。凸でなくても、下に有界なら勾配は 00 に近づく。
  • アルミホ条件のバックトラッキングは有限回で終わり、LL-平滑なら t≥min⁡(tˉ,2β(1−c)/L)t \geq \min(\bar{t}, 2\beta(1 - c)/L) が保証される。
  • LL-平滑な凸関数では f(xk)−p∗≤L∥x0−x∗∥2/(2k)f(x_k) - p^{\ast} \leq L\lVert x_0 - x^{\ast} \rVert^2/(2k)。強凸なら関数値の誤差と距離の 2 乗がともに毎回 1−1/κ1 - 1/\kappa 倍以下になる。
  • 二次関数では誤差は固有ベクトルごとに 1−tλi1 - t\lambda_i 倍になり、t<2/Lt < 2/L が必要で、μ\mu の方向が遅れる。反復回数は κ\kappa に比例する。スケーリング・前処理が効く。
  • 加速法は O(1/k2)O(1/k^2) を達成し、1 次の方法として定数倍を除いて最適である。強凸なら反復回数は κ\sqrt{\kappa} に比例する。値は単調に減るとは限らない。
  • 共役勾配法は二次関数を厳密計算で nn 回以内に最小化する。
  • 射影勾配法と ISTA を含む近接勾配法は O(1/k)O(1/k) で収束し、不動点は最適解である。λ∥x∥1\lambda\lVert x \rVert_1 の近接写像はソフト閾値で、ラッソの解がスパースになる。

演習問題

問題 5.1 ★ f(x)=12(x12+10x22)f(x) = \frac{1}{2}(x_1^2 + 10x_2^2) を x0=(1,1)x_0 = (1, 1) から最急降下法で最小化する。(1) L,μ,κL, \mu, \kappa を求め、t=1/Lt = 1/L のときの xkx_k を求めよ。f(xk)≤10−6f(x_k) \leq 10^{-6} となる最小の kk を求め、定理 5.8 から保証される回数と比べよ。(2) t=2/(μ+L)t = 2/(\mu + L) のときの xkx_k を求めよ。(3) t=0.25t = 0.25 のとき何が起こるか。

解答

(1) ∇2f=diag⁡(1,10)\nabla^2 f = \operatorname{diag}(1, 10) より μ=1\mu = 1, L=10L = 10, κ=10\kappa = 10。t=0.1t = 0.1 では xk+1=(0.9xk,1,0)x_{k+1} = (0.9x_{k,1}, 0) なので、k≥1k \geq 1 で xk=(0.9k,0)x_k = (0.9^k, 0)、f(xk)=12⋅0.81kf(x_k) = \frac{1}{2} \cdot 0.81^k。これが 10−610^{-6} 以下になるのは k≥log⁡(2×10−6)/log⁡0.81≈62.3k \geq \log(2 \times 10^{-6})/\log 0.81 \approx 62.3、すなわち k=63k = 63 から。定理 5.8 の評価 f(xk)≤0.9kf(x0)=5.5⋅0.9kf(x_k) \leq 0.9^kf(x_0) = 5.5 \cdot 0.9^k からは k≥148k \geq 148 しか保証されない。二次関数では誤差が毎回 1−1/κ1 - 1/\kappa 倍(命題 5.9)、関数値はその 2 乗の 0.810.81 倍になるので、一般の関数向けの定理 5.8 は保守的である。

(2) 1−t=9/111 - t = 9/11, 1−10t=−9/111 - 10t = -9/11 なので xk=((9/11)k,(−9/11)k)x_k = \bigl((9/11)^k, (-9/11)^k\bigr)、f(xk)=5.5⋅(81/121)kf(x_k) = 5.5 \cdot (81/121)^k。2 つの方向が同じ速さで減る。

(3) 1−10⋅0.25=−1.51 - 10 \cdot 0.25 = -1.5 なので xk,2=(−1.5)kx_{k,2} = (-1.5)^k となり発散する(t>2/L=0.2t > 2/L = 0.2)。xk,1=0.75kx_{k,1} = 0.75^k は収束するが、f(xk)→∞f(x_k) \to \infty。

問題 5.2 ★★ ff を LL-平滑な凸関数(最小点 x∗x^{\ast} をもつ)とし、最急降下法のステップ幅を c=1/2c = 1/2 のアルミホ条件のバックトラッキング(初期値 tˉ\bar{t}、縮小率 β\beta)で決める。tmin⁡=min⁡(tˉ,β/L)t_{\min} = \min(\bar{t}, \beta/L) として f(xk)−p∗≤∥x0−x∗∥22tmin⁡kf(x_k) - p^{\ast} \leq \frac{\lVert x_0 - x^{\ast} \rVert^2}{2t_{\min}k} を示せ。

解答

命題 5.6 より採られる tkt_k は min⁡(tˉ,2β(1−1/2)/L)=tmin⁡\min(\bar{t}, 2\beta(1 - 1/2)/L) = t_{\min} 以上で、(5.1) より f(xk+1)≤f(xk)−tk2∥gk∥2f(x_{k+1}) \leq f(x_k) - \frac{t_k}{2}\lVert g_k \rVert^2(gk=∇f(xk)g_k = \nabla f(x_k))。凸性 f(xk)≤p∗+⟨gk,xk−x∗⟩f(x_k) \leq p^{\ast} + \langle g_k, x_k - x^{\ast} \rangle と合わせ、xk+1=xk−tkgkx_{k+1} = x_k - t_kg_k を使って定理 5.7 の証明と同様に平方完成すると

f(xk+1)−p∗≤⟨gk,xk−x∗⟩−tk2∥gk∥2=12tk(∥xk−x∗∥2−∥xk+1−x∗∥2)f(x_{k+1}) - p^{\ast} \leq \langle g_k, x_k - x^{\ast} \rangle - \frac{t_k}{2}\lVert g_k \rVert^2 = \frac{1}{2t_k}\bigl(\lVert x_k - x^{\ast} \rVert^2 - \lVert x_{k+1} - x^{\ast} \rVert^2\bigr)

左辺は 00 以上なので括弧内も 00 以上で、1/tk≤1/tmin⁡1/t_k \leq 1/t_{\min} より右辺は 12tmin⁡(∥xk−x∗∥2−∥xk+1−x∗∥2)\frac{1}{2t_{\min}}(\lVert x_k - x^{\ast} \rVert^2 - \lVert x_{k+1} - x^{\ast} \rVert^2) 以下。k=0,…,K−1k = 0, \dots, K - 1 について足し、f(xk)f(x_k) が単調非増加であることを使えば K(f(xK)−p∗)≤12tmin⁡∥x0−x∗∥2K(f(x_K) - p^{\ast}) \leq \frac{1}{2t_{\min}}\lVert x_0 - x^{\ast} \rVert^2。

問題 5.3 ★★ t>0t > 0 とする。(1) λ,μ>0\lambda, \mu > 0, h(x)=λ∥x∥1+μ2∥x∥2h(x) = \lambda\lVert x \rVert_1 + \frac{\mu}{2}\lVert x \rVert^2(エラスティックネットの罰則)について prox⁡th(v)i=11+tμStλ(vi)\operatorname{prox}_{th}(v)_i = \frac{1}{1 + t\mu}S_{t\lambda}(v_i) を示せ。(2) C=[0,1]nC = [0, 1]^n, h=0h = 0 のとき Tt(v)T_t(v) を求めよ。

解答

(1) 成分ごとに分かれ、γ=1+tμ\gamma = 1 + t\mu とすると

tλ∣u∣+tμ2u2+12(u−v)2=γ(tλγ∣u∣+12(u−vγ)2)+12(v2−v2γ)t\lambda\lvert u \rvert + \frac{t\mu}{2}u^2 + \frac{1}{2}(u - v)^2 = \gamma\Bigl(\frac{t\lambda}{\gamma}\lvert u \rvert + \frac{1}{2}\Bigl(u - \frac{v}{\gamma}\Bigr)^2\Bigr) + \frac{1}{2}\Bigl(v^2 - \frac{v^2}{\gamma}\Bigr)

で、最後の項は uu によらないから、命題 5.21 の証明より最小点は Stλ/γ(v/γ)=sign⁡(v)max⁡(∣v∣−tλ,0)/γ=Stλ(v)/γS_{t\lambda/\gamma}(v/\gamma) = \operatorname{sign}(v)\max(\lvert v \rvert - t\lambda, 0)/\gamma = S_{t\lambda}(v)/\gamma。ℓ1\ell^1 罰則で小さい成分を 00 にし、ℓ2\ell^2 罰則で全体を 1/(1+tμ)1/(1 + t\mu) 倍に縮める。

(2) Tt(v)=PC(v)T_t(v) = P_C(v) は成分ごとの切り詰め min⁡(max⁡(vi,0),1)\min(\max(v_i, 0), 1) で(第2章 例 2.5)、tt によらない。

問題 5.4 ★★ 定理 5.23 の設定で、(1) x∗∈Cx^{\ast} \in C が FF の最小点であるための必要十分条件は x∗=Tt(x∗−t∇f(x∗))x^{\ast} = T_t(x^{\ast} - t\nabla f(x^{\ast})) であることを、(5.2) を使って示せ。(2) ラッソ(C=RnC = \mathbb{R}^n, h=λ∥x∥1h = \lambda\lVert x \rVert_1)について、(1) の条件を g=∇f(x∗)=A⊤(Ax∗−b)g = \nabla f(x^{\ast}) = A^{\top}(Ax^{\ast} - b) の成分で書け。

解答

(1) x+=Tt(x∗−t∇f(x∗))x^{+} = T_t(x^{\ast} - t\nabla f(x^{\ast})) とする。(5.2) で x=z=x∗x = z = x^{\ast} とすると F(x+)≤F(x∗)−12t∥x∗−x+∥2F(x^{+}) \leq F(x^{\ast}) - \frac{1}{2t}\lVert x^{\ast} - x^{+} \rVert^2。x∗x^{\ast} が最小点なら F(x+)≥F(x∗)F(x^{+}) \geq F(x^{\ast}) なので x+=x∗x^{+} = x^{\ast}。逆に x+=x∗x^{+} = x^{\ast} なら、(5.2) で x=x∗x = x^{\ast} とすると任意の z∈Cz \in C で F(x∗)≤F(z)+12t(∥z−x∗∥2−∥z−x∗∥2)=F(z)F(x^{\ast}) \leq F(z) + \frac{1}{2t}(\lVert z - x^{\ast} \rVert^2 - \lVert z - x^{\ast} \rVert^2) = F(z)。

(2) 条件は各 ii で xi∗=Stλ(xi∗−tgi)x_i^{\ast} = S_{t\lambda}(x_i^{\ast} - tg_i)。xi∗>0x_i^{\ast} > 0 なら xi∗−tgi−tλ=xi∗x_i^{\ast} - tg_i - t\lambda = x_i^{\ast} より gi=−λg_i = -\lambda、xi∗<0x_i^{\ast} < 0 なら gi=λg_i = \lambda、xi∗=0x_i^{\ast} = 0 なら ∣tgi∣≤tλ\lvert tg_i \rvert \leq t\lambda より ∣gi∣≤λ\lvert g_i \rvert \leq \lambda。まとめて「xi∗≠0x_i^{\ast} \neq 0 なら gi=−λsign⁡(xi∗)g_i = -\lambda\operatorname{sign}(x_i^{\ast})、xi∗=0x_i^{\ast} = 0 なら ∣gi∣≤λ\lvert g_i \rvert \leq \lambda」で、tt によらない。第2章 定理 2.29(劣勾配による最適性条件)の条件 0∈g+λ∂∥x∗∥10 \in g + \lambda\partial\lVert x^{\ast} \rVert_1 と同じ形で、実装ではこの条件の破れの大きさを停止判定に使える。

問題 5.5 ★★ 次の判断は正しいか。(1) 最小二乗法の勾配法を学習率 0.010.01 で回していたが、ある特徴量(金額)の単位を千円から円に変えた(値が 1000 倍になった)ところ発散した。分析者は「単位を変えても最適な予測は同じはずなので、実装の誤りだ」と判断した。(2) 加速勾配法を実装したら、目的関数の値が途中で増える反復があった。分析者は「降下法なのに値が増えるのは誤りだ」と判断した。

解答

(1) 実装の誤りとは限らない。f(x)=12∥Ax−b∥2f(x) = \frac{1}{2}\lVert Ax - b \rVert^2 で AA の第 jj 列 aja_j を 1000 倍すると、∥aj∥2\lVert a_j \rVert^2 は 10610^6 倍になり、L=λmax⁡(A⊤A)≥ej⊤A⊤Aej=∥aj∥2L = \lambda_{\max}(A^{\top}A) \geq e_j^{\top}A^{\top}Ae_j = \lVert a_j \rVert^2(レイリー商)なので新しい LL は 106∥aj∥210^6\lVert a_j \rVert^2 以上になる。∥aj∥2>2×10−4\lVert a_j \rVert^2 > 2 \times 10^{-4} なら(普通のデータではまず成り立つ)t=0.01>2/Lt = 0.01 > 2/L で、安定条件(命題 5.9)が破れて発散する。最適な予測は変わらない(その係数が 1/10001/1000 倍になるだけ)が、勾配法の速さと安定性は変わるのである。特徴量の標準化か、バックトラッキングで対処する。

(2) 誤り。加速法は単調な降下法ではなく、慣性で値が一時的に増えることがある(5.5 節)。保証されているのは f(xk)−p∗≤2L∥x0−x∗∥2/(k+1)2f(x_k) - p^{\ast} \leq 2L\lVert x_0 - x^{\ast} \rVert^2/(k + 1)^2 という上界だけである。実装の確認には、慣性をなくすと値が単調に減ることや、小さな問題で既知の解に近づくことを調べるとよい。

問題 5.6 ★★ CC を空でない閉凸集合、ff を μ\mu-強凸かつ LL-平滑とし、x∗x^{\ast} を CC 上の最小点とする。射影勾配法 xk+1=PC(xk−1L∇f(xk))x_{k+1} = P_C(x_k - \frac{1}{L}\nabla f(x_k)) について ∥xk+1−x∗∥2≤(1−μL)∥xk−x∗∥2\lVert x_{k+1} - x^{\ast} \rVert^2 \leq (1 - \frac{\mu}{L})\lVert x_k - x^{\ast} \rVert^2 を示せ(ヒント:命題 5.19、射影の非拡大性、第2章 定理 2.22・2.23)。

解答

命題 5.19 より x∗=PC(x∗−1L∇f(x∗))x^{\ast} = P_C(x^{\ast} - \frac{1}{L}\nabla f(x^{\ast}))。射影の非拡大性(第2章 定理 2.4)より、e=xk−x∗e = x_k - x^{\ast}, δ=∇f(xk)−∇f(x∗)\delta = \nabla f(x_k) - \nabla f(x^{\ast}) として

∥xk+1−x∗∥2≤∥e−1Lδ∥2=∥e∥2−2L⟨δ,e⟩+1L2∥δ∥2\lVert x_{k+1} - x^{\ast} \rVert^2 \leq \Bigl\lVert e - \frac{1}{L}\delta \Bigr\rVert^2 = \lVert e \rVert^2 - \frac{2}{L}\langle \delta, e \rangle + \frac{1}{L^2}\lVert \delta \rVert^2

LL-平滑な凸関数の性質 ⟨δ,e⟩≥1L∥δ∥2\langle \delta, e \rangle \geq \frac{1}{L}\lVert \delta \rVert^2(第2章 定理 2.23 の (d))より 1L2∥δ∥2≤1L⟨δ,e⟩\frac{1}{L^2}\lVert \delta \rVert^2 \leq \frac{1}{L}\langle \delta, e \rangle なので、右辺は ∥e∥2−1L⟨δ,e⟩\lVert e \rVert^2 - \frac{1}{L}\langle \delta, e \rangle 以下で、強凸性 ⟨δ,e⟩≥μ∥e∥2\langle \delta, e \rangle \geq \mu\lVert e \rVert^2(第2章 定理 2.22 の 3)よりさらに (1−μL)∥e∥2(1 - \frac{\mu}{L})\lVert e \rVert^2 以下である。制約があっても、制約のない場合(定理 5.8)と同じ速さで距離が縮む。

この章を読み終えたら

「読了」にすると、学習記録と地図に反映されます。

この章の誤りを報告GitHub で見る