論文の概要
本論文は確率的最適化(以下、SG法)をバッチ最適化と比較しつつ、手法のサーベイをしたものである。バッチ最適化を代表する、古典的な非線形計画法は収束性が高い一方、大規模問題においてはSG法が主として用いられている。SG法には大きな研究の流れが2つあり、1)推定される勾配のノイズを低減、2)二次情報の利用が挙げられる。
本論文では上記の内容を次の3つの内容:1)機械学習における最適化問題の難しいポイント(成功を収めている、近年のDeepLearningのような非線形性が強い非凸最適化問題)、2)、大規模機械学習において有用な最適化手法と有用であることの理由、3)顕著な進展とOpen Quetstionを踏まえて紹介している。
本稿での各章の接頭語として記載されている数字は、論文の章番号を指す。
- 論文の概要
- 2. 大規模非線形非凸最適化問題を考える動機
- 3. SG法とバッチ最適化の違い
- 4. SG法のアルゴリズムの概略
- 5. SG法の発展:1)推定される勾配のノイズを低減
- 6. SG法の発展:2)二次情報の利用
- 7. その他の手法
- 8. 正則化付きの最適化問題に対する手法
- 参考文献
2. 大規模非線形非凸最適化問題を考える動機
機械学習の予測モデルにおいて、滑らかでパラメータ表現が簡便な関数は現実的ではない。例えば文章分類問題などにおいて、簡便な代理モデルは既存のデータセットにおいては有効であるが、実運用に耐えうるものではなかった。近年、Deep Learningのような大規模非線形非凸最適化が台頭し、これまでの代理モデルと大きく乖離しているモデルが大成功を収めており、そのような複雑なモデルを対象とする必要が出てきた。
本論文で対象とする問題はデータ数やモデルのパラメータ数が非常に多いものとし、モデルの関数系は定まっているものの、データとパラメータによりその形状が変わるものとする。機械学習のモデルを検討するにあたり、以下が注意すべき事項である。
- 経験誤差最小化
事前の知識を使って適した関数を選ぶ。 - 経験誤差と期待誤差のギャップの最小化
データ数を増やす。学習に用いるデータにより得られるモデルの形状が異なるため、ギャップを見積もるためにVC次元を考える必要がある。運用では交差検証法を用いる。
3. SG法とバッチ最適化の違い
3.1 SG法
必ずしも降下方向に解を更新するとは限らない。
全てのデータを使わずとも最適解に解を近づけられるため、バッチ最適化よりも効率的に関数の情報を用いていると思われる。
最初の1、2エポックで急激にコスト関数の値が減少し、それ以降は緩やかになる。
狭義凸な経験誤差に対して、データをiidサンプリングして勾配を算出した場合の収束レートは劣線形であり、データの標本サイズに依存しない。
経験誤差の収束レートは、期待誤差の収束レートと同じ。
$\epsilon$誤差を得るために必要な計算時間は$1/\epsilon$オーダーでデータ数に関係ない。
並列計算は可能だが、パラメータを高頻度で共有してしまうためにそれがオーバーヘッドとなり、効率の良い分散計算は難しい。
研究の方向性(推定勾配のノイズ低減、Hessianの活用)
3.2 バッチ最適化
勾配情報を用いられるため、種々の手法に繋がる。
計算量の大半が目的関数やその勾配の評価にあたるため、並列化可能である。
強凸な経験誤差に対して、収束レートは線形。
十分時間をかけた際、コスト関数はSG法よりも小さい。
勾配法を用いて $\epsilon$誤差の解を得るために必要な計算時間は$n \operatorname{log}(1 / \epsilon)$が目安で、データ数に比例する。
3.3 比較
SG法とバッチ最適化は経験誤差の最小化において、解を1回更新するための計算量とその時の経験誤差の減少量が異なるという点でトレードオフ。
データ数が十分多い場合は、SG法の方が収束までの時間が早い。
4. SG法のアルゴリズムの概略
シンプルなSG法の特徴として、解の更新に用いる勾配の推定値がiidの確率変数に依存することと、ステップ幅が機械的に計算されることが挙げられる。勾配の推定値は1サンプル若しくは複数サンプルで計算されたり、その推定値をHessianでスケール変換することもある。
通常SG法は平滑な関数を対象にしており、平滑であれば勾配の推定値の1次・2次モーメントを用いることで、解の更新によるコスト関数の減少値の上限を見積もることができる。見積もりにあたり、1)コスト関数が下に有界、2)勾配の推定値の1次・2次モーメントの上下限、3)勾配の推定値の分散の上界を仮定することで、コスト関数の減少値の期待値がアルゴリズムのパラメータに依存する形で得られる。以下の収束性の議論では、基本的に上記内容を仮定し、また解の更新により解が減少することを保証するため初期点が最適解近傍であることを仮定する。
Theorem 4.6:強凸関数に対してSG法を適用する際、固定ステップ幅を適切に定めると最適性ギャップの期待値が定数に収束する。この定理からわかることとして、ステップ幅を小さくすることで最適解近傍に近付くようになるが、収束性が悪化することが挙げられる。そのため、ステップ幅を大きい値から徐々に小さくすること(例:最適性ギャップの2倍に到達する毎にステップ幅を半分にするなど)が良いと考えられる。収束性を考えるとステップサイズに面倒な調整が出ないよう、目的関数に局所的な凸性があると望ましい。
Theorem 4.7:強凸関数に対してSG法を適用する際、ステップ幅を解の更新回数に反比例となるように減少させると、最適性ギャップの期待値も更新回数に反比例して減少していく。
Theorem 4.8:凸とは限らない関数に対してSG法を適用する際、固定ステップ幅を適切に定めると、勾配の更新履歴の二乗ノルムの平均値に対する期待値は、上限値が定数に収束する。
Theorem 4.9 :凸とは限らない関数に対してSG法を適用する際、Theorem 4.7と同じステップ幅を用いると、勾配の二乗ノルムの期待値は0に収束する。
Theorem 4.10:Theorem 4.9と同じ条件の下、勾配の履歴の二乗ノルムの重みつき平均値に対する期待値は0に収束する。
5. SG法の発展:1)推定される勾配のノイズを低減
SG法は推定される勾配のノイズの影響を受け、解への収束が妨げられる。線形収束するSG手法に対して、ノイズの影響を低減させる手法は大きく3つあり、1)Dynamic Sampling:徐々にノイズを低減させるようミニバッチのサイズを増加させていく方法、2)Gradient Aggregation:過去の更新方向の重み付けなどして、解の更新方向をより良くする方法、3)Iterate Averaging:最適解近傍での振動を抑えられるよう、解の更新履歴の平均を用いる方法が挙げられる。以下では、この3つの手法の詳細を述べる。
5.1:Dynamic Sampling
Dynamic Samplingは次のTheorem 5.1を満たす手法の1つである。Theorem 5.1では、Theorem4.6と同様の仮定の下(固定ステップ幅の決め方は異なる)かつ推定勾配の分散が解の更新に応じて幾何級数的に減少するならば、最適性ギャップの期待値も幾何級数的に減少することを主張している。推定勾配の分散を幾何級数的に下げるには、Theorem 5.3より勾配を計算する際のサンプルサイズを幾何級数的に増大させれば良いことがわかる。このことから、バッチ最適化のアルゴリズムが与えらた際にサンプリングにより収束性の高いSG法の構築ができることが期待される。強凸関数に対してそのようなサンプリング方法は、劣線形収束レートを示すアルゴリズムに対しては存在しないが、線形収束レートのものに対しては幾何級数的にサンプリング、超線形収束レートの場合のものに対しては幾何級数よりも大きくサンプリングすると望ましいことがわかっている。
実際の運用ではサンプルレートの調整は何度か計算を実行して決める必要があるため、適応的に決める方法も研究がなされているが、幾何級数的に増加することが保障されない。またDynamic Samplingは機械学習ではほとんど使用されていないため、本論文では他手法を検討する際の出発点として扱われている。
5.2:Gradient Aggregation
この手法は、更新により解があまり変化していなければ、その更新情報を再利用しても良いのではないかという着想のものである。この手法は基本的に劣線形オーダーの収束しか得られないが、以下に示す手法は強凸関数に対して線形収束オーダーを示す。
Stochastic Variance Reduced Gradient(SVRG)
SVRGでは解の更新方向を$\tilde{g}_j \leftarrow \nabla f_{ij} (\tilde{w}_{j}) - \big( \nabla f_{ij}(w_k) - \nabla R_n(w_k) \big)$と定義しており、$\tilde{g}_j$は勾配の平均値の不偏推定量となっている。この勾配を用いた解の更新方法は種々あり、他のSG法と比較してコスト関数をよく下げられるが、ステップ幅などのパラメータは実験的に決める必要がある。SAGA
SAGAでは解の更新方向を$g_k \leftarrow \nabla f_j(w_k) - \nabla f_j(w_{[j]}) + \frac{1}{n} \Sigma_{i=1}^{n} \nabla f_i(w_{[i]})$と定義しており、勾配の不偏推定量となっている。この手法は勾配ベクトルを$n$個格納する必要があるため、大規模問題には適用しにくい。
これらの手法はSG法よりも収束性は高いが、計算時間が早いとは限らないことに注意が必要である。(SG法:$T(n, \epsilon) \sim \frac{L^{2}}{(c \epsilon)^{2}}$、$T(n, \epsilon) \sim (n+\frac{L}{c})log(1/\epsilon)$)
5.3:Iterate Averaging
SG法は最適解近傍で振動するため、Iterate Averagingではその挙動を抑えるためにパラメータの更新履歴の平均値、次のパラメータの値とする。平均を取ることやステップ幅を調整しても漸近収束性の改善にはつながらないことに注意が必要である。
6. SG法の発展:2)二次情報の利用
古典的なSG法は、関数の二次情報を用いて非線形性や悪い条件数に対処することで性能を上げることができる。 二次情報を用いるアルゴリズムとしてNewton法や自然勾配法などが挙げられ、Newton法は変数の線形変換に対して不変である一方、自然勾配法は可逆変換に対して不変である。以下ではNewton法、自然勾配法の順番でSG法へ拡張した手法を確認していく。
6.1:Newton法
Newton法にはHessian-Free Inexact Newton Methodsと呼ばれる手法がある。これは収束レートが超線形オーダーのInexact Newton Methodsを基にしたものである。Hessian-Freeの名前の由来は、Hessianを直接扱わずHessianとの内積を扱うことである。それをSG法に拡張したものが、Subsampled Hessian-Free Newton Methodsである。このSubsamplingは、暫定解に対して条件付き無相関にしなければならない。Hessianは勾配と比較してノイズに対して頑健であるため、そこまで精度よく計算する必要はないが、曲率を正確に捉えられるようにサンプル数は大きくしたいという要望はある。サンプル数を適切に設定すれば、ロバストかつ効率的に解の更新が得られる。この議論は、Hessianを推定する際に用いるデータセットの方が、勾配を推定する際に用いるデータセットの数よりも小さいことを前提としているため、それが崩れる場合はSG法を用いるのがよい。
Hessian Freeの手法は、非凸最適化問題の機械学習にも適用されている。例えばGauss-Newton法のように正定値行列に近似するものは、機械学習だけでなく深層学習の学習でも有用である。特に深層学習の学習において、負の曲率と鞍点が果たす役割について多くの議論がある。(詳細は文献を参照のこと)
メモリ効率の良い手法として、Quasi-Newton Methodが挙げられる。この手法は解の更新方向をベクトルのペアから求めるためメモリ効率が良い。これをSG法に拡張したものはStochastic Quasi-Newton Methodと呼ばれ、通常のSG法と同様に劣線形の収束レートである。この利点は、近似したHessianが元の関数のHessianに一致する際、収束レートに含まれる定数がHessianに関係なくなるため、SG法よりも条件数の観点で理論的に良い手法である。この手法を適用する際のミニバッチのサイズは、Hessian Freeのように大きくする必要はないが、少なくとも20 or 50以上が望ましい。基本的なBFGS法であれば、推定した勾配の分散が大きい場合、つまり曲率の推定が悪い場合も問題なく適用できる。しかし、SG法へ拡張したOnline L-BFGS法は問題となる。
6.2:自然勾配法
冒頭でも述べたが、Newton法はパラメータの線形変換に対して不変である一方、自然勾配法は微分可能な可逆変換に対して不変である。自然勾配法のパラメータ空間での挙動は、コスト関数に小さな影響を与える方向には速くパラメータを変化させ、大きな影響を与える方向には慎重に変化させるものである。関数空間では、パラメータを変化させたときのパラメータの変化をKL-divergenceで定義した際リーマン多様体を形成しており、その変化(ノルム)は局所的にFisher Information Matrix($FIM$)で近似できる。この事実を基に自然勾配法は解の更新にあたり、KL-divergenceで定義したパラメータの変化が十分小さい範囲で、コスト関数を最小にするパラメータを計算するものである。その更新式は、Newton法のように勾配を$FIM$の逆行列で補正するものである。この形は、最尤推定法でよく使われる最適化手法であるスコア関数法と非常によく似ている。また最適解近傍においては、$FIM$はHessianと同じような値になるため、その場合においては自然勾配法とNewton法は同等の類似手法と言える。
SG法への拡張にあたり、$FIM$をSubsamplingしたデータで計算する方法があるが、Gauss-Newton法と同様の議論ができる。
6.3:その他
上記2つの方法の様に2次情報を取り込むなどして収束性を高めたいが、追加で発生するHessianなど2次情報を求める計算が原因で、計算量が多くなりすぎてしまう時がある。計算量を抑えるために、Hessianの対角成分のみを近似した対角行列やブロック対角行列で代用することを考える。
例えばGauss-Newton法の場合は、新たに計算したHessianをまま使用するのではなく、前の更新で利用したものと凸結合をとったものを採用する。解の更新にあたっては、その様にして得られたHessianの近似行列の対角成分のみを用いて勾配に適用する。こうすることで、一次法を拡張したSG法と比較して2倍ほど計算量は増加するが、パラメータをよくチューニングしたSG法よりも優れた結果が得られている。 Hessianの逆行列を直接近似する方法もあるが、解の更新の際に相関のあるノイズが原因で曲率の推定に悪影響を及ぼしてしまったり、近似した行列の挙動に規則性がないためステップ幅を決めるのが難しかったりという報告がなされておりと、望ましい方法ではない。
Hessian行列の近似を考えたが、曲率情報を考慮せずに、解の更新方向をスケーリングするために対角行列を導入することもある。曲率情報を考慮した解の更新方向の大きさは、必ずしも現実的ではなくステップ幅を調整した方が望ましい。バッチ最適化ではステップ幅の調整は容易だが、SG法では、非凸関数を対象にしている場合は困難である。解の更新方向の大きさをスケーリングすることは単純であるが、深層学習に対しては効果的であるとの報告がある。ステップ幅は更新に応じて減少させていくものを採用すれば良く、ADAGRADを用いた場合深層学習に対して優れた性能を発揮する。ただし、最適化の初期の段階でステップ幅が小さくなりすぎることが課題として上がっている。
7. その他の手法
7.1:モーメンタム法
前回の更新方向も考慮して、$w_{k+1} = w_k - \alpha_k \nabla f(w_k) + \beta_k(w_k - w_{k-1})$として解を更新する方法である。$(\alpha_k , \beta_k)$は定数でも更新ごとに値を変えても良い。コスト関数が2次凸関数であれば、解の更新ごとに最適化問題を解くことで、最も減少させられる$(\alpha_k , \beta_k)$が得られる。過去の勾配方向の系列を考慮する方法もあり、更新方向の振動が抑えられるという利点がある。勾配を推定値に置き換えてSG法に拡張した際の理論的性質は明らかではない。
7.2:加速勾配法
$w_{k+1} = w_k - \alpha_k \nabla f(w_k + \beta_k(w_k - w_{k-1})) + \beta_k(w_k - w_{k-1})$として解を更新する方法である。$\alpha_k = \alpha >0, {\beta_k} \rightarrow 1$となるよう適切に設定することで、連続微分可能でリプシッツ連続な凸関数の収束レートが最適レートを達成する。勾配を推定値に置き換えてSG法に拡張した際は、バッチ最適化の様に収束レートは改善せず、Theorem 4.7の定数が改善される可能性がある程度である。
7.3:座標降下法
座標降下法は、解の更新にあたり特定の座標軸のみを更新する方法である。パラメータとしては、ステップ幅と更新する座標軸の選定方法の2つである。座標軸の選定には、1)順繰りに選んでいく方法、2)更新する順番をランダムに並び替え、選定が一巡するごとにランダムに並び替える方法、3)解を更新する度に選定する座標軸をランダムに選ぶ方法が挙げられる。ランダム性を持った2)、3)の方が1)よりも理論的には優れている。
座標降下法の収束性は、連続微分可能な関数に対しては保証されておらず、簡易な非凸関数に適用した際に収束が見られなかったことが報告されている。強凸関数を対象にした場合は収束が保証されており、特に連続微分可能で勾配の各要素に対してリプシッツ連続であるならば、3)の方法で軸を選択する際、線形オーダーで収束する。更新する軸の選択確率を各要素のリプシッツ定数で重み付けしても同様に線形収束となる。
8. 正則化付きの最適化問題に対する手法
本章で対象とする最適化問題は以下のような正則化付きの最適化問題で、目的関数は平滑な凸関数$f(w)$であるが、正則化項は平滑とは限らないが凸関数であるとする。この問題を解く手法としてproximal gradient methodやproximal Newton methodなどが挙げられ、ここではそれらの手法について述べる。(Orthant-basedは割愛)
$$
\min_{w \in \mathbb{R}^{n}} f(w) + \lambda g(w)
$$
8.1:proximal gradient method
この手法は目的関数を勾配を用いて二次関数で近似し、正則化項との和を最小にするように解を更新する方法である。
$\alpha_k$を適切な定数として、$f(x)$が連続微分可能な強凸かつ平滑ならば、唯一解に最適値の意味で収束することが保障されている(Theorem 8.1)。また、第$3,4$項(近接項と正則化項)が効率よく計算できる時は実用的である。具体的には、$g$が多面体のような単純な集合の指示関数や$l1$ノルム、計算が分離可能なものである。
これをSG法に拡張するためには、$\nabla f(w_k)$を推定値に置き換えてあげれば良い。$l1$ノルムを対象にしたISTAもSG法として拡張できる。また正則化項としての$l1$ノルムを変数変換して滑からな最適化問題とした場合、射影勾配法を解くことなり、スパース解が得られなくなるかもしれないが、同様にSG法へ拡張できる。
8.2:Second-Order Methods:proximal Newton method
この手法は、proximal gradient methodの解の更新方法をベースに、近接項の係数をHessianもしくは準ニュートン法で行う近似したHessianに置き換える手法である。proximal gradient methodと比較して解析や実装が難しいという課題があるが、それを解決できればスケーラビリティだけでなく、高い性能を出すことができる。課題としては、1)部分問題が非平滑関数であること、2)部分問題の計算の終了判定に微分が含まれていること、3)計算量が大きいことが挙げられる。
それらには対応策があり、以下順に述べる。1)Lassoのようによく研究されている関数の最適化手法はCD法などの解き方が種々存在する。2)ISTAによる解の変化の大きさを終了判定にとる。この基準は微分が不要だけでなく、最適解に到達すれば$0$を示し、実数空間において連続関数であるという重要な性質を持つ。3)(L1 正則の場合)各部分問題において、いくつかの変数の要素を$0$に固定する。$0$ に固定する変数は、(Orthant-Based Methodで議論される)感度情報などを用いれば良い。
参考文献
Bottou, Léon, Frank E. Curtis, and Jorge Nocedal. "Optimization methods for large-scale machine learning." SIAM review 60.2 (2018): 223-311