ニューラルネットワークの研究者がエポックに関心があるのはなぜですか?


69

確率的勾配降下のエポックは、データの単一パスとして定義されます。SGDミニバッチごとに、kサンプルが描画され、勾配が計算され、パラメーターが更新されます。エポック設定では、サンプルは置換なしで描画されます。

しかし、これは不要なようです。各反復でデータセット全体からランダムに描画されるので、各SGDミニバッチを描画しないのはなぜkですか?多数のエポックで、サンプルが多少の頻度で見られる小さな偏差は重要ではないように思われます。


1
質問のための+1、興味深いことに、私は尋ねようとしているのとほぼ同じ質問がありました!
ハイタオドゥ

事例証拠ですが、最近、MNISTデータにSGDを使用して1層のニューラルネットワークを適合させました。これは、トレーニングサイズが50000です。ランダムランスルーを1回行った後、分類精度は30〜40%をはるかに上回らず、対数尤度は明らかに収束していませんでした。そこで、さらに30エポックの手順を繰り返して、90%以上の精度を達成しました。少なくとも反例によって、これは私に彼らが必要であり得ることを示しました。
トムカ

6
方法と一致しているデータに対して複数のパスが必要であるという証拠を提供するようだ@tomkaは、ここで提案:描画保つ訓練の反復ごとのサンプルうんざりします。k
モニカの復元

1
別の興味深い質問は次のとおりです。ミニバッチ注文も過剰適合に影響しますか?
Kh40tiK

3
@Pinocchio標準のSGDプラクティスは、置換なしのサンプリングです(サンプルのプールが使い果たされるまで、すべてのデータで新しいエポックが再び開始されます)。私の質問は、それがサンプリングを交換で使用しない理由です。1つの答えは、置換なしのサンプリングがモデルの収束率を改善するということです。
モニカを

回答:


60

実用性についてのフランクの答え、および小さなサブグループを調べることについてのデビッドの答えに加えて、どちらも重要なポイントです。その理由は、おそらくデビッドのポイント(本質的にはクーポンコレクターの問題です)に関連しています。

n=781,265

