技術共有

【ディープラーニング】グラフィカルモデルの基礎(7):機械学習最適化における分散低減法(1)

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

まとめ

確率的最適化は機械学習の重要なコンポーネントであり、その中核となるのは確率的勾配降下アルゴリズム (SGD) です。この手法は、60 年以上前に初めて提案されて以来、広く使用されてきました。過去 8 年間にわたり、私たちは確率的最適化手法の分散削減技術という刺激的な新しい発展を目の当たりにしてきました。これらの分散削減手法 (VR 手法) は、トレーニング データの複数回の反復が可能なシナリオで良好に機能し、理論上も実際上も SGD よりも速い収束を示します。この速度の向上は、VR 手法への関心の高まりと、この分野での研究成果の急速な蓄積を浮き彫りにしています。この記事では、専門家以外の読者に情報を提供することを目的として、限られたデータセットの最適化のための VR 手法における重要な原則と大きな進歩について概説します。私たちは主に凸最適化環境に焦点を当てており、非凸関数の最小化の拡張に興味のある読者にリファレンスを提供します。

キーワード | 機械学習の最適化;

1 はじめに

機械学習研究の分野では、モデルを巨大なデータセットにどのように適応させるかが基本的かつ重要な問題となります。たとえば、線形最小二乗モデルの典型的なケースを考えることができます。

x ∗ ∈ arg ⁡ min ⁡ x ∈ R d 1 n ∑ i = 1 n ( ai T x − bi ) 2 x^* in argmin_{x in mathbb{R}^d} frac{1}{n} sum_{i=1}^{n} (a_i^T x - b_i)^2バツarバツRd1=1(1つのTバツb)2

このモデルでは、 ddd ベクトルで表されるパラメータ x ∈ R dx は mathbb{R}^d で表されます。バツRd 与えられた。その間、私たちは手元に んん データポイント(特徴ベクトルを含む) ai ∈ R d a_i は mathbb{R}^d で表されます。1つのRd と目標値 bi ∈ R b_i は mathbb{R} で表されます。bR 。モデルの適応プロセスでは、モデルの予測出力が適切になるようにこれらのパラメーターを調整します。 aiT x a_i^T x1つのTバツ 平均して目標値にできるだけ近づける ビビb

より広く言えば、損失関数を使用することもできます。 fi ( x ) f_i(x)(バツ) モデルの予測と ii データ ポイントがどの程度近いか:

x ∗ ∈ arg ⁡ min ⁡ x ∈ R df ( x ) : = 1 n ∑ i = 1 nfi ( x ) x^* in argmin_{x in mathbb{R}^d} f(x) := frac{1}{n} sum_{i=1}^{n} f_i(x)バツarバツRd(バツ):=1=1(バツ)

損失関数 fi ( x ) f_i(x)(バツ) これが大きい場合は、モデルの予測がデータから大きく外れていることを示します。 fi ( x ) f_i(x)(バツ) ゼロに等しい場合、モデルはデータ ポイントに完全に適合します。関数 関数 f(x)(バツ) データセット全体にわたるモデルの平均損失を反映します。

上記の形式 (2) のような問題は、線形最小二乗問題だけでなく、機械学習で研究される他の多くのモデルにも当てはまります。たとえば、ロジスティック回帰モデルでは次のことを解決します。

x ∗ ∈ arg ⁡ min ⁡ x ∈ R d 1 n ∑ i = 1 n log ⁡ ( 1 + e − biai T x ) + λ 2 ‖ x ‖ 2 2 x^* in argmin_{x in mathbb{R}^d} frac{1}{n} sum_{i=1}^{n} log(1 + e^{-b_i a_i^T x}) + frac{lambda}{2} |x|_2^2バツarバツRd1=1見よ(1+eb1つのTバツ)+2λバツ22

ここで扱っているのは、 bi ∈ { − 1 , + 1 } b_i は {-1, +1} の範囲内にあるb{1,+1} バイナリ分類問題の場合、予測は以下に基づいて行われます。 aiT x a_i^T x1つのTバツ シンボル。正規化項も式に導入されています λ 2 ‖ x ‖ 2 2 frac{lambda}{2} |x|_2^22λバツ22 データの過剰適合を避けるため、 ∠x ∠2 2 |x|_2^2バツ22 急行 xxバツ のユークリッドノルムの二乗。

ほとんどの教師あり学習モデルでは、トレーニング プロセスは、L1 正則化最小二乗法、サポート ベクター マシン (SVM)、主成分分析、条件付きランダム フィールド、ディープ ニューラル ネットワークなどを含む形式 (2) で表現できます。

現代の問題における主な課題は、データ ポイントの数です。 んん おそらく非常に大きいでしょう。私たちはテラバイトの範囲をはるかに超えたデータセットを扱うことが多く、そのソースはインターネット、衛星、リモートセンサー、金融市場、科学実験など多岐にわたります。このような大規模なデータ セットを処理するための一般的なアプローチは、各反復でランダムに選択された少数のデータ ポイントのみを使用する確率的勾配降下法 (SGD) アルゴリズムを使用することです。さらに、最近では、従来の確率勾配法よりも収束速度が速い分散低減 (VR) 確率勾配法への関心が急激に高まっています。
ここに画像の説明を挿入します
図 1. マッシュルーム データセット [7]、勾配降下法 (GD)、加速勾配降下法 (AGD、[50] の加速 GD)、確率的勾配降下法 (SGD) および ADAM [30] 法に基づくロジスティック回帰問題について分散削減 (VR) 手法である SAG および SVRG との比較 (n = 8124、d = 112)。

1.1. 勾配および確率的勾配降下法

勾配降下法 (GD) は、上記の問題 (2) を解決するために使用される古典的なアルゴリズムであり、その反復更新式は次のとおりです。
xk + 1 = xk − γ 1 n ∑ i = 1 n ∇ fi ( xk ) x_{k+1} = x_k - gamma frac{1}{n} sum_{i=1}^{n} nabla f_i(x_k)バツ+1=バツγ1=1(バツ)

ここ、 γガンマγ ゼロより大きい固定ステップ値です。GD アルゴリズムの各反復中に、各データ ポイントは次のようにする必要があります。 ii 勾配を計算する ∇ fi ( xk ) は f_i(x_k) に等しい(バツ)、つまり、GD にはすべてが必要です。 んん データポイントの完全な走査を実行します。データセットのサイズが んん 非常に大きくなると、GD アルゴリズムの各反復のコストが非常に高くなり、その適用が制限されます。

代わりに、Robbins と Monro によって最初に提案された確率的勾配降下法 (SGD) 法を考慮することができます。その反復更新式は次のとおりです。
xk + 1 = xk − γ ∇ fik ( xk ) x_{k+1} = x_k - γ となり、 f_{i_k}(x_k) となる。バツ+1=バツγ(バツ)

SGD アルゴリズムは、各反復でランダムに選択された 1 つのデータ ポイントの勾配のみを使用して機能します。 ∇ fik ( xk ) は f_{i_k}(x_k) となる。(バツ) 各反復のコストを削減します。図 1 では、最適化プロセスの初期段階で、SGD が GD (加速された GD メソッドを含む) よりも大幅な進歩を遂げていることがわかります。グラフは、最適化の進行状況をエポック単位で示します。エポックは、すべての要素の計算として定義されます。 んん トレーニング サンプルの勾配の数。 GD アルゴリズムは各ラウンドで 1 回の反復を実行しますが、SGD アルゴリズムは各ラウンドで 1 回の反復を実行します。 んん 繰り返し。SGD と GD を比較するための基礎としてラウンドを使用します。 んん 非常に大きなケースでは、両方の方法の主なコストは勾配に集中します。 ∇ fi ( xk ) は f_i(x_k) に等しい(バツ) 計算。

1.2. 分散の問題

ランダムなインデックス付けを考えてみましょう いいね コレクションから { 1 , … , n } {1, ldots, n}{1,,} 一様ランダム選択の場合、これは、すべての ii、選ぶ ik = i i_k = i= 確率 P [ ik = i ] P[i_k = i][=] 等しい 1 n フラクタル{1}{n}1 。この場合、 ∇ fik ( xk ) は f_{i_k}(x_k) となる。(バツ) として ∇ f ( xk ) は f(x_k) に等しくなります。(バツ) 期待値の定義により、次のとおりであるため、 の推定量は不偏です。
E [ ∇ fik ( xk ) ∣ xk ] = 1 n ∑ i = 1 n ∇ fi ( xk ) = ∇ f ( xk ) ( 6 ) E[nabla f_{i_k}(x_k) | x_k] = frac{1}{n} sum_{i=1}^{n} ナブラ f_i(x_k) = ナブラ f(x_k) 四重極 (6)[(バツ)バツ]=1=1(バツ)=(バツ)(6)

SGD (確率的勾配降下法) 法は各反復での機能を保証するものではありませんが、 ff の値は減少しますが、平均して、下方向を表す負の完全な勾配に向かって移動します。

