この章の目標
- 最急降下法とアルミホ条件による直線探索を定式化し、直線探索が有限回で終わることを証明できる
- 降下補題から、L-平滑な凸関数での O(1/k) の収束と強凸関数での線形収束を証明し、どの量がどの速さで収束するかを正確に述べられる
- 二次関数で条件数が収束を遅くするしくみを計算で示し、スケーリングの重要性を説明できる
- ネステロフの加速勾配法の O(1/k2) の評価を、1 次の方法の下界と比べて説明できる
- 共役勾配法が二次関数を n 回以内の反復で最小化することを説明できる
- 射影勾配法・近接勾配法で制約や ∥x∥1 を含む問題を解き、ソフト閾値関数が近接写像であることを証明できる
前提:第2章、02-linear-algebra 第8章(正定値性・固有値)。最適性条件は第1章で扱った。ラッソの統計的な意味は 24 機械学習の数理 第2章 にある。
100 万個の特徴量をもつロジスティック回帰のように、実務の最適化問題の多くは変数が非常に多い。第6章のニュートン法は n×n のヘッセ行列を使うので n=106 では現実的でなく、勾配 ∇f(x) だけを使う1 次の方法 (first-order method) が主役になる。本章では、その速さが第2章の L-平滑性と強凸性(定義 2.21)から導かれ、条件数 κ=L/μ に支配されることを示す。後半では、より速い加速法と共役勾配法、制約や微分できない項 λ∥x∥1 を扱う射影勾配法・近接勾配法を学ぶ。
f:Rn→R は微分可能とし、最小点 x∗ があるとき p∗=f(x∗) と書く。0 に収束する数列 ek≥0 について、ある 0<q<1 と C で ek≤Cqk となることを線形収束 (linear convergence)、ek+1/ek→0 を超 1 次収束 (superlinear)、ek+1≤Cek2 を 2 次収束 (quadratic)、O(1/k) のように線形収束より遅いものを劣線形収束 (sublinear) という。
5.1 最急降下法と降下補題
単位ベクトル d の方向の変化率 ⟨∇f(x),d⟩ は、コーシー–シュワルツの不等式より −∥∇f(x)∥ 以上で、∇f(x)=0 なら等号は d=−∇f(x)/∥∇f(x)∥ のときに限る。−∇f(x) は最も急に下る方向である。
定義 5.1(最急降下法, gradient descent)初期点 x0 とステップ幅 tk>0 を与え、xk+1=xk−tk∇f(xk)(k=0,1,2,…)で点列を作る方法を最急降下法(勾配法)という。機械学習ではステップ幅を学習率 (learning rate) とよぶ。
ステップ幅が小さすぎれば進まず、大きすぎれば谷を飛び越える。どこまで大きくしてよいかを教えるのが次の不等式である。
補題 5.2(降下補題, descent lemma)f が L-平滑ならば、すべての x,y について
f(y)≤f(x)+⟨∇f(x),y−x⟩+2L∥y−x∥2
証明. 第2章 定理 2.23 (1)(L-平滑性の特徴づけ)で示した。要点は、微分積分学の基本定理により
f(y)−f(x)−⟨∇f(x),y−x⟩=∫01⟨∇f(x+s(y−x))−∇f(x),y−x⟩ds≤∫01Ls∥y−x∥2ds=2L∥y−x∥2
となることである(不等号はコーシー–シュワルツの不等式と L-平滑性による)。□
凸性は使っていない。f は x で接する放物面で上から押さえられる。
系 5.3(1 回の反復での減少量)f を L-平滑とし、x+=x−t∇f(x), 0<t≤1/L とすると
f(x+)≤f(x)−t(1−2Lt)∥∇f(x)∥2≤f(x)−2t∥∇f(x)∥2
証明. 補題 5.2 で y=x+ とすると右辺は f(x)−t∥∇f(x)∥2+2Lt2∥∇f(x)∥2 で、t≤1/L なら 1−Lt/2≥1/2。□
5.2 直線探索とアルミホ条件
L は多くの場合わからず、わかっても大域的な L は局所的な曲がり方より大きすぎることが多い。f(xk+td) を厳密に最小化するのは高くつくので、「十分に減った」ことだけを確かめる。
定義 5.5(アルミホ条件, Armijo condition)d を x における降下方向(⟨∇f(x),d⟩<0)、0<c<1 とする。ステップ幅 t>0 が
f(x+td)≤f(x)+ct⟨∇f(x),d⟩(5.1)
を満たすとき、アルミホ条件を満たすという。初期値 tˉ>0 と 0<β<1 を決め、t=tˉ,βtˉ,β2tˉ,… と試して (5.1) を満たす最初の t を採る方法をバックトラッキング (backtracking line search) という。
(5.1) の右辺は傾きを c 倍にゆるめた接線である。c は小さめ(たとえば 10−4)、β=1/2 がよく使われる。
命題 5.6(バックトラッキングは有限回で終わる)f が x で微分可能で ⟨∇f(x),d⟩<0 ならば、ある t0>0 があって、0<t≤t0 のすべての t が (5.1) を満たす。したがってバックトラッキングは有限回の試行で終わる。さらに f が L-平滑で d=−∇f(x)=0 なら、0<t≤2(1−c)/L のすべての t が (5.1) を満たし、採られる t は min(tˉ,2β(1−c)/L) 以上である。
証明. a=−⟨∇f(x),d⟩>0, r(t)=f(x+td)−f(x)+at とおくと、微分可能性より r(t)/t→0(t→+0)。(5.1) は r(t)≤(1−c)at と同値で、(1−c)a>0 なので十分小さい t>0 で成り立つ。試す t=βjtˉ は 0 に近づくから、有限回で t0 以下になる。後半:系 5.3 の計算から f(x−t∇f(x))≤f(x)−t(1−Lt/2)∥∇f(x)∥2 で、t≤2(1−c)/L なら 1−Lt/2≥c なので (5.1) が成り立つ。最初の tˉ が採られなければ、採られた t について t/β は (5.1) を満たさなかったので t/β>2(1−c)/L。□
したがって L を知らなくても毎回 f(xk+1)≤f(xk)−ctmin∥∇f(xk)∥2(tmin=min(tˉ,2β(1−c)/L))が保証される。ここから次節と同じ議論で、μ-強凸なら関数値の誤差は毎回 1−2cμtmin 倍以下になり(定理 5.8 の証明の前半を参照)、c=1/2 なら定理 5.7 の評価が 1/L を tmin に置き換えた形で成り立つ(問題 5.2)。c<1/2 でも O(1/k) の収束は示せるが、定数は変わる。ウルフ条件は第6章で扱う。
5.3 収束の速さ
定理 5.7(L-平滑な凸関数での収束)f を L-平滑な凸関数とし、最小点 x∗ をもつとする。tk=1/L の最急降下法について f(xk) と ∥xk−x∗∥ は単調非増加で、k≥1 について
f(xk)−p∗≤2kL∥x0−x∗∥2
証明. g=∇f(xk) とおく。系 5.3 と凸関数の 1 次条件 f(xk)≤p∗+⟨g,xk−x∗⟩(第2章 定理 2.14)より
f(xk+1)≤p∗+⟨g,xk−x∗⟩−2L1∥g∥2=p∗+2L(∥xk−x∗∥2−xk−x∗−L1g2)=p∗+2L(∥xk−x∗∥2−∥xk+1−x∗∥2)
(最初の等号は展開すれば確かめられる)。左辺は p∗ 以上なので ∥xk+1−x∗∥≤∥xk−x∗∥。f(xk+1)≤f(xk) は系 5.3 による。上の不等式を k=0,…,K−1 について足すと右辺は順に打ち消し合い、∑k=1K(f(xk)−p∗)≤2L∥x0−x∗∥2。f(xk) は単調非増加だから左辺は K(f(xK)−p∗) 以上である。□
精度を 1 桁上げるには反復回数が 10 倍要る。評価は次元 n によらない。定数の異なる評価もある(Nesterov, Lectures on Convex Optimization の 2.1 節は別の議論で k+42L∥x0−x∗∥2 を示している)。
定理 5.8(強凸関数での線形収束)f を μ-強凸かつ L-平滑とし、κ=L/μ とする。tk=1/L の最急降下法について
f(xk)−p∗≤(1−κ1)k(f(x0)−p∗),∥xk−x∗∥2≤(1−κ1)k∥x0−x∗∥2
すなわち、目的関数の値の誤差と、最小点までの距離の 2 乗が、どちらも毎回 1−1/κ 倍以下になる(距離そのものは 1−1/κ 倍以下)。
証明. 第2章 系 2.24 より、f はただ一つの最小点 x∗ をもち、2L1∥∇f(x)∥2≤f(x)−p∗≤2μ1∥∇f(x)∥2 が成り立つ(右側はポリャク–ロヤシェヴィチの不等式)。
関数値:系 5.3 と右側の不等式より f(xk+1)−p∗≤f(xk)−p∗−2L1∥∇f(xk)∥2≤(1−Lμ)(f(xk)−p∗)。
距離:g=∇f(xk) とすると ∥xk+1−x∗∥2=∥xk−x∗∥2−L2⟨g,xk−x∗⟩+L21∥g∥2。強凸性の特徴づけ(第2章 定理 2.22 の 2)の不等式 p∗≥f(xk)+⟨g,x∗−xk⟩+2μ∥x∗−xk∥2 から ⟨g,xk−x∗⟩≥f(xk)−p∗+2μ∥xk−x∗∥2、左側の不等式から ∥g∥2≤2L(f(xk)−p∗)。代入すると f(xk)−p∗ の項が打ち消し合い、∥xk+1−x∗∥2≤(1−Lμ)∥xk−x∗∥2。□
(1−1/κ)k≤e−k/κ なので、誤差を ε 倍にするには約 κlog(1/ε) 回で足りる。ステップ幅 2/(μ+L) では距離が毎回 κ+1κ−1 倍以下になる(Nesterov の本の 2.1 節。二次関数の場合は次節で示す)。
5.4 条件数と収束の遅さ
Q≻0 の固有値を μ=λ1≤⋯≤λn=L とし、f(x)=21x⊤Qx−c⊤x を考える。x∗=Q−1c, ∇f(x)=Q(x−x∗) なので、固定ステップ t の最急降下法の誤差 ek=xk−x∗ は ek+1=(I−tQ)ek に従う。Q の正規直交な固有ベクトル ui(02-linear-algebra 第7章 定理 7.32)で e0=∑iaiui と展開すると、ek=∑i(1−tλi)kaiui である。
命題 5.9(二次関数での最急降下法)ρ(t)=maxi∣1−tλi∣=max(∣1−tμ∣,∣1−tL∣) とすると ∥ek∥≤ρ(t)k∥e0∥ である。
- ρ(t)<1⟺0<t<2/L。t>2/L なら、un の成分は毎回 ∣1−tL∣>1 倍になり、an=0 なら発散する。
- ρ(t) は t=2/(μ+L) で最小値 κ+1κ−1 をとる。t=1/L なら ρ=1−1/κ である。
証明. ∥ek∥2=∑i(1−tλi)2kai2≤ρ(t)2k∥e0∥2 で、∣1−tλ∣ は λ の凸関数なので最大は λ=μ,L でとられる。1 は ∣1−tλ∣<1⟺0<tλ<2 による。2:∣1−tμ∣ は t≤1/μ で減少、∣1−tL∣ は t≥1/L で増加するので、最大値は 1−tμ=tL−1、すなわち t=2/(μ+L) で最小になり、値は L+μL−μ。□
最も急な方向(λ=L)に合わせて t<2/L とすると、最も緩い方向(λ=μ)の誤差は毎回 1−tμ>1−2/κ 倍にしかならない。これが条件数の大きい問題で勾配法が遅い理由である。
例 5.10(谷底のジグザグ)f(x)=21(x12+κx22)(κ>1)を、毎回 t を厳密に最小化する直線探索(二次関数では t=∥g∥2/(g⊤Qg), g=∇f(x))で x0=(κ,1) から解く。x=a(κ,σ)(σ=±1)なら g=aκ(1,σ)、t=2/(κ+1) で、次の点は aκ+1κ−1(κ,−σ) になる。よって
xk=(κ+1κ−1)k(κ,(−1)k),f(xk)=(κ+1κ−1)2kf(x0)
で、点は x2 の符号を毎回変えながら谷底を往復する。f(xk)≤10−6f(x0) となる最小の k は、κ=10,100,1000 でそれぞれ 35,346,3454 回で、ほぼ κ に比例する(NumPy で確かめた)。直線探索を厳密にしても、方向が悪ければ遅い。
注意
「学習率を大きくすれば速く収束する」は誤りである。命題 5.9 のとおり t>2/L では発散し、t=2/L でも un 方向の誤差は符号を変えるだけで減らない。損失が振動したり増え続けたりしたら、まず学習率と特徴量のスケール(L を決める)を疑う。
ヒント
実務では
条件数は変数のスケールで大きく変わる(第2章 例 2.25 と直後の「実務では」)。基本の対策は特徴量の標準化と、x=Py と変数を取り替えて y について勾配法を行う前処理 (preconditioning) である(x で書くと xk+1=xk−tPP⊤∇f(xk)。PP⊤ を毎回その点でのヘッセ行列の逆行列に取り替え、t=1 としたものがニュートン法)。学習率はバックトラッキングで決めるほうが安全なことが多い。また、勾配が小さくても最小点に近いとは限らず、∥x−x∗∥ は ∥∇f(x)∥/μ 程度まで大きくありうる。
5.5 ネステロフの加速勾配法
最急降下法は直前の点の勾配しか使わない。過去の勾配も使えばどこまで速くできるか。まず限界を述べる。
定理 5.11(1 次の方法の下界、主張)1≤k≤(n−1)/2 と x0∈Rn に対し、L-平滑な凸な二次関数 f で、xj∈x0+span{∇f(x0),…,∇f(xj−1)}(j=1,…,k)を満たす任意の点列について f(xk)−p∗≥32(k+1)23L∥x0−x∗∥2 となるものが存在する(Nesterov の本の 2.1 節)。
O(1/k) と O(1/k2) のすき間を埋めるのがネステロフ(1983 年)の方法である。
定義 5.12(ネステロフの加速勾配法, accelerated gradient method)y0=x0 とし、k=0,1,2,… について
xk+1=yk−L1∇f(yk),yk+1=xk+1+k+3k(xk+1−xk)
yk+1 は直前の移動の方向に慣性(モメンタム)で少し先へ進んだ点で、そこで勾配を計算する。
定理 5.13(加速勾配法の収束)f を L-平滑な凸関数とし、最小点 x∗ をもつとする。定義 5.12 の点列は、k≥1 について f(xk)−p∗≤(k+1)22L∥x0−x∗∥2 を満たす。
証明. θk=2/(k+2)、v0=x0, vk+1=xk+(xk+1−xk)/θk とおくと、帰納法で yk=(1−θk)xk+θkvk が確かめられ(θk+1(θk−1−1)=k+3k による)、g=∇f(yk) として vk+1=vk−θkL1g となる。系 5.3 より f(xk+1)≤f(yk)−2L1∥g∥2。凸性 f(yk)≤f(z)+⟨g,yk−z⟩ を z=xk と z=x∗ について 1−θk 倍と θk 倍して足すと、yk−(1−θk)xk−θkx∗=θk(vk−x∗) より
f(xk+1)−p∗≤(1−θk)(f(xk)−p∗)+θk⟨g,vk−x∗⟩−2L1∥g∥2
最後の 2 項は、vk+1 の式を展開すると 2θk2L(∥vk−x∗∥2−∥vk+1−x∗∥2) に等しい。θk2 で割り、θk21−θk=4k(k+2)≤4(k+1)2 を使うと、Ek=4(k+1)2(f(xk)−p∗)+2L∥vk−x∗∥2 は k≥1 で単調非増加で、θ0=1 より E1≤2L∥x0−x∗∥2。よって 4(k+1)2(f(xk)−p∗)≤Ek≤2L∥x0−x∗∥2。□
定理 5.11 より、この速さは定数倍を除いて改善できない(加速法は最適な 1 次の方法である)。f が μ-強凸なら、慣性の係数を定数 κ+1κ−1 にした方法(x−1=x0 として yk=xk+κ+1κ−1(xk−xk−1), xk+1=yk−L1∇f(yk))が f(xk)−p∗≤(1−1/κ)k(f(x0)−p∗+2μ∥x0−x∗∥2) を満たし(主張。Nesterov の本の 2.2 節)、反復回数が κlog(1/ε) から κlog(1/ε) に減る。
注意
加速法では f(xk) は単調に減るとは限らない。慣性で谷を行き過ぎて値が一時的に増えるのは正常な動作である(増えたら慣性をリセットする再出発 (restart) という工夫もある)。定理 5.13 は凸性と正確な勾配を前提にしている。非凸関数ではこの保証はなく、勾配に誤差があると、加速法は最急降下法より誤差を蓄積しやすい。
5.6 共役勾配法
二次関数 f(x)=21x⊤Qx−c⊤x(Q≻0)の最小化は Qx=c を解くことと同じである。Q が大きく疎なとき、Q とベクトルの積だけで解く方法として共役勾配法が使われる。
定義 5.14(共役)0 でないベクトル d0,…,dm−1 が di⊤Qdj=0(i=j)を満たすとき Q-共役 (Q-conjugate) という。
Q-共役は内積 ⟨u,v⟩Q=u⊤Qv についての直交性なので、Q-共役なベクトルは一次独立である。
定理 5.15(共役方向法は n 回で終わる)d0,…,dn−1 を Q-共役とし、x0 から直線 xk+αdk 上の最小点 xk+1=xk+αkdk, αk=−∇f(xk)⊤dk/(dk⊤Qdk)(α についての導関数 ∇f(xk)⊤dk+αdk⊤Qdk を 0 にする値)へ順に進むと、xn=x∗ である。
証明. di は基底なので x∗−x0=∑iσidi と書け、dk との Q-内積をとると σk=dk⊤Q(x∗−x0)/(dk⊤Qdk)。xk−x0∈span{d0,…,dk−1} は dk と Q-直交し、∇f(xk)=Q(xk−x∗) だから −∇f(xk)⊤dk=dk⊤Q(x∗−xk)=dk⊤Q(x∗−x0)。よって αk=σk で、xn=x0+∑iσidi=x∗。□
共役な方向を、勾配から 1 本ずつ作りながら進むのが共役勾配法である。
定義 5.16(共役勾配法, conjugate gradient method)r0=Qx0−c(=∇f(x0))、d0=−r0 とし、rk=0 である間、次を繰り返す。
αk=dk⊤Qdkrk⊤rk,xk+1=xk+αkdk,rk+1=rk+αkQdk,dk+1=−rk+1+rk⊤rkrk+1⊤rk+1dk
定理 5.17(共役勾配法の性質、主張)Q≻0 とする。rk=0 である限り、d0,…,dk は Q-共役、r0,…,rk は互いに直交し、xk は x0+span{r0,Qr0,…,Qk−1r0} 上の f の最小点である。したがって厳密に計算すれば、高々 n 回(実は Q の相異なる固有値の個数以下の回数)で xk=x∗ となる。また ∥v∥Q=v⊤Qv として ∥xk−x∗∥Q≤2(κ+1κ−1)k∥x0−x∗∥Q が成り立つ(Nocedal–Wright, Numerical Optimization 第5章)。
例 5.18 x0=0 から
f(x)=2x12+2x1x2+x22−2x1=21x⊤Qx−c⊤x,Q=(4222),c=(20)
を最小化する(x∗=(1,−1), p∗=−1, κ=(7+35)/2≈6.85)。共役勾配法では r0=(−2,0), d0=(2,0), α0=4/16=1/4 で x1=(1/2,0), r1=(0,1)。次に d1=−r1+41d0=(1/2,−1) で、Qd1=(0,−1) より d0⊤Qd1=0(共役)、α1=1/(d1⊤Qd1)=1 で x2=(1,−1)=x∗。2 回で終わる。同じ点から厳密な直線探索の最急降下法を行うと、x1 は同じだがその後は (1/2,−1/2),(3/4,−1/2),(3/4,−3/4),… とジグザグに進み、f(xk)−p∗=2−k で(sympy で厳密に確かめた)有限回では終わらない。
丸め誤差があると共役性が少しずつ崩れて n 回での終了は保証されないが、共役勾配法は大規模な正定値の連立一次方程式(リッジ回帰の正規方程式、第6章のニュートン方程式など)の反復解法として広く使われる。二次関数でない f への拡張を非線形共役勾配法という。
固有値が 1 から κ まで等間隔に並ぶ n=100 次元の二次関数(Q は対角、c=1, x0=0)で、∥xk−x∗∥≤10−6∥x0−x∗∥ となるまでの反復回数を NumPy で数えると次のようになった(加速法は強凸版)。
| κ |
10 |
100 |
1000 |
10000 |
| 最急降下法(t=1/L) |
121 |
1351 |
13802 |
138148 |
| 加速法 |
41 |
156 |
519 |
1660 |
| 共役勾配法 |
22 |
46 |
51 |
52 |
κ が 10 倍になると、最急降下法の回数はほぼ 10 倍(κlog106≈13.8κ に近い)、加速法はほぼ 10≈3.2 倍で、理論どおりそれぞれ κ と κ に比例する。共役勾配法は n=100 回より少ない回数で終わる。
5.7 射影勾配法
非負制約・上下限・予算制約のように、閉凸集合 C の上で f を最小化したいことは多い。勾配で進んだ点を C に射影して戻す方法
xk+1=PC(xk−t∇f(xk))
を射影勾配法 (projected gradient method) という。箱への射影は成分ごとの切り詰め、球への射影は縮小で、ともに安く計算できる(第2章 例 2.5)。
命題 5.19(射影勾配法の不動点)C を空でない閉凸集合、f を微分可能な凸関数、t>0 とする。x∗∈C が C 上の f の最小点であるための必要十分条件は x∗=PC(x∗−t∇f(x∗)) である。
証明. 射影定理(第2章 定理 2.4)の特徴づけ (2.1) より、x∗=PC(x∗−t∇f(x∗)) は「すべての y∈C で ⟨−t∇f(x∗),y−x∗⟩≤0」と同値で、これは凸最適化の最適性条件(第2章 定理 2.19 の 2)により x∗ が C 上の最小点であることと同値である。□
射影勾配法が止まる点はちょうど最適解である。t=1/L なら定理 5.7 と同じ評価が成り立つ(次節の定理 5.23 で h=0 とした場合)。強凸なら線形収束する(問題 5.6)。
5.8 近接勾配法とラッソ
ラッソ 21∥Ax−b∥2+λ∥x∥1 は xi=0 で微分できないので、そのままでは勾配法が使えない(劣勾配で代用すると値が単調に減らず、収束も遅い)。そこで、滑らかな部分だけを 1 次近似する。
以下、C を空でない閉凸集合、f を L-平滑な凸関数、h:Rn→R を連続な凸関数(微分可能でなくてよい。実は Rn 上の凸関数は常に連続である)とし、C 上で F=f+h を最小化する。主な例は C=Rn, h=λ∥x∥1(ラッソ)と h=0(射影勾配法)である。f だけを xk で 1 次近似して罰則を加えた ⟨∇f(xk),u−xk⟩+2t1∥u−xk∥2+h(u) を C 上で最小化することは、平方完成により h(u)+2t1∥u−(xk−t∇f(xk))∥2 を最小化することと同じである。
定義 5.20(近接写像, proximal operator)t>0, v∈Rn に対し Tt(v)=argminu∈C(h(u)+2t1∥u−v∥2) とする。C=Rn のときこれを proxth(v) と書き、th の近接写像という。h=0 なら Tt=PC である。xk+1=Tt(xk−t∇f(xk)) で点列を作る方法を近接勾配法 (proximal gradient method) という。
最小点はただ一つ存在する。実際、h は 0 で劣勾配 s をもつ(第2章 定理 2.27)ので h(u)≥h(0)+⟨s,u⟩ で、目的関数は連続かつ強圧的だから最小点をもち(第1章 定理 1.11)、狭義凸だから最小点は一つである(第2章 定理 2.18)。
命題 5.21(ℓ1 ノルムの近接写像はソフト閾値)λ,t>0 とすると、proxtλ∥⋅∥1(v) の第 i 成分は Stλ(vi)=sign(vi)max(∣vi∣−tλ,0) である。
証明. 目的関数を t 倍すると ∑i(tλ∣ui∣+21(ui−vi)2) と成分ごとの和に分かれるので、各成分で φ(u)=a∣u∣+21(u−v)2(a=tλ)を最小化すればよい。平方完成すると
φ(u)=21(u−(v−a))2+av−2a2(u≥0),φ(u)=21(u−(v+a))2−av−2a2(u≤0)
v>a なら、[0,∞) 上の最小点は v−a>0 で、(−∞,0] 上では v+a>0 より u=0 が最小点だから、全体の最小点は v−a。v<−a なら同様に v+a。∣v∣≤a なら v−a≤0≤v+a より、どちらの半直線でも u=0 が最小点である。□
これは第2章 例 2.30 のソフト閾値を、劣勾配を使わずに示し直したものである。f(x)=21∥Ax−b∥2 では ∇f(x)=A⊤(Ax−b), L=λmax(A⊤A)(A の最大特異値の 2 乗)で、ラッソの近接勾配法は成分ごとに
xk+1=Stλ(xk−tA⊤(Axk−b))
となる(ISTA, iterative shrinkage-thresholding algorithm)。勾配で一歩進み、絶対値が tλ 以下の成分をちょうど 0 にし、残りを tλ だけ 0 に寄せる。
補題 5.22(近接写像の基本不等式)p=Tt(v) ならば、すべての z∈C について
h(z)+2t1∥z−v∥2≥h(p)+2t1∥p−v∥2+2t1∥z−p∥2
証明. ϕ(u)=h(u)+2t1∥u−v∥2、0<s<1, us=p+s(z−p)∈C とする。h の凸性と恒等式 ∥(1−s)a+sb∥2=(1−s)∥a∥2+s∥b∥2−s(1−s)∥a−b∥2(a=p−v, b=z−v)より ϕ(us)≤(1−s)ϕ(p)+sϕ(z)−2ts(1−s)∥z−p∥2。ϕ(p)≤ϕ(us) と合わせて s で割ると ϕ(p)≤ϕ(z)−2t1−s∥z−p∥2 で、s→0 とすればよい。□
定理 5.23(近接勾配法の収束)F=f+h が C 上で最小点 x∗ をもつとし、0<t≤1/L, x0∈C とする。近接勾配法の点列について F(xk+1)≤F(xk) で、k≥1 について F(xk)−F(x∗)≤2tk∥x0−x∗∥2 である。
証明. x∈C、g=∇f(x)、v=x−tg、x+=Tt(v)、z∈C とする。降下補題(1/t≥L)と凸性 f(x)≤f(z)+⟨g,x−z⟩ より f(x+)≤f(z)+⟨g,x+−z⟩+2t1∥x+−x∥2。補題 5.22 に ∥z−v∥2−∥x+−v∥2=∥z−x∥2−∥x+−x∥2+2t⟨g,z−x+⟩ を代入すると h(x+)≤h(z)+⟨g,z−x+⟩+2t1(∥z−x∥2−∥x+−x∥2−∥z−x+∥2)。2 式を足すと
F(x+)≤F(z)+2t1(∥z−x∥2−∥z−x+∥2)(5.2)
z=x とすると F(x+)≤F(x)。z=x∗ とすると定理 5.7 の証明と同じ形の不等式になり、同様に足し合わせればよい。□
C=Rn, h=0 なら定理 5.7 に戻る。近接勾配法に定義 5.12 型の慣性をつけた FISTA(Beck–Teboulle, 2009 年)は F(xk)−F(x∗)≤(k+1)22L∥x0−x∗∥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 個すべてが 0 でない。λ=2 では小さな係数が 5 個残り、λ=15 ではちょうど 2, 7, 15 番だけが残るが、その係数は真の値 3,−2,1.5 より 0 側に縮んでいる。
ヒント
実務では
ラッソの罰則は係数の大きさに一様にかかるので、特徴量を標準化してから使う(単位を変えると選ばれる変数が変わる)。λ は交差検証で選ぶことが多い。係数は 0 側に偏る(上の出力)ので、効果の大きさを報告するときは、選ばれた変数だけで最小二乗法をやり直すなどの補正を検討する。計算には FISTA のほか、成分ごとにソフト閾値を繰り返す座標降下法も広く使われる。
まとめ
- L-平滑なら t≤1/L の最急降下法は毎回 2t∥∇f(xk)∥2 以上 f を減らす(降下補題)。凸でなくても、下に有界なら勾配は 0 に近づく。
- アルミホ条件のバックトラッキングは有限回で終わり、L-平滑なら t≥min(tˉ,2β(1−c)/L) が保証される。
- L-平滑な凸関数では f(xk)−p∗≤L∥x0−x∗∥2/(2k)。強凸なら関数値の誤差と距離の 2 乗がともに毎回 1−1/κ 倍以下になる。
- 二次関数では誤差は固有ベクトルごとに 1−tλi 倍になり、t<2/L が必要で、μ の方向が遅れる。反復回数は κ に比例する。スケーリング・前処理が効く。
- 加速法は O(1/k2) を達成し、1 次の方法として定数倍を除いて最適である。強凸なら反復回数は κ に比例する。値は単調に減るとは限らない。
- 共役勾配法は二次関数を厳密計算で n 回以内に最小化する。
- 射影勾配法と ISTA を含む近接勾配法は O(1/k) で収束し、不動点は最適解である。λ∥x∥1 の近接写像はソフト閾値で、ラッソの解がスパースになる。
演習問題
問題 5.1 ★ f(x)=21(x12+10x22) を x0=(1,1) から最急降下法で最小化する。(1) L,μ,κ を求め、t=1/L のときの xk を求めよ。f(xk)≤10−6 となる最小の k を求め、定理 5.8 から保証される回数と比べよ。(2) t=2/(μ+L) のときの xk を求めよ。(3) t=0.25 のとき何が起こるか。
解答
(1) ∇2f=diag(1,10) より μ=1, L=10, κ=10。t=0.1 では xk+1=(0.9xk,1,0) なので、k≥1 で xk=(0.9k,0)、f(xk)=21⋅0.81k。これが 10−6 以下になるのは k≥log(2×10−6)/log0.81≈62.3、すなわち k=63 から。定理 5.8 の評価 f(xk)≤0.9kf(x0)=5.5⋅0.9k からは k≥148 しか保証されない。二次関数では誤差が毎回 1−1/κ 倍(命題 5.9)、関数値はその 2 乗の 0.81 倍になるので、一般の関数向けの定理 5.8 は保守的である。
(2) 1−t=9/11, 1−10t=−9/11 なので xk=((9/11)k,(−9/11)k)、f(xk)=5.5⋅(81/121)k。2 つの方向が同じ速さで減る。
(3) 1−10⋅0.25=−1.5 なので xk,2=(−1.5)k となり発散する(t>2/L=0.2)。xk,1=0.75k は収束するが、f(xk)→∞。
問題 5.2 ★★ f を L-平滑な凸関数(最小点 x∗ をもつ)とし、最急降下法のステップ幅を c=1/2 のアルミホ条件のバックトラッキング(初期値 tˉ、縮小率 β)で決める。tmin=min(tˉ,β/L) として f(xk)−p∗≤2tmink∥x0−x∗∥2 を示せ。
解答
命題 5.6 より採られる tk は min(tˉ,2β(1−1/2)/L)=tmin 以上で、(5.1) より f(xk+1)≤f(xk)−2tk∥gk∥2(gk=∇f(xk))。凸性 f(xk)≤p∗+⟨gk,xk−x∗⟩ と合わせ、xk+1=xk−tkgk を使って定理 5.7 の証明と同様に平方完成すると
f(xk+1)−p∗≤⟨gk,xk−x∗⟩−2tk∥gk∥2=2tk1(∥xk−x∗∥2−∥xk+1−x∗∥2)
左辺は 0 以上なので括弧内も 0 以上で、1/tk≤1/tmin より右辺は 2tmin1(∥xk−x∗∥2−∥xk+1−x∗∥2) 以下。k=0,…,K−1 について足し、f(xk) が単調非増加であることを使えば K(f(xK)−p∗)≤2tmin1∥x0−x∗∥2。
問題 5.3 ★★ t>0 とする。(1) λ,μ>0, h(x)=λ∥x∥1+2μ∥x∥2(エラスティックネットの罰則)について proxth(v)i=1+tμ1Stλ(vi) を示せ。(2) C=[0,1]n, h=0 のとき Tt(v) を求めよ。
解答
(1) 成分ごとに分かれ、γ=1+tμ とすると
tλ∣u∣+2tμu2+21(u−v)2=γ(γtλ∣u∣+21(u−γv)2)+21(v2−γv2)
で、最後の項は u によらないから、命題 5.21 の証明より最小点は Stλ/γ(v/γ)=sign(v)max(∣v∣−tλ,0)/γ=Stλ(v)/γ。ℓ1 罰則で小さい成分を 0 にし、ℓ2 罰則で全体を 1/(1+tμ) 倍に縮める。
(2) Tt(v)=PC(v) は成分ごとの切り詰め min(max(vi,0),1) で(第2章 例 2.5)、t によらない。
問題 5.4 ★★ 定理 5.23 の設定で、(1) x∗∈C が F の最小点であるための必要十分条件は x∗=Tt(x∗−t∇f(x∗)) であることを、(5.2) を使って示せ。(2) ラッソ(C=Rn, h=λ∥x∥1)について、(1) の条件を g=∇f(x∗)=A⊤(Ax∗−b) の成分で書け。
解答
(1) x+=Tt(x∗−t∇f(x∗)) とする。(5.2) で x=z=x∗ とすると F(x+)≤F(x∗)−2t1∥x∗−x+∥2。x∗ が最小点なら F(x+)≥F(x∗) なので x+=x∗。逆に x+=x∗ なら、(5.2) で x=x∗ とすると任意の z∈C で F(x∗)≤F(z)+2t1(∥z−x∗∥2−∥z−x∗∥2)=F(z)。
(2) 条件は各 i で xi∗=Stλ(xi∗−tgi)。xi∗>0 なら xi∗−tgi−tλ=xi∗ より gi=−λ、xi∗<0 なら gi=λ、xi∗=0 なら ∣tgi∣≤tλ より ∣gi∣≤λ。まとめて「xi∗=0 なら gi=−λsign(xi∗)、xi∗=0 なら ∣gi∣≤λ」で、t によらない。第2章 定理 2.29(劣勾配による最適性条件)の条件 0∈g+λ∂∥x∗∥1 と同じ形で、実装ではこの条件の破れの大きさを停止判定に使える。
問題 5.5 ★★ 次の判断は正しいか。(1) 最小二乗法の勾配法を学習率 0.01 で回していたが、ある特徴量(金額)の単位を千円から円に変えた(値が 1000 倍になった)ところ発散した。分析者は「単位を変えても最適な予測は同じはずなので、実装の誤りだ」と判断した。(2) 加速勾配法を実装したら、目的関数の値が途中で増える反復があった。分析者は「降下法なのに値が増えるのは誤りだ」と判断した。
解答
(1) 実装の誤りとは限らない。f(x)=21∥Ax−b∥2 で A の第 j 列 aj を 1000 倍すると、∥aj∥2 は 106 倍になり、L=λmax(A⊤A)≥ej⊤A⊤Aej=∥aj∥2(レイリー商)なので新しい L は 106∥aj∥2 以上になる。∥aj∥2>2×10−4 なら(普通のデータではまず成り立つ)t=0.01>2/L で、安定条件(命題 5.9)が破れて発散する。最適な予測は変わらない(その係数が 1/1000 倍になるだけ)が、勾配法の速さと安定性は変わるのである。特徴量の標準化か、バックトラッキングで対処する。
(2) 誤り。加速法は単調な降下法ではなく、慣性で値が一時的に増えることがある(5.5 節)。保証されているのは f(xk)−p∗≤2L∥x0−x∗∥2/(k+1)2 という上界だけである。実装の確認には、慣性をなくすと値が単調に減ることや、小さな問題で既知の解に近づくことを調べるとよい。
問題 5.6 ★★ C を空でない閉凸集合、f を μ-強凸かつ L-平滑とし、x∗ を C 上の最小点とする。射影勾配法 xk+1=PC(xk−L1∇f(xk)) について ∥xk+1−x∗∥2≤(1−Lμ)∥xk−x∗∥2 を示せ(ヒント:命題 5.19、射影の非拡大性、第2章 定理 2.22・2.23)。
解答
命題 5.19 より x∗=PC(x∗−L1∇f(x∗))。射影の非拡大性(第2章 定理 2.4)より、e=xk−x∗, δ=∇f(xk)−∇f(x∗) として
∥xk+1−x∗∥2≤e−L1δ2=∥e∥2−L2⟨δ,e⟩+L21∥δ∥2
L-平滑な凸関数の性質 ⟨δ,e⟩≥L1∥δ∥2(第2章 定理 2.23 の (d))より L21∥δ∥2≤L1⟨δ,e⟩ なので、右辺は ∥e∥2−L1⟨δ,e⟩ 以下で、強凸性 ⟨δ,e⟩≥μ∥e∥2(第2章 定理 2.22 の 3)よりさらに (1−Lμ)∥e∥2 以下である。制約があっても、制約のない場合(定理 5.8)と同じ速さで距離が縮む。