確率的勾配降下のエポックは、データの単一パスとして定義されます。SGDミニバッチごとに、サンプルが描画され、勾配が計算され、パラメーターが更新されます。エポック設定では、サンプルは置換なしで描画されます。
しかし、これは不要なようです。各反復でデータセット全体からランダムに描画されるので、各SGDミニバッチを描画しないのはなぜですか?多数のエポックで、サンプルが多少の頻度で見られる小さな偏差は重要ではないように思われます。
確率的勾配降下のエポックは、データの単一パスとして定義されます。SGDミニバッチごとに、サンプルが描画され、勾配が計算され、パラメーターが更新されます。エポック設定では、サンプルは置換なしで描画されます。
しかし、これは不要なようです。各反復でデータセット全体からランダムに描画されるので、各SGDミニバッチを描画しないのはなぜですか?多数のエポックで、サンプルが多少の頻度で見られる小さな偏差は重要ではないように思われます。
回答:
実用性についてのフランクの答え、および小さなサブグループを調べることについてのデビッドの答えに加えて、どちらも重要なポイントです。その理由は、おそらくデビッドのポイント(本質的にはクーポンコレクターの問題です)に関連しています。
ぼうとう(2009)。いくつかの確率的勾配降下アルゴリズムの奇妙に高速な収束。学習とデータ科学に関するシンポジウムの議事録。(著者のpdf)
彼は、3つのアプローチでSGDを介してサポートベクターマシンをトレーニングしました。
これは後に論文で理論的に確認されました。
Gürbüzbalaban、Ozdaglar、Parrilo(2015)。ランダムシャッフルが確率的勾配降下を打つ理由。arXivの:1510.08560。(NIPS 2015での招待講演のビデオ)
それらの証明は、損失関数が強く凸である場合にのみ適用されます。つまり、ニューラルネットワークには適用されません。ただし、同様の推論がニューラルネットワークの場合に適用される可能性があります(分析がはるかに困難です)。
実際、大きなトレーニングセットを使用するパフォーマンスの観点からは非常に不要ですが、エポックを使用すると便利です。たとえば、次のようになります。
[1]にはもう1つの理由があります。これは、今日のコンピューター構成ではそれほど重要ではありません。
確率的勾配降下法(ミニバッチの場合を含む)に関しては、推定器の効率のために、各例またはミニバッチをほぼ独立してサンプリングすることが重要です。メモリへのランダムアクセス(さらに悪いことにディスクへのアクセス)は高価なので、インクリメンタルグラデーション(Bertsekas、2010)と呼ばれる適切な近似は、メモリ内の順序に対応する固定順序でサンプル(またはミニバッチ)にアクセスすることですまたはディスク(2番目のエポックでサンプルを同じ順序で繰り返します。各サンプルが1回だけアクセスされる純粋なオンラインの場合ではありません)。このコンテキストでは、例またはミニバッチを最初にランダムな順序で配置する方が安全です(これを確実にするために、最初に例をシャッフルすることが役立つ場合があります)。ミニバッチが訪問される順序がエポックごとに変更されると、より速い収束が観察されました。これは、トレーニングセットがコンピューターのメモリに保持されている場合、合理的に効率的です。
[1]ベンジョ、ヨシュア。「ディープアーキテクチャの勾配ベースのトレーニングのための実用的な推奨事項。」ニューラルネットワーク:取引の秘cks。スプリンガーベルリンハイデルベルク、2012年。437-478。
私はそれが明らかに重要ではないことにいくらか同意しません。100万のトレーニング例があり、1,000万のサンプルを取得するとします。
Rでは、分布がどのように見えるかをすばやく確認できます。
plot(dbinom(0:40, size = 10 * 1E6, prob = 1E-6), type = "h")
一部のサンプルは20回以上アクセスされますが、そのうちの1%は3回以内にアクセスされます。トレーニングセットが実際のデータで予想される例の分布を表すように慎重に選択された場合、特にデータを小さなグループにスライスし始めると、データセットの一部の領域に実際の影響を与える可能性があります。
イリノイ州の有権者の1人が事実上30倍のオーバーサンプリングを行い、彼の人口統計グループのモデルの推定値を劇的にシフトした(そして、米国全体の人口についてはそれほどではない)最近のケースを考えてみましょう。被写界深度の狭い曇りの日に緑色の背景に対して撮影された「ラフライチョウ」画像を誤ってオーバーサンプリングし、他の種類のライチョウ画像をアンダーサンプリングすると、モデルはそれらの無関係な特徴をカテゴリラベルに関連付ける可能性があります。データをスライスする方法が増えれば増えるほど、これらのサブグループが増え、この種のミスが発生する機会が増えます。
samples = sample(1:1E6, size = 1E7, replace = TRUE)
plot(table(table(samples)) / 1E7)