ただし、不偏勾配推定器があるだけでは、SGD 反復の収束を保証するには十分ではありません。この点を説明するために、図 2 (左) は、LIBSVM [7] によって提供される 4 つのカテゴリのデータセットに一定のステップ サイズを使用してロジスティック回帰関数を適用したときの SGD の反復軌跡を示しています。図中の同心円状の楕円は関数の輪郭、つまり関数値を表しています。 f ( x ) = cf( x ) = c である。(バツ)=c 対応点 xxバツ 集める、 ccc は実数のセット内の特定の定数です。異なる定数値 ccc さまざまな楕円に対応します。

SGD の反復軌跡は最適解 (図の緑色のアスタリスクで示されている) には収束せず、最適解の周囲に点群を形成します。対照的に、図 2 に、後で紹介する同じ一定のステップ サイズを使用した、分散低減 (VR) 手法である確率的平均勾配 (SAG) の反復軌跡を示します。 この例で SGD が収束しない理由は、確率的勾配自体が 0 に収束しないためであり、したがって、一定ステップ SGD 法 (5) が停止することはありません。これは、自然に停止する勾配降下法 (GD) 法とは大きく対照的です。 xk x_kバツ アプローチ x ∗ x^*バツ、勾配 ∇ f ( xk ) は f(x_k) に等しくなります。(バツ) ゼロになる傾向があります。
ここに画像の説明を挿入します
図 2. 固定ステップ SGD (左) および SAG (右) 反復法を使用した 2 次元ロジスティック回帰のレベル セット プロット。緑色のアスタリスクは x を示しますほどく。

1.3. 古典的な分散削減法

による処理 ∇ fi ( xk ) は f_i(x_k) に等しい(バツ) 値の分散によって引き起こされる非収束問題に対する古典的な手法がいくつかあります。たとえば、Robbins と Monro [64] は一連の減少ステップを使用します。 γk ガンマkγ 分散問題を解決し、製品が γ k ∇ fik ( xk ) gamma_k は f_{i_k}(x_k) と等しい。γ(バツ) ゼロに収束する可能性があります。ただし、アルゴリズムの停止が早すぎたり遅すぎたりしないように、この一連の減少ステップを調整するのは難しい問題です。

分散を減らすためのもう 1 つの古典的な手法は、複数の変数を使用することです。 ∇ fi ( xk ) は f_i(x_k) に等しい(バツ) 平均して完全な勾配を取得する ∇ f ( x ) ナブラ f(x)(バツ) より正確な見積もり。このアプローチはミニバッチと呼ばれ、複数の勾配を並行して評価できる場合に特に便利です。これにより、次の形式の反復が行われます。
xk + 1 = xk − γ 1 ∣ B k ∣ ∑ i ∈ B k ∇ fi ( xk ) ( 7 ) x_{k+1} = x_k - gamma frac{1}{|B_k|} sum_{i in B_k} nabla f_i(x_k) quad (7)バツ+1=バツγB1B(バツ)(7)
BkB_kB はランダムなインデックスセットであり、 ∣ B k ∣ |B_k|B 急行 BkB_kB サイズ。もし BkB_kB 置換を伴う均一なサンプリングの場合、この勾配推定値の分散は「バッチ サイズ」に関連します。 ∣ B k ∣ |B_k|B は反比例するため、バッチサイズを増やすことで分散を小さくできます。

ただし、このような反復のコストはバッチ サイズに比例するため、この形式の分散削減には計算コストの増加が伴います。

分散を削減し、SGD の経験的パフォーマンスを向上させるためのもう 1 つの一般的な戦略は、過去のステップで使用された方向に基づく追加の用語である「モメンタム」を追加することです。特に勢いのあるSGDの形は以下の通りです。
xk + 1 = xk − γ mk ( 9 ) x_{k+1} = x_k - ガンマ m_k 四重極 (9)バツ+1=バツγメートル(9)
ここで、運動量パラメータは βベータβ (0, 1) の範囲内にあります。最初の勢いなら m0 = 0 m_0 = 0メートル0=0、(8) で展開します。 えむえむメートル 更新情報については、 えむえむメートル は前の勾配の加重平均です。
mk = ∑ t = 0 k β k − t ∇ fit ( xt ) ( 10 ) m_k = sum_{t=0}^{k} beta^{kt} nabla f_{i_t}(x_t) quad (10)メートル=t=0βtt(バツt)(10)
したがって、 えむえむメートル 確率的勾配の加重和です。なぜなら ∑ t = 0 k β k − t = 1 − β k + 1 1 − β sum_{t=0}^{k} beta^{kt} = frac{1 - beta^{k+1}}{1 - beta}t=0βt=1β1β+1、変換できます 1 − β 1 − β kmk frac{1 - ベータ}{1 - ベータ^k} m_k1β1βメートル 確率的勾配の加重平均として考慮されます。これを完全な勾配の式と比較すると、 ∇ f ( xk ) = 1 n ∑ i = 1 n ∇ fi ( xk ) ナブラ f(x_k) = frac{1}{n} sum_{i=1}^{n} ナブラ f_i(x_k)(バツ)=1=1(バツ) 比較するには、 1 − β 1 − β kmk frac{1 - ベータ}{1 - ベータ^k} m_k1β1βメートル(同様に えむえむメートル ) は完全な勾配の推定値として解釈されます。この加重合計により分散は減少しますが、重要な問題も生じます。加重合計 (10) は最近サンプリングされた勾配により多くの重みを与えるため、完全な勾配には収束しません。 ∇ f ( xk ) は f(x_k) に等しくなります。(バツ) 、後者は単純な平均です。セクション II-A で説明する最初の分散削減方法は、加重平均の代わりに単純な平均を使用することでこの問題を解決します。

1.4. 最新の分散削減方法

古典的な方法とは異なり、1 つまたは複数の方法を直接使用します。 ∇ fi ( xk ) は f_i(x_k) に等しい(バツ) として ∇ f ( xk ) は f(x_k) に等しくなります。(バツ) 近似として、最新の分散削減 (VR) 手法では異なる戦略が採用されています。これらのメソッドでは、 ∇ fi ( xk ) は f_i(x_k) に等しい(バツ) 勾配推定値を更新するには グクグクを作るのが目標です。 グクグク アプローチ ∇ f ( xk ) は f(x_k) に等しくなります。(バツ) 。具体的には、 グクグク 満足できる gk ≈ ∇ f ( xk ) g_k は f(x_k) に近似する(バツ) 。このような勾配推定に基づいて、次の形式の近似勾配ステップを実行します。
xk + 1 = xk − γ gk ( 11 ) x_{k+1} = x_k - ガンマ g_k 四重項 (11)バツ+1=バツγ(11)
ここ γ > 0 ガンマ > 0γ>0 はステップ サイズ パラメータです。

一定のステップ サイズが使用されるようにするには γガンマγ 反復 (11) が収束できる場合、勾配推定値が次の値であることを確認する必要があります。 グクグク 分散はゼロになる傾向があります。数学的には、これは次のように表現できます。
E [ ∇ gk − ∇ f ( xk ) ∇ 2 ] → 0 として k → ∞ ( 12 ) Eleft[ | g_k - nabla f(x_k) |^2 right] rightarrow 0 quad text{as } k rightarrow infty quad (12)[(バツ)2]0として(12)
ここでの期待 EE までのアルゴリズムに基づいています。 えーっ すべての確率変数は反復計算されます。特性 (12) により、最適解に到達したときに VR メソッドを停止できることが保証されます。私たちはこのプロパティを VR アプローチの特徴的な機能とみなしているため、これを VR プロパティと呼びます。実際には分散はゼロになる傾向があるため、分散が「減少した」という表現は誤解を招く可能性があることに注意してください。特性 (12) は、理論 (適切な仮定の下) および実際 (図 1 に示すように) において VR 手法がより高速な収束を達成できるようにする重要な要素です。

1.5. 分散削減法の最初の例: SGD²

簡単な改善方法では、ステップ サイズを減らすことなく SGD 再帰式 (5) を収束させることができます。具体的な方法は、減算です。 ∇ fi ( x ∗ ) は f_i(x^*) に等しい(バツ)、このメソッドは次のように定義されます。
xk + 1 = xk − γ ( ∇ fik ( xk ) − ∇ fik ( x ∗ ) ) ( 13 ) x_{k+1} = x_k - ガンマ (ナブラ f_{i_k}(x_k) - ナブラ f_{i_k}(x^*)) 四重項 (13)バツ+1=バツγ((バツ)(バツ))(13)
この方法は SGD² と呼ばれます [22]。通常、すべてを確実に知ることはできませんが、 ∇ fi ( x ∗ ) は f_i(x^*) に等しい(バツ) , しかし、例として SGD² は、分散削減法の基本的な特性をよく示しています。さらに、多くの分散削減手法は SGD² 手法の近似形式とみなすことができます。これらの手法は既知の手法に依存しません。 ∇ fi ( x ∗ ) は f_i(x^*) に等しい(バツ)ですが、代わりに近似できる方法を使用します。 ∇ fi ( x ∗ ) は f_i(x^*) に等しい(バツ) 推定値。