ぼうとう(2009)。いくつかの確率的勾配降下アルゴリズムの奇妙に高速な収束。学習とデータ科学に関するシンポジウムの議事録。(著者のpdf

彼は、3つのアプローチでSGDを介してサポートベクターマシンをトレーニングしました。

  • ランダム:各反復で完全なデータセットからランダムサンプルを描画します。
  • サイクル:学習プロセスを開始する前にデータセットをシャッフルし、順番に調べます。これにより、各エポックで同じ順序で例を見ることができます。
  • シャッフル:各エポックが異なる順序になるように、各エポックの前にデータセットを再シャッフルします。

E[C(θt)minθC(θ)]Cθtt

  • ランダムの場合、収束はほぼのオーダーでした(その時点での既存の理論で予想されたとおり)。t1
  • サイクルは、のオーダーで収束を取得しました(が、順列によって異なりたとえば、図1の)。tαα>1α1.8
  • シャッフルはもっと混沌としたが、最高のフィットラインは、与えた、かなりランダムよりも速いです。t2

これが彼の図1です。 特定のレートでの収束の図

これは後に論文で理論的に確認されました。

Gürbüzbalaban、Ozdaglar、Parrilo(2015)。ランダムシャッフルが確率的勾配降下を打つ理由arXivの:1510.08560。(NIPS 2015での招待講演のビデオ

それらの証明は、損失関数が強く凸である場合にのみ適用されます。つまり、ニューラルネットワークには適用されません。ただし、同様の推論がニューラルネットワークの場合に適用される可能性があります(分析がはるかに困難です)。


3
これは非常に洞察に満ちた答えです。あなたの貢献に感謝します。
モニカを

1
無知で申し訳ありませんが、3つの違いをもう少し説明していただけますか?特に、ランダムについて混乱しています。「サンプル」と言うとき、どういう意味ですか?これはあなたが参照しているものではないことを知っていますが、標準のニューラルネットミニバッチSGDは通常、各反復で置換せずにバッチをサンプリングします。それはランダムなことですか?もしそうなら、それはシャッフルとどう違いますか?
ピノキオ

1
読み直したので、3つすべてが同じアルゴリズムのように見えますが、データセットがシャッフルされるかどうかと、SGDのバッチが常にランダムである場合の違いは何ですか?
ピノキオ

3
@Pinocchio 4つの要素からなるデータセットを想像してください。ランダムはACADBBCAになります。各エントリは完全にランダムです。サイクルはBDACに行くかもしれませんBDAC BDAC; エポックごとに1つの順序を選択して、繰り返します。シャッフルはBDAC ADCB CBADです。エポックになりますが、それぞれがランダムです。この分析では、ミニバッチを使用せず、一度に1要素ずつSGDを使用します。
ドゥーガル

これは素晴らしい答えです。ありがとうございます!
DankMasterDan

24

実際、大きなトレーニングセットを使用するパフォーマンスの観点からは非常に不要ですが、エポックを使用すると便利です。たとえば、次のようになります。

  • 「ニューラルネットワークは10エポックでトレーニングされました」は、「ニューラルネットワークが18942回の反復でトレーニングされた」または「ニューラルネットワークが303072サンプルでトレーニングされた」よりも明確な記述です。
  • トレーニング段階では、ランダムな重みの初期化、ミニバッチシャッフル、ドロップアウトなど、十分なランダムなことが行われます。
  • 実装は簡単です
  • トレーニングセットがエポックを持たないのに十分な大きさであるかどうか疑問に思うことを避けます

[1]にはもう1つの理由があります。これは、今日のコンピューター構成ではそれほど重要ではありません。

確率的勾配降下法(ミニバッチの場合を含む)に関しては、推定器の効率のために、各例またはミニバッチをほぼ独立してサンプリングすることが重要です。メモリへのランダムアクセス(さらに悪いことにディスクへのアクセス)は高価なので、インクリメンタルグラデーション(Bertsekas、2010)と呼ばれる適切な近似は、メモリ内の順序に対応する固定順序でサンプル(またはミニバッチ)にアクセスすることですまたはディスク(2番目のエポックでサンプルを同じ順序で繰り返します。各サンプルが1回だけアクセスされる純粋なオンラインの場合ではありません)。このコンテキストでは、例またはミニバッチを最初にランダムな順序で配置する方が安全です(これを確実にするために、最初に例をシャッフルすることが役立つ場合があります)。ミニバッチが訪問される順序がエポックごとに変更されると、より速い収束が観察されました。これは、トレーニングセットがコンピューターのメモリに保持されている場合、合理的に効率的です。


[1]ベンジョ、ヨシュア。「ディープアーキテクチャの勾配ベースのトレーニングのための実用的な推奨事項。」ニューラルネットワーク:取引の秘cks。スプリンガーベルリンハイデルベルク、2012年。437-478。


1
これらは良い点のように見えますが、更新に関しては、エポックごとのサンプリングは依存サンプリング(エポックでサンプルが2回見られる確率が0であるため)のようです。そのため、著者が「ほぼ独立した」という意味が「まったく独立していない」のでない限り、エポック構成が独立していると著者が主張できる方法がわかりません。k
モニカを

1
@Sycorax置換なしのサンプリングは、もちろん独立ではありませんが、交換可能であるという意味で「ほぼ独立」しています。1つのデータポイントをあまり気にしない分類器をトレーニングするという観点からすると、この交換可能性は間違いなく「ほぼ独立」にかなり近いものです。
-Dougal

18

私はそれが明らかに重要ではないことにいくらか同意しません。100万のトレーニング例があり、1,000万のサンプルを取得するとします。

Rでは、分布がどのように見えるかをすばやく確認できます。

plot(dbinom(0:40, size = 10 * 1E6, prob = 1E-6), type = "h")

二項PMF

一部のサンプルは20回以上アクセスされますが、そのうちの1%は3回以内にアクセスされます。トレーニングセットが実際のデータで予想される例の分布を表すように慎重に選択された場合、特にデータを小さなグループにスライスし始めると、データセットの一部の領域に実際の影響を与える可能性があります。

イリノイ州の有権者の1人が事実上30倍のオーバーサンプリングを行い、彼の人口統計グループのモデルの推定値を劇的にシフトした(そして、米国全体の人口についてはそれほどではない)最近のケースを考えてみましょう。被写界深度の狭い曇りの日に緑色の背景に対して撮影された「ラフライチョウ」画像を誤ってオーバーサンプリングし、他の種類のライチョウ画像をアンダーサンプリングすると、モデルはそれらの無関係な特徴をカテゴリラベルに関連付ける可能性があります。データをスライスする方法が増えれば増えるほど、これらのサブグループが増え、この種のミスが発生する機会が増えます。


1
大規模なトレーニングセットの練習で大きな違いを生むとは思いませんが、小さなトレーニングセットの場合は間違いなく期待しています。
フランクデルノンクール

5
@FranckDernoncourtよく、全体のポイントは、小さなサブグループを見始めれば、大きなデータセットにとって重要になるということでした。これは、大規模なデータセットでは珍しい手順ではありません
-dimpol

2項分布ではなく、一様分布を使用する必要があることを確認してください
lahwran

2
@lahwran要素から回サンプリングして、置換します。Rでは、これはになります。そこから、で頻度分布をプロットできます。上でプロットした二項分布のように見えます。107106samples = sample(1:1E6, size = 1E7, replace = TRUE)plot(table(table(samples)) / 1E7)
デビッドJ.ハリス

2
あぁ!私は間違っていました。
ラフラン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.