SGD² は完全な勾配の不偏推定値を使用することに注意してください。なぜなら ∇ f ( x ∗ ) = 0 ナブラ f(x^*) = 0(バツ)=0、F:
E [ ∇ fik ( xk ) − ∇ fik ( x ∗ ) ] = ∇ f ( xk ) − ∇ f ( x ∗ ) = ∇ f ( xk ) E[nabla f_{i_k}(x_k) - nabla f_{i_k}(x^*)] = nabla f(x_k) - nabla f(x^*) = nabla f(x_k)[(バツ)(バツ)]=(バツ)(バツ)=(バツ)
さらに、SGD² が最適解に達すると、自然に停止します。 ii、持っている:
( ∇ fi ( x ) − ∇ fi ( x ∗ ) ) ∣ x = x ∗ = 0 (ナブラ f_i(x) - ナブラ f_i(x^*)) bigg|_{x=x^*} = 0((バツ)(バツ)) バツ=バツ=0

さらに観察すると、 xk x_kバツ 近く x ∗ x^*バツ(連続の場合 ∇ fi nabla f_i)、SGD² は次の理由により分散削減特性 (12) を満たします。
E [ ∇ f ( xk ) ∇ 2 ] = E [ ∇ fik ( xk ) − ∇ fik ( x ∗ ) − ∇ f ( xk ) ∇ 2 ] ≤ E [ ∇ fik ( xk ) − ∇ fik ( x ∗ ) ∇ 2 ] Eleft[ | g_k - nabla f(x_k) |^2 right] = \Eleft[ | nabla f_{i_k}(x_k) - nabla f_{i_k}(x^*) - nabla f(x_k) |^2 right] leq Eleft[ | nabla f_{i_k}(x_k) - nabla f_{i_k}(x^*) |^2 right][(バツ)2]=[∥∇(バツ)(バツ)(バツ)2][∥∇(バツ)(バツ)2]
ここで補題 2 を使用します。 X = ∇ fik ( xk ) − ∇ fik ( x ∗ ) X = ナブラ f_{i_k}(x_k) - ナブラ f_{i_k}(x^*)バツ=(バツ)(バツ)を利用し、 E [ ∇ fik ( xk ) − ∇ fik ( x ∗ ) ] = ∇ f ( xk ) E[nabla f_{i_k}(x_k) - nabla f_{i_k}(x^*)] = nabla f(x_k)[(バツ)(バツ)]=(バツ) 自然。このプロパティは、SGD² が従来の SGD 手法よりも収束速度が速いことを示しています。これについては付録 B で説明します。

1.6. 分散の高速収束法

このセクションでは、分散削減 (VR) 法の分析に使用される 2 つの標準的な仮定を紹介し、これらの仮定の下で達成できる加速効果について、従来の SGD 法と比較して説明します。まず、勾配にはリプシッツ連続性があると仮定します。これは、勾配の変化率が有限であることを意味します。

仮定 1 (リプシッツ連続性)

関数は次のように仮定します。 ff微分可能であり、 LL- スムーズに、すべての人に xxバツ そして ええええ そして誰か 0 &lt; L &lt; ∞ 0 &lt; L &lt; 無限大0<<,以下の条件があります。
∇ f ( x ) − ∇ f ( y ) ∇ ≤ L ∇ x − y ∇ ( 14 ) |ナブラ f(x) - ナブラ f(y)| leq L|x - y| quad (14)∥∇(バツ)(ええ)バツええ(14)
これは、すべての fi : R d → R fi: mathbb{R}^d 右矢印 mathbb{R}:RdR 微分可能です、 リー・リー- スムーズ、私たちは定義します L 最大 L_{テキスト{最大}}最大 のために 最大⁡ {L 1 、 . 。 。 , L n } max{L_1, . 。 。 、L_n}最大{1,...,}

これは一般に弱い仮定であると考えられていますが、後続の章では、滑らかでない問題に適した VR 手法について説明します。 2 回微分可能な一変量関数の場合、 LL-滑らかさは次のように直感的に理解できます: 二次導関数が次のように仮定されることと等価です。 LL 上限、つまり ∣ f ′ ′ ( x ) ∣ ≤ L |f''(x)| leq L′′(バツ) すべてのために x ∈ R dx は mathbb{R}^d で表されます。バツRd 。複数の変数の 2 回微分可能な関数の場合、ヘッセ行列を仮定するのと同じです。 ∇ 2 f ( x ) ナブラ^2 f(x)2(バツ) の特異値 LL 上限。

仮定2(凸性が強い)

私たちが考える 2 番目の仮説は、関数 (f) は次のとおりであるということです。 ミューμ- 凸が強い、つまり特定の場合に μ &gt; 0 ミュー &gt; 0μ>0、関数 x ↦ f ( x ) − μ 2 ∈ x ∈ 2 x は f(x) - frac{mu}{2}|x|^2 にマップされます。バツ(バツ)2μバツ2 凸ですよ。さらに、それぞれについて、 i = 1 、 . 。 。 , ni = 1, . 。 。 、n=1,..., fi : R d → R fi: mathbb{R}^d 右矢印 mathbb{R}:RdR 凸ですよ。

これは強い仮定です。最小二乗問題では、各 (fi$ は凸ですが、全体の関数 (f) は計画行列内にのみ存在します) A : = [ a 1 , . . . , an ] A := [a_1, . . . , a_n]:=[1つの1,...,1つの] 列ランクが完璧な場合のみ強凸です。 L2 正則化ロジスティック回帰問題は、正則化項の存在によりこの仮定を満たします。 μ ≥ λ ミュー geq ラムダμλ

これらの前提を満たす重要な問題のクラスは、次の形式の最適化問題です。
x ∗ ∈ arg ⁡ min ⁡ x ∈ R df ( x ) = 1 n ∑ i = 1 n ℓ i ( ai T x ) + λ 2 ∑ x ∈ 2 ( 15 ) x^* in argmin_{x in mathbb{R}^d} f(x) = frac{1}{n} sum_{i=1}^{n} ell_i(a_i^Tx) + frac{lambda}{2}|x|^2 quad (15)バツarバツRd(バツ)=1=1(1つのTバツ)+2λバツ2(15)
それぞれの「損失」が関数になるところ ℓ i : R → R ell_i: mathbb{R} 右矢印 mathbb{R}:RR は 2 回微分可能であり、その 2 階導関数は ℓ i ′ ′ ell_i''′′ 0 と何らかの上限に制限されます んん 間。これには、最小二乗法、ロジスティック回帰、プロビット回帰、フーバーロバスト回帰など、機械学習における L2 正則化を使用したさまざまな損失関数が含まれます。この場合、全員にとって、 ii、我々は持っています L i ≤ M ∈ ai ∈ 2 + λ L_i leq M|a_i|^2 + ラムダ1つの2+λ そして μ ≥ λ ミュー geq ラムダμλ

これらの仮定の下で、勾配降下法 (GD) 法の収束率は条件数によって決まります。 κ : = L / μ カッパ := L/μκ:=/μ 決める。条件番号は常に 1 以上であり、条件番号が 1 より大幅に大きい場合、関数の輪郭が非常に楕円になり、GD メソッドの反復が振動する原因になります。逆に、こんなときは κ カッパκ 1 に近い場合、GD 法の収束が速くなります。

仮定 1 および 2 の下では、VR 法は線形速度で収束します。ランダムメソッド ({f(x_k)}) の関数値は次のように与えられると言います。 0 &lt; ρ ≤ 1 0 &lt; rho leq 10<ρ1 定数が存在する場合の線形収束率 (予想内) 0 0 0>0 作るもの:
E [ f ( xk ) ] − f ( x ∗ ) ≤ ( 1 − ρ ) k C = O ( exp ⁡ ( − k ρ ) ) ∀ k ( 16 ) E[f(x_k)] - f(x^*) leq (1 - rho)^k C = O(exp(-krho)) quad 全ての k quad (16)[(バツ)](バツ)(1ρ)=(経験(ρ))(16)
これは、各反復での勾配の不偏推定値のみに依存する古典的な SGD 手法とは対照的であり、次の仮定の下で準線形レートのみを取得します。
E [ f ( xk ) ] − f ( x ∗ ) ≤ O ( 1 / k ) E[f(x_k)] - f(x^*) leq O(1/k)[(バツ)](バツ)(1/)
この不等式を満たす最小値 えーっ これは、アルゴリズムの反復複雑度と呼ばれます。以下は、GD、SGD、および VR メソッドの基本的なバリアントの反復の複雑さと 1 回の反復のコストです。

アルゴリズム反復回数反復のコスト
グッドデイ O ( κ log ⁡ ( 1 / ϵ ) ) O(カッパ log(1/イプシロン))(κ見よ(1/ϵ)) O(n) は、()
シンガポールドル O ( κ 最大 最大 ⁡ ( 1 / ϵ ) ) O(kappa_{text{max}} 最大(1/イプシロン))(κ最大最大(1/ϵ)) オー(1)オー(1)(1)
バーチャルリアリティ O ( ( κ 最大 + n ) log ⁡ ( 1 / ϵ ) ) O((kappa_{text{max}} + n) log(1/epsilon))((κ最大+)見よ(1/ϵ)) オー(1)オー(1)(1)

アルゴリズムの合計実行時間は、反復の複雑さと反復の実行時間の積によって決まります。ここで使われている κ 最大 : = 最大 ⁡ i L i / μ kappa_{text{max}} := max_i L_i/muκ最大:=最大/μ 。知らせ κ max ≥ κ kappa_{text{max}} geq kappaκ最大κ; したがって、GD の反復の複雑さは VR 法の反復の複雑さよりも小さくなります。

ただし、GD の反復あたりのコストは VR 法のコストであるため、 んん 合計実行時間の点では VR 方式の方が優れています。

古典的な SGD 手法の利点は、実行時間と収束率が依存しないことです。 んん、しかし許容範囲はあります ϵ イプシロンϵ の依存性はさらに悪化しており、これが許容値が小さい場合の SGD のパフォーマンスの低下を説明しています。

付録 B では、SGD² メソッドの反復複雑さが VR メソッドと同じであることを示す簡単な証明を提供します。

2. 基本的な分散削減方法

分散低減 (VR) 手法の開発はいくつかの段階を経て、最初のバッチの手法では収束率が大幅に向上しました。この一連の手法の始まりは SAG アルゴリズムです。その後、確率的双対座標上昇 (SDCA) アルゴリズム、MISO アルゴリズム、確率的分散減少勾配 (SVRG/S2GD) アルゴリズム、SAGA (「改良された」SAG の意味) アルゴリズムが次々と登場しました。

この章では、これらの先駆的な VR 手法について詳しく説明します。第 4 章では、特定のアプリケーション シナリオでこれらの基本的な方法と比較して優れた特性を示すいくつかの新しい方法を検討します。

2.1. 確率的平均勾配法 (SAG)

最初の分散低減 (VR) 法の探索は、完全な勾配構造の模倣から始まります。完全な勾配なので ∇ f ( x ) ナブラ f(x)(バツ) すべてであります ∇ fi ( x ) は f_i(x) となる(バツ) 勾配の単純な平均、その後の完全な勾配の推定値 グクグク これは、これらの勾配推定値の平均でもあります。このアイデアから、最初の VR 手法である確率的平均勾配 (SAG) 手法が生まれました。

SAG 法 [37]、[65] は、初期増分集約勾配 (IAG) 法 [4] のランダム化バージョンです。 SAG の中心的な考え方は、各データ ポイントに対して ii 見積もりを維持する vik ≈ ∇ fi ( xk ) v_{ik} は f_i(x_k) に近似するいいね(バツ) 。次に、これらを使用します ヴィック v_{ik}いいね 値の平均は、完全な勾配の推定値として使用されます。つまり、次のようになります。
g ˉ k = 1 n ∑ j = 1 nvjk ≈ 1 n ∑ j = 1 n ∇ fj ( xk ) = ∇ f ( xk ) ( 18 ) bar{g}_k = frac{1}{n} sum_{j=1}^{n} v_{jk} approx frac{1}{n} sum_{j=1}^{n} nabla f_j(x_k) = nabla f(x_k) quad (18)ˉ=1じゅう=1冗談1じゅう=1じゅう(バツ)=(バツ)(18)

SAG の各反復で、セットから { 1 , … , n } {1, ldots, n}{1,,} からインデックスを抽出します いいね、次のルールに従って更新されます vjk v_{jk}冗談
vjkk + 1 = { ∇ fik ( xk ) 、 j = ikvjkk 、 j ≠ ik の場合 ( 19 ) v_{jk}^{k+1} ={(バツ),もしじゅう=じゅう,もしじゅう クワッド (19)冗談+1={(バツ),冗談,もしじゅう=もしじゅう=(19)
その中でもそれぞれ、 v 0 i v_{0i}0 ゼロまたは ∇ fi ( x 0 ) は f_i(x_0) に等しくなります。(バツ0) おおよその値。解決策を使って x ∗ x^*バツ それぞれの近似値 ヴィック v_{ik}いいね 徐々に~に収束していきます ∇ fi ( x ∗ ) は f_i(x^*) に等しい(バツ)、それによりVR特性(12)を満たす。

SAG を効率的に実装するには、計算に注意を払う必要があります。 g ˉ k バー{g}_kˉ 毎回合計を最初から始めるのを避けるため んん ベクトル、これは んん 大きいと値段も高くなります。幸いなことに、各反復には 1 つしかないため、 ヴィック v_{ik}いいね 条件は変更されるため、毎回合計額を再計算する必要はありません。具体的には、反復中に次のように仮定します。 えーっ から抽出されたインデックス いいね、すると次のようになります。
g ˉ k = 1 n ∑ j = 1 j ≠ iknvjk + 1 nvikk = g ˉ k − 1 − 1 nvikk − 1 + 1 nvikk ( 20 ) bar{g}_k = frac{1}{n} sum_{substack{j=1 \ j neq i_k}}^{n} v_{jk} + frac{1}{n} v_{i_k}^k = bar{g}_{k-1} - frac{1}{n} v_{i_k}^{k-1} + frac{1}{n} v_{i_k}^k quad (20)ˉ=1じゅう=1じゅう=冗談+1=ˉ111+1(20)

それに加えて ヴィク v_{i_k} 以外のすべて vjk v_{jk}冗談 値はすべて同じままで、それぞれを保存するだけです じゅうじゅう に対応するベクトル vj v_jじゅう 。アルゴリズム 1 は、SAG メソッドの具体的な実装を示しています。

SAG は線形収束を達成する最初の確率的手法であり、その反復複雑さは次のとおりです。 O ( ( κ 最大 + n ) log ⁡ ( 1 / ϵ ) ) O((kappa_{text{max}} + n) log(1/epsilon))((κ最大+)見よ(1/ϵ))、ステップ サイズを使用して γ = O ( 1 / L 最大 ) ガンマ = O(1/L_{text{max}})γ=(1/最大) 。この線形収束は図 1 で観察できます。注目に値するのは、 L 最大 L_{テキスト{最大}}最大-あらゆる用途に対応したスムーズな機能 L ′ ≥ L 最大 L' が L_{text{max}} である最大 あまりにも L ′ L'- スムーズな SAG メソッドは、実際には調整が難しい一連のステップ サイズの減少でのみ線形未満の収束速度を達成する古典的な SGD メソッドとは対照的に、十分に小さいステップ サイズで線形収束速度を達成します。

当時、SAG の線形収束は、各反復で確率的勾配を 1 つだけ計算する (単一のデータ ポイントを処理する) だけであったため、大きな進歩でした。ただし、Schmidt et al. [65] によって提供された収束証明は非常に複雑で、コンピューターで検証された手順に依存しています。 SAG の分析が難しい主な理由は次のとおりです。 グクグク は勾配の偏った推定値です。

次に、共変量の概念を利用して、同様のパフォーマンスを持ちながら分析が容易な SAG 法の偏りのないバリアントを作成する SAG のバリアントである SAGA メソッドを紹介します。


アルゴリズム 1: SAG 法

  1. パラメータ: ステップサイズ γ &gt; 0 ガンマ &gt; 0γ>0
  2. 初期化: x 0 x_0バツ0 vi = 0 ∈ R d mathbb{R}^dではv_i = 0=0Rd のために i = 1、…、ni = 1、ldots、n=1,,
  3. k = 1 , … , T − 1 k = 1, ldots, T - 1=1,,T1 埋め込む:
    a. ランダムな選択 ik ∈ { 1 , … , n } i_k は {1, ldots, n} に含まれる{1,,}
    b. 計算する g ˉ k = g ˉ k − 1 − 1 nvikk − 1 bar{g}_k = bar{g}_{k-1} - frac{1}{n} v_{i_k}^{k-1}ˉ=ˉ111
    c. アップデート vikk = ∇ fik ( xk ) v_{i_k}^k = ナブラ f_{i_k}(x_k)=(バツ)
    d. 勾配推定値を更新する g ˉ k = g ˉ k + 1 nvikk bar{g}_k = bar{g}_k + frac{1}{n} v_{i_k}^kˉ=ˉ+1
    e. アップデート xk + 1 = xk − γ g ˉ k x_{k+1} = x_k - ガンマ bar{g}_kバツ+1=バツγˉ
  4. 出力: xTx_TバツT

2.2.SAGA法

減少した基本的な不偏勾配推定値 ∇ fik ( xk ) は f_{i_k}(x_k) となる。(バツ) 分散アプローチは、いわゆる共変量、または制御変数を使用します。のために i = 1、…、ni = 1、ldots、n=1,,、設定 vi ∈ R d v_i は mathbb{R}^d で表されます。Rd ベクトルです。これらのベクトルを使用して、完全な勾配を変換できます。 ∇ f ( x ) ナブラ f(x)(バツ) 次のように書き換えられます。
∇ f ( x ) = 1 n ∑ i = 1 n ( ∇ fi ( x ) − vi + vi ) = 1 n ∑ i = 1 n ∇ fi ( x ) − vi + 1 n ∑ j = 1 nvj ナブラ f(x) = frac{1}{n} sum_{i=1}^{n}(ナブラ f_i(x) - v_i + v_i) = frac{1}{n} sum_{i=1}^{n} ナブラ f_i(x) - v_i + frac{1}{n} sum_{j=1}^{n} v_j(バツ)=1=1((バツ)+)=1=1(バツ)+1じゅう=1じゅう
: = 1 n ∑ i = 1 n ∇ fi ( x , v ) ( 21 ) := frac{1}{n} sum_{i=1}^{n} nabla f_i(x, v) quad (21):=1=1(バツ,)(21)
定義するもの ∇ fi ( x , v ) : = ∇ fi ( x ) − vi + 1 n ∑ j = 1 nvj nabla f_i(x, v) := nabla f_i(x) - v_i + frac{1}{n} sum_{j=1}^{n} v_j(バツ,):=(バツ)+1じゅう=1じゅう 。これで、ランダムにサンプリングできるようになりました。 ∇ fi ( x , v ) は f_i(x, v) となる。(バツ,) 完全なグラデーションを構築するには ∇ f ( x ) ナブラ f(x)(バツ) ~の不偏推定値 i ∈ { 1 , … , n } i は {1, ldots, n} の範囲内である{1,,}、SGD メソッドを適用し、勾配推定を使用できます。
gk = ∇ fik ( xk , v ) = ∇ fik ( xk ) − vik + 1 n ∑ j = 1 nvj ( 22 ) g_k = nabla f_{i_k}(x_k, v) = nabla f_{i_k}(x_k) - v_{i_k} + frac{1}{n} sum_{j=1}^{n} v_j quad (22)=(バツ,)=(バツ)+1じゅう=1じゅう(22)

観察用 ヴィ ヴィ 選択ペアの違い グクグク 影響を与えることができます gk = ∇ fik ( xk , v ) g_k = ナブラ f_{i_k}(x_k, v)=(バツ,) 代用して使用してください E i ∼ 1 n [ vi ] = 1 n ∑ j = 1 nvj E_i sim frac{1}{n}[v_i] = frac{1}{n} sum_{j=1}^{n} v_j1[]=1じゅう=1じゅう 期待値を計算すると、次のようになります。
E [ ∇ fi ( xk ) − vi + E i ∼ 1 n [ vi − ∇ fi ( xk ) ] ∇ 2 ] ≤ E [ ∇ fi ( xk ) − vi ∇ 2 ] ( 23 ) E left[ |nabla f_i(x_k) - v_i + E_i sim frac{1}{n}[v_i - nabla f_i(x_k)]|^2 right] leq E left[ |nabla f_i(x_k) - v_i|^2 right] quad (23)[∥∇(バツ)+1[(バツ)]2][∥∇(バツ)2](23)
ここでは補助定理 2 が使用されます。 X = ∇ fi ( xk ) − vi X = ナブラ f_i(x_k) - v_iバツ=(バツ) 。この境界 (23) は、次のことを示しています。 ヴィ ヴィ とともに えーっ 増加は近いです ∇ fi ( xk ) は f_i(x_k) に等しい(バツ) 、VR 属性 (12) を取得できます。だからこそ私たちはそう呼んでいます ヴィ ヴィ は共変量であり、分散を減らすためにそれらを選択できます。

たとえば、このアプローチは SGD² メソッド (13) によっても実装されます。 vi = ∇ fi ( x ∗ ) v_i = ナブラ f_i(x^*)=(バツ) 。ただし、これは実際にはよくわからないため、実際にはあまり使用されません。 ∇ fi ( x ∗ ) は f_i(x^*) に等しい(バツ) 。より現実的なオプションは、 ヴィ ヴィ みなさんご存じのとおり x ˉ i ∈ R d bar{x}_i は mathbb{R}^d に含まれるバツˉRd 近くの勾配 ∇ fi ( x ˉ i ) は f_i(bar{x}_i) に等しくなります。(バツˉ) 。 機能ごとのSAGA フィ フィ 基準点を使用する x ˉ i ∈ R d bar{x}_i は mathbb{R}^d に含まれるバツˉRd、共変量を使用します vi = ∇ fi ( x ˉ i ) v_i = ナブラ f_i(bar{x}_i)=(バツˉ)、それぞれ x ˉ i バー{x}_iバツˉ 私たちの最後の評価になります フィ フィ ポイント。これらの共変量を使用すると、(22) に従って勾配推定値を構築でき、次のようになります。
gk = ∇ fik ( xk ) − ∇ fik ( xˉ ik ) + 1 n ∑ j = 1 n ∇ fj ( xˉ j ) ( 24 ) g_k = nabla f_{i_k}(x_k) - nabla f_{i_k}(bar{x}_{i_k}) + frac{1}{n} sum_{j=1}^{n} nabla f_j(bar{x}_j) quad (24)=(バツ)(バツˉ)+1じゅう=1じゅう(バツˉじゅう)(24)

SAGA を実装するには、勾配を保存できます。 ∇ fi ( x ˉ i ) は f_i(bar{x}_i) に等しくなります。(バツˉ) の代わりに んん 基準点 x ˉ i バー{x}_iバツˉ 。つまり、次のように仮定します vj = ∇ fj ( x ˉ j ) v_j = ナブラ f_j(bar{x}_j)じゅう=じゅう(バツˉじゅう) のために j ∈ { 1 , … , n } j は {1, ldots, n} に属するじゅう{1,,}、各反復で、SAG のような確率的勾配を更新します。 vj v_jじゅう

アルゴリズム 2 サーガ

  1. パラメータ: ステップサイズ γ &gt; 0 ガンマ &gt; 0γ>0
  2. 初期化: x 0 x_0バツ0 vi = 0 ∈ R d mathbb{R}^dではv_i = 0=0Rd のために i = 1、…、ni = 1、ldots、n=1,,
  3. 行為 k = 1 , … , T − 1 k = 1, ldots, T - 1=1,,T1 反復:
    a. ランダムな選択 ik ∈ { 1 , … , n } i_k は {1, ldots, n} に含まれる{1,,}
    b. 古い値を保存する v 古い = vik v_{text{古い}} = v_{i_k}古い=
    c. アップデート vik = ∇ fik ( xk ) v_{i_k} = ナブラ f_{i_k}(x_k)=(バツ)
    d. アップデート xk + 1 = xk − γ ( vik − v old + g ˉ k ) x_{k+1} = x_k - gamma (v_{i_k} - v_{text{old}} + bar{g}_k)バツ+1=バツγ(古い+ˉ)
    e. 勾配推定値を更新する gˉk = gˉk−1+1n(vik−vold)bar{g}_k = bar{g}_{k-1}+frac{1}{n}(v_{i_k} - v_{text{old}}) である。ˉ=ˉ1+1(古い)
  4. 出力: xTx_TバツT

SAGA メソッドの反復複雑さは SAG と同じです O ( ( κ 最大 + n ) log ⁡ ( 1 / ϵ ) ) O((kappa_{text{max}} + n) log(1/epsilon))((κ最大+)見よ(1/ϵ))、ステップ サイズを使用して γ = O ( 1 / L 最大 ) ガンマ = O(1/L_{text{max}})γ=(1/最大) 、しかし証明はもっと簡単です。ただし、SAG と同様に、SAGA メソッドにはストレージが必要です んん 補助ベクトル vi ∈ R d v_i は mathbb{R}^d で表されます。Rd のために i = 1、…、ni = 1、ldots、n=1,,、つまり必要性を意味します O ( nd ) O(nd)(d) 収納スペースの。いつ ddd そして んん 両方が大きい場合、これは実現できない可能性があります。次のセクションでは、正則化線形モデルなどの一般的なモデルでこのメモリ要件を削減する方法について詳しく説明します。

できるとき んん 2 つの補助ベクトルがメモリに格納されている場合、SAG と SAGA は同様に動作する傾向があります。このメモリ要件が高すぎる場合は、次のセクションで説明する SVRG 方式が良い代替手段となります。 SVRG 手法は同じ収束率を達成し、多くの場合、実際にはほぼ同じ速度ですが、必要なのは O ( d ) O(d)(d) 一般的な問題については、メモリの不足。

2.3.SVRG法

SAGA メソッドが出現する前、初期の研究の一部では、SAG メソッドに必要な高メモリ問題を解決するために初めて共変量が導入されました。これらの研究は固定された基準点に基づいて行われます x ˉ ∈ R d bar{x} は mathbb{R}^d に含まれるバツˉRd 共変量、その時点での完全な勾配を計算しました ∇ f ( x ˉ ) ナブラ f(bar{x})(バツˉ) 。基準点を保存することにより x ˉ バー{x}バツˉ および対応する完全な勾配 ∇ f ( x ˉ ) ナブラ f(bar{x})(バツˉ)、それぞれを保存せずにこれを行うことができます ∇ fj ( x ˉ ) は f_j(bar{x}) に等しくなります。じゅう(バツˉ) 場合に備えて、使用してください x ˉ j = x ˉ バー{x}_j = バー{x}バツˉじゅう=バツˉ みんなに じゅうじゅう update(24)を実装します。具体的には、これらのベクトルを保存する代わりに、各反復で保存された参照点を利用します。 x ˉ バー{x}バツˉ 計算する ∇ fik ( x ˉ ) は f_{i_k}(bar{x}) に反比例する。(バツˉ) 。この手法は当初、異なる著者によって異なる名前で提案されましたが、後に [28] および [84] の命名法に従って SVRG 手法として統一されました。

アルゴリズム 3 で SVRG メソッドを形式化します。

(23) を使用して、勾配推定値を導き出すことができます。 グクグク の分散には限界があります。
E [ ∇ f ( xk ) ∇ 2 ] ≤ E [ ∇ fi ( xk ) − ∇ fi ( xˉ ) ∇ 2 ] ≤ L max 2 ∇ xk − xˉ ∇ 2 Eleft[ | g_k - nabla f(x_k) |^2 right] leq Eleft[ | nabla f_i(x_k) - nabla f_i(bar{x}) |^2 right] leq L_{text{max}}^2 | x_k - bar{x} |^2[(バツ)2][∥∇(バツ)(バツˉ)2]最大2バツバツˉ2
ここで、2 番目の不等式はそれぞれを使用します。 フィ フィ リー・リー-滑らかさ。

注目すべき基準点は、 x ˉ バー{x}バツˉ 現在地に近づくほど xk x_kバツ、勾配推定の分散が小さくなります。

SVRG 手法を効果的にするには、参照点を頻繁に更新する必要があります。 x ˉ バー{x}バツˉ (したがって、完全な勾配の計算が必要になります) は、分散の減少による利点と比較検討されます。このため、私たち一人ひとりが、 ttt 反復ごとに基準点を更新して、基準点を次の値に近づけます。 xk x_kバツ (アルゴリズム II-C の 11 行目を参照)。つまり、SVRG メソッドには 2 つのループが含まれています。 sss、参照勾配が計算されます。 ∇ f ( x ˉ s − 1 ) ナブラ f(bar{x}_{s-1})(バツˉs1)(行 4)、および参照点が固定され、内部反復が確率的勾配ステップに基づいて更新される内部ループ (22) xk x_kバツ(10行目)。

SAG や SAGA とは異なり、SVRG に必要なのは O ( d ) O(d)(d) 記憶の。 SVRG の欠点は次のとおりです。 1) 追加のパラメーターがあります。 ttt、つまり、内側のループの長さを調整する必要があります。 2) 反復ごとに 2 つの勾配を計算する必要があり、基準点が変更されるたびに完全な勾配を計算する必要があります。

Johnson と Zhang [28] は、SVRG には反復的な複雑性があることを示しました。 O ( ( κ 最大 + n ) log ⁡ ( 1 / ϵ ) ) O((kappa_{text{max}} + n) log(1/epsilon))((κ最大+)見よ(1/ϵ)) 、SAG と SAGA に似ています。これは仮説内のループの数です。 ttt コレクションから { 1 , … , m } {1, ldots, m}{1,,メートル} 均一サンプリングの条件で得られます。 L 最大 L_{テキスト{最大}}最大 ミューμ、 刻み幅 γガンマγ そして ttt それらの間で特定の依存関係を満たす必要があります。実際に使用すると、 γ = O ( 1 / L 最大 ) ガンマ = O(1/L_{text{max}})γ=(1/最大) と内側のループの長さ t = nt = nt=, SVRG はパフォーマンスが良い傾向にあり、これはまさに図 1 で使用した設定です。

現在、元の SVRG メソッドには多くのバリエーションがあります。たとえば、いくつかのバリエーションでは、 ttt 代替ディストリビューション [32]、いくつかのバリアントでは次の形式が可能です O ( 1 / L 最大 ) O(1/L_{text{max}})(1/最大) ステップサイズ[27]、[33]、[35]。を使用したいくつかのバリエーションもあります ∇ f ( x ˉ ) ナブラ f(bar{x})(バツˉ) ミニバッチ近似を使用して、これらの完全な勾配評価のコストを削減し、ミニバッチ サイズを増やして VR プロパティを維持します。[54] に従って、内側のループで更新が繰り返されるバリアントもいくつかあります。 グクグク
[ g_k = ナブラ f_{i_k}(x_k) - ナブラ f_{i_k}(x_{k-1}) + g_{k-1} 四辺形 (25) ]
これにより、より局所的な近似が得られます。セクション IV で簡単に説明するように、この連続更新バリアント (25) を使用すると、非凸関数を最小限に抑える上で独自の利点が得られます。最後に、SVRG は次のことを利用できることに注意してください。 ∇ f ( x ˉ s ) ナブラ f(bar{x}_s)(バツˉs) アルゴリズムをいつ終了するかを決定するのに役立つ値。

アルゴリズム3 SVRG法

  1. パラメータ: ステップサイズ γ &gt; 0 ガンマ &gt; 0γ>0
  2. 基準点の初期化 xˉ 0 = x 0 ∈ R d bar{x}_0 = x_0 (mathbb{R}^d)バツˉ0=バツ0Rd
  3. 外部循環を行う s = 1 , 2 , … s = 1, 2, ldotss=1,2,
    a. 計算して保存する ∇ f ( x ˉ s − 1 ) ナブラ f(bar{x}_{s-1})(バツˉs1)
    b. 仮定する x 0 = x ˉ s − 1 x_0 = bar{x}_{s-1}バツ0=バツˉs1
    c. 内側のループの反復数を選択します。 ttt
    d. 内部循環を行う k = 0 , 1 , … , t − 1 k = 0, 1, ldots, t - 1=0,1,,t1
    i. ランダムな選択 ik ∈ { 1 , … , n } i_k は {1, ldots, n} に含まれる{1,,}
    ii. 計算 gk = ∇ fik ( xk ) − ∇ fik ( xˉ s − 1 ) + ∇ f ( xˉ s − 1 ) g_k = ナブラ f_{i_k}(x_k) - ナブラ f_{i_k}(bar{x}_{s-1}) + ナブラ f(bar{x}_{s-1})=(バツ)(バツˉs1)+(バツˉs1)
    iii. アップデート xk + 1 = xk − γ gk x_{k+1} = x_k - ガンマ g_kバツ+1=バツγ
    e. 基準点を更新する x ˉ s = xt バー{x}_s = x_tバツˉs=バツt

2.4. SDCA とそのバリアント

SAG 手法と SVRG 手法の欠点の 1 つは、それらのステップ サイズが、問題によっては未知の可能性がある未知の値に依存していることです。 L 最大 L_{テキスト{最大}}最大 。 SVRG が登場する前、初期の VR 手法の 1 つである SDCA 手法 [70] は、座標降下法の研究を有限和問題に拡張しました。 SDCA とその変形の背後にある考え方は、勾配の座標が自然な分散を​​低減する勾配推定値を提供するというものです。具体的に考えてみると、 j ∈ { 1 , … , d } j は {1, ldots, d} の範囲内にあるじゅう{1,,d}、定義します ∇ jf ( x ) : = ( ∂ f ( x ) ∂ xj ) ej nabla_j f(x) := left( frac{partial f(x)}{partial x_j} right) e_jじゅう(バツ):=(バツじゅう(バツ))eじゅう (f(x)) の 3 番目です じゅうじゅう 座標方向の導関数、ここで ej ∈ R d e_j は mathbb{R}^d で表されます。eじゅうRd それは最初です じゅうじゅう 単位ベクトル。座標導関数の重要な特性は次のとおりです。 ∇ jf ( x ∗ ) = 0 nabla_j f(x^*) = 0じゅう(バツ)=0、私たちは知っているので ∇ f ( x ∗ ) = 0 ナブラ f(x^*) = 0(バツ)=0 。各データポイントでのこれの導関数 ∇ fj ナブラ f_jじゅう 違います、後者は x ∗ x^*バツ ゼロではないかもしれない。したがって、次のようになります。
∇ f ( x ) − ∇ jf ( x ) ∇ 2 → 0 当 x → x ∗ ( 26 ) | nabla f(x) - nabla_j f(x) |^2 rightarrow 0 quad text{当} quad x rightarrow x^* quad (26)∥∇(バツ)じゅう(バツ)20いつバツバツ(26)
これは、座標導関数が分散低減特性 (12) を満たすことを意味します。さらに、次のこともできます。 ∇ jf ( x ) ナブラ_j f(x)じゅう(バツ) 構築する ∇ f ( x ) ナブラ f(x)(バツ) の不偏推定値。たとえば、次のように仮定します。 じゅうじゅう コレクションからです { 1 、 … 、 d } {1、 ldots、 d}{1,,d} で一様にランダムに選択されたインデックス。したがって、どのような場合でも、 i ∈ { 1 , … , d } i は {1, ldots, d} の範囲内である{1,,d}、我々は持っています P [ j = i ] = 1 d P[j = i] = frac{1}{d}[じゅう=]=d1 。したがって、 d × ∇ jf ( x ) d倍nabla_j f(x)d×じゅう(バツ) はい ∇ f ( x ) ナブラ f(x)(バツ) 以下の理由による不偏推定:
E [ d ∇ jf ( x ) ] = d ∑ i = 1 d P [ j = i ] ∂ f ( x ) ∂ xiei = ∑ i = 1 d ∂ f ( x ) ∂ xiei = ∇ f ( x ) Eleft[ d nabla_j f(x) right] = d sum_{i=1}^{d} P[j = i] frac{partial f(x)}{partial x_i} e_i = sum_{i=1}^{d} frac{partial f(x)}{partial x_i} e_i = nabla f(x)[dじゅう(バツ)]=d=1d[じゅう=]バツ(バツ)e==1dバツ(バツ)e=(バツ)

したがって、 ∇ jf ( x ) ナブラ_j f(x)じゅう(バツ) 共変量を使用する必要がなく、完全な勾配を推定する VR に期待される理想的な特性をすべて備えています。この座標勾配を使用する場合の 1 つの欠点は、和の問題 (2) の計算コストが高くつくことです。これは計算だからです ∇ jf ( x ) ナブラ_j f(x)じゅう(バツ) データセット全体を走査する必要があるため、 ∇ jf ( x ) = 1 n ∑ i = 1 n ∇ jfi ( x ) nabla_j f(x) = frac{1}{n} sum_{i=1}^{n} nabla_j f_i(x)じゅう(バツ)=1=1じゅう(バツ) 。したがって、座標導関数の使用は、和の問題の構造と互換性がないように見えます。ただし、多くの場合、元の問題 (2) をいわゆる双対定式化に書き直すことができ、座標導関数が固有の構造を利用できます。

たとえば、L2 正則化線形モデル (15) の双対公式は次のとおりです。
v ∗ ∈ arg ⁡ max ⁡ v ∈ R n 1 n ∑ i = 1 n − ℓ i ∗ ( − vi ) − λ 2 ∑ i = 1 nviai ∑ ( 27 ) v^* in argmax_{v in mathbb{R}^n} frac{1}{n} sum_{i=1}^{n} -ell_i^*(-v_i) - frac{lambda}{2} left| frac{1}{lambda} sum_{i=1}^{n} v_i a_i right|^2 quad (27)arR最大1=1()2λ λ1=11つの 2(27)
ℓ i ∗ ( v ) ell_i^*(v)() はい ℓ i ell_i 凸共役。マッピングを使用できます x = 1 λ ∑ i = 1 nviaix = frac{1}{lambda} sum_{i=1}^{n} v_i a_iバツ=λ1=11つの 元の問題を復元する (15) xxバツ 変数。解決します v∗v^* 上記のマッピングの右側に代入すると、(15) の解が得られます。 x ∗ x^*バツ

この二重問題には次の点があることに注意してください。 んん 実数変数 vi ∈ R v_i は mathbb{R} で表されます。R 、トレーニング サンプルごとに 1 つに対応します。さらに、それぞれの二重損失関数 ℓ i ∗ ell_i^* のみ ヴィ ヴィ 関数。つまり、損失関数の最初の項は座標的に分離可能です。この座標の分離可能性と第 2 項の単純な形式を組み合わせることで、座標上昇法を効率的に実装することができます。実際、Shalev-Shwartz と Zhang は、この問題の座標上昇には SAG、SAGA、SVRG と同様の反復的な複雑さがあることを示しました。 O ( ( κ 最大 + n ) log ⁡ ( 1 / ϵ ) ) O((kappa_{text{max}} + n) log(1/epsilon))((κ最大+)見よ(1/ϵ))

反復コストとアルゴリズム構造も非常に似ています: 追跡による合計 ∑ i = 1 nviai 合計_{i=1}^{n} v_i a_i=11つの (27) の第 2 項を処理するには、各二重座標上昇反復では 1 つのトレーニング サンプルのみを考慮する必要があり、各反復のコストは次と同じです。 んん 何もすることはありません。さらに、1D ライン検索を使用して、次のように最大化するステップ サイズを効率的に計算できます。 ヴィ ヴィ 機能の二重の目的。これは、たとえそうでなくても、 L 最大 L_{テキスト{最大}}最大 または、関連する量の知識があれば、VR メソッドの最悪の場合の実行時間を短縮することも可能です。

3. 分散削減の実際的な問題

基本的な分散削減 (VR) メソッドを実装し、適切なパフォーマンスを達成するには、いくつかの実装上の問題に対処する必要があります。このセクションでは、上記で説明されていないいくつかの問題について説明します。

3.1.SAG/SAGA/SVRG設定ステップサイズ

最適化アルゴリズムの分野、特に確率的平均勾配 (SAG)、確率的平均勾配アルゴリズム (SAGA)、確率的勾配 (SVRG) などの変動低減手法では、ステップ サイズの設定が重要な問題です。確率的双対座標上昇 (SDCA) 法の場合、二重目的を使用してステップ サイズを決定できますが、SAG、SAGA、および SVRG の元の変数法の理論的根拠は、ステップ サイズは次のとおりである必要があるということです。 γ = O ( 1 L 最大 ) ガンマ = O左(frac{1}{L_{text{max}}}右)γ=(最大1) 形状。しかし、実際のアプリケーションでは、わからないことがよくあります。 L 最大 L_{テキスト{最大}}最大 正確な値を使用し、他のステップ サイズを使用するとパフォーマンスが向上する可能性があります。

完全勾配降下法 (フル GD) 法でステップ サイズを設定するための古典的な戦略は、Armijo ライン探索です。与えられた現在点 xk x_kバツ そして検索方向 グクグク、アルミホライン検索で γk ガンマkγ は次のように定義されるライン上で実行されます。 γ k ∈ {γ:xk + γgk} gamma_k において {gamma:x_k + gammag_k}γ{γ:バツ+γ}、関数は十分に削減される必要があります。つまり、次のとおりです。
f ( xk + γ kgk ) &lt; f ( xk ) − c γ k ∇ f ( xk ) ∇ 2 f(x_k + gamma_k g_k) &lt; f(x_k) - c gamma_k |ナブラ f(x_k)|^2(バツ+γ)<(バツ)cγ∥∇(バツ)2
ただし、このアプローチには複数の候補ステップが必要です γk ガンマkγ 計算 f ( xk + γ kgk ) f(x_k + gamma_k g_k)(バツ+γ)、評価します 関数 f(x)(バツ) データセット全体を走査するとなると、法外なコストがかかります。

この問題を解決するには、ランダム変動法を使用して、次の条件を満たすものを見つけることができます。 γk ガンマkγ
fik ( xk + γ kgk ) &lt; fik ( xk ) − c γ k ∇ fik ( xk ) ∇ 2 f_{ik}(x_k + gamma_k g_k) &lt; f_{ik}(x_k) - c gamma_k | となり、f_{ik}(x_k)|^2 となる。いいね(バツ+γ)<いいね(バツ)cγ∥∇いいね(バツ)2
このアプローチは通常、特に次のような場合に実際にうまく機能します。 ∇ fik ( xk ) ∇ | ナブラ f_{ik}(x_k)|∥∇いいね(バツ) ゼロに近いわけではありませんが、現時点ではこのアプローチをサポートする理論はありません。

さらに、Mairal は実際にステップ サイズを設定するための「Bottou テクニック」を提案しました。このメソッドは、データ セットのごく一部 (例: 5%) を取得して二分探索を実行し、このサンプルの 1 回のパスで最適なステップ サイズを見つけようとします。 Armijo ライン検索と同様に、この方法も実際にはうまく機能することがよくありますが、やはり理論的基盤が不足しています。

上記の内容は、数式と変数を表すためにマークダウン形式を使用して、原文を再記述したものであることに注意してください。

ただし、SDCA 方式にはいくつかの欠点もあります。まず、凸共役を計算する必要があります。 ℓ i ∗ ell_i^* 単純なグラデーションではなく。凸共役に相当する自動微分関数がないため、実装の労力が増加する可能性があります。最近の研究では、共役を必要とせず、代わりに勾配を直接使用する「デュアルフリー」SDCA 方法が提案されています。ただし、これらの方法では、デュアル ターゲットを追跡してステップ サイズを設定することはできなくなります。第二に、SDCA が必要とするのは O ( n + d ) O(n + d)(+d) (15) の問題を解決するにはメモリが必要ですが、この問題カテゴリの場合、SAG/SAGA に必要なのは O ( n + d ) O(n + d)(+d) メモリの容量(セクション 3 を参照)。SAG/SAGA に関するより一般的な問題に適した SDCA のバリアント O ( nd ) O(nd)(d) 記憶があるから ヴィ ヴィ 持つようになる ddd 要素のベクトル。 SDCA の最後の微妙な欠点は、暗黙的に強い凸定数を仮定していることです。 ミューμ 等しい λ ラムダλ 。のために ミューμ 以上 λ ラムダλ 問題は、元の VR メソッドは通常、SDCA よりも大幅に優れたパフォーマンスを発揮します。

3.2. 終了条件の決定

アルゴリズム最適化の分野では、アルゴリズムが特定の精度を達成するために必要な最悪の場合の反復回数を予測するために、反復の複雑さの理論的結果に頼ることがよくあります。ただし、これらの理論的限界は、予測できないいくつかの定数に依存することが多く、実際のアプリケーションでは、アルゴリズムは多くの場合、より少ない反復で期待される精度を達成できます。したがって、アルゴリズムをいつ終了するかを決定するために、いくつかのテスト基準を設定する必要があります。

従来の完全勾配降下法 (フル GD) 法では、通常、勾配のノルムを使用します。 ∇ f ( xk ) ∇ | ナブラ f(x_k) |∥∇(バツ) または、反復をいつ停止するかを決定するために、これに関連する他の数量。SVRG メソッドの場合も同じ基準を採用できますが、次を使用します。 ∇ f ( x ˉ s ) ∇ | ナブラ f(bar{x}_s) |∥∇(バツˉs) 判断材料として。SAG/SAGA 法の場合、完全な勾配を明示的に計算するわけではありませんが、量 $ g_{bar{k}} $ は徐々に近似します。 ∇ f ( xk ) は f(x_k) に等しくなります。(バツ)したがって、使用します ∠gk ˉ ∠| g_{bar{k}} |ˉ 停止条件は合理的なヒューリスティックであるためです。

SDCA 法では、追加の記録作業を行うことで、漸近コストを追加することなく二重目的の勾配を追跡できます。さらに、より体系的なアプローチは、二重ギャップを追跡することですが、これにより、 O(n) は、() コストはかかりますが、デュアルギャッププルーフによる終端条件を提供できます。さらに、強く凸のターゲットの最適性条件に基づいて、MISO 方法は二次下限に基づく原則的な方法を採用しています [41]。

以下は、マークダウン形式で表現された数式と変数です。

  • 勾配ノルム: ∇ f ( xk ) ∇ | ナブラ f(x_k) |∥∇(バツ)
  • SVRG 法の勾配ノルム: ∇ f ( x ˉ s ) ∇ | ナブラ f(bar{x}_s) |∥∇(バツˉs)
  • SAG/SAGA法における近似勾配量: $ g_{bar{k}} $
  • 反復あたりのコストの増加: O(n) は、()
  • MISOメソッド
  • 二次下限

上記の内容は、数式と変数を表すためにマークダウン形式を使用して、原文を再記述したものであることに注意してください。

3.3. メモリ要件の削減

確率的変分勾配低減 (SVRG) アルゴリズムは、以前の変分低減法のメモリ要件を排除しますが、実際のアプリケーションでは、SAG (確率的平均勾配降下法) および SAGA (勾配累積を伴う確率的平均勾配降下法) アルゴリズムが多くの問題で使用されます。 SVRG アルゴリズムよりも必要な反復回数が少なくなる傾向があります。これをきっかけに次のような考えが生まれました。SAG/SAGA が O ( nd ) O(nd)(d) メモリ要件は以下のように実装されます。このセクションでは、メモリ要件を大幅に削減できる線形モデルのクラスについて説明します。

各関数が次のような線形モデルであると考えます。 fi ( x ) f_i(x)(バツ) それは次のように表現できます ξ i ( ai ⊤ x ) xi_i(mathbf{a}_i^top x)ξ(1つのバツ) 。右 xxバツ 微分すると勾配の形が得られます。
∇ fi ( x ) = ξ ′ ( ai ⊤ x ) ai nabla f_i(x) = xi'(mathbf{a}_i^top x) mathbf{a}_i(バツ)=ξ(1つのバツ)1つの
ここ、 ξ ′ xi'ξ 急行 ξ xiξ の派生語。固有ベクトルに直接アクセスできると仮定すると、 ai 数学bf{a}_i1つのの場合、SAG/SAGA メソッドを実装するには、スカラーを保存するだけで済みます。 ξ ( ai ⊤ x ) xi(mathbf{a}_i^top x)ξ(1つのバツ) 。このように、メモリ要件は次のように異なります。 O ( nd ) O(nd)(d) に減少 O(n) は、() 。 SVRG アルゴリズムは、この勾配構造を利用することもできます。 んん スカラーの場合、このクラスの問題では、SVRG の「内部」反復ごとに必要な勾配評価の数を 1 に減らすことができます。

確率的グラフィカル モデルなど、メモリ要件を削減できる可能性を提供する他のタイプの問題もあります [66]。特定のデータ構造とアルゴリズムの最適化により、実行時にアルゴリズムが必要とするメモリ リソースをさらに削減できます。

以下は、マークダウン形式で表現された数式と変数です。

  • 線形モデル関数: fi ( x ) = ξ i ( ai ⊤ x ) f_i(x) = xi_i(mathbf{a}_i^top x)(バツ)=ξ(1つのバツ)
  • グラデーション表現: ∇ fi ( x ) = ξ ′ ( ai ⊤ x ) ai nabla f_i(x) = xi'(mathbf{a}_i^top x) mathbf{a}_i(バツ)=ξ(1つのバツ)1つの
  • 特徴ベクトル: ai 数学bf{a}_i1つの
  • メモリ要件の範囲は次のとおりです。 O ( nd ) O(nd)(d) に減らす O(n) は、()

3.4. 疎な勾配の処理

一部の問題では、勾配 ∇ fi ( x ) は f_i(x) となる(バツ) まばらな特徴を持つ線形モデルなど、多数のゼロ値が含まれる可能性があります。この場合、従来の確率的勾配降下法 (SGD) アルゴリズムを効率的に実装でき、計算量は勾配内の非ゼロ要素の数に比例し、通常は問題の次元よりもはるかに小さくなります。 ddd 。ただし、標準的な変分リダクション (VR) 方法では、この利点は活用されません。幸いなことに、これを改善する既知の方法が 2 つあります。

最初の改良点は Schmidt らによって提案されたもので、更新プロセスの単純さを利用し、各反復のコストが非ゼロの数に比例するように「オンザフライ」計算の変形を実装します。要素。SAG を例にとると (ただし、このアプローチはすべてのバリアントに機能します)、これは各反復後に完全なベクトルを保存しないことで行われます。 ヴィック v_{ik}いいねただし、ゼロ以外の要素に対応する要素のみを計算します。 ヴィクジ v_{ik_j}じゅう、要素が最後にゼロ以外であったときから各変数を更新することによって ヴィクジ v_{ik_j}じゅう

2 番目の改善方法は、SAGA に対して Leblond らによって提案されたもので、式を更新します。 xk + 1 = xk − γ ( ∇ fik ( xk ) − ∇ fik ( xˉ ik ) + gˉ k ) x_{k+1} = x_k - gamma(nabla f_{ik}(x_k) - nabla f_{ik}(bar{x}_{ik}) + bar{g}_k)バツ+1=バツγ(いいね(バツ)いいね(バツˉいいね)+ˉ) 追加のランダム性が導入されます。ここ、 ∇ fik ( xk ) は f_{ik}(x_k) である。いいね(バツ) そして ∇ fik ( x ˉ ik ) は f_{ik}(bar{x}_{ik}) に反比例する。いいね(バツˉいいね) まばらであり、 g ˉ k バー{g}_kˉ 濃いです。この方法では、密な項は ( g ˉ k ) j (バー{g}_k)_j(ˉ)じゅう の各コンポーネントは次のように置き換えられます。 wj ( g ˉ k ) j w_j (bar{g}_k)_jじゅう(ˉ)じゅう、で w ∈ R dw は mathbb{R}^d で表されます。Rd サポート セットが含まれるランダムなスパース ベクトルです。 ∇ fik ( xk ) は f_{ik}(x_k) である。いいね(バツ) 、すべての要素が 1 に等しい定数ベクトルであることが期待されます。このようにして、更新プロセスは偏りのない状態を維持し (現在はまばらになっていますが)、分散の増加はアルゴリズムの収束率に影響を与えません。 詳細については、Leblond et al. が提供しています。

以下は、マークダウン形式で表現された数式と変数です。

  • 勾配: ∇ fi ( x ) は f_i(x) となる(バツ)
  • SGD の更新: xk + 1 = xk − γ ( ∇ fik ( xk ) − ∇ fik ( xˉ ik ) + gˉ k ) x_{k+1} = x_k - gamma(nabla f_{ik}(x_k) - nabla f_{ik}(bar{x}_{ik}) + bar{g}_k)バツ+1=バツγ(いいね(バツ)いいね(バツˉいいね)+ˉ)
  • 疎なグラデーション: ∇ fik ( xk ) は f_{ik}(x_k) である。いいね(バツ) そして ∇ fik ( x ˉ ik ) は f_{ik}(bar{x}_{ik}) に反比例する。いいね(バツˉいいね)
  • 濃いグラデーション: g ˉ k バー{g}_kˉ
  • ランダムなスパースベクトル: わーい
  • 定数ベクトル、つまりすべての要素が 1 に等しいベクトルを期待します。