ニューラルネットワークのミニバッチトレーニングでのデータのシャッフル


14

ニューラルネットワークのミニバッチトレーニングでは、エポックごとにトレーニングデータをシャッフルすることが重要だと聞きました。各エポックのシャッフルが役立つ理由を誰かが説明できますか?

Google検索から、次の回答が見つかりました。

  • トレーニングが迅速に収束するのに役立ちます
  • トレーニング中の偏りを防ぎます
  • モデルがトレーニングの順序を学習するのを防ぎます

しかし、これらの効果がランダムシャッフルによって引き起こされる理由を理解するのは困難です。誰もが直感的な説明を提供できますか?

おかげで、

回答:


8

別の説明をしようとするには:

ニューラルネットワークの最も強力な機能の1つは、非常に複雑な機能になり、入力データと出力データ間の非常に複雑な関係を学習できることです。これらの関係には、エポックごとにデータが供給される順序など、予期しないことを含めることができます。各エポック内のデータの順序が同じである場合、モデルはトレーニングエラーを減らす方法としてこれを使用できます。これは一種の過剰適合です。

速度に関して:ミニバッチ法は、確率的勾配降下法(およびその改良法)に依存しています。つまり、最小値を見つけるためにランダム性に依存しています。ミニバッチをシャッフルすると、勾配がより可変になります。これにより、適切な方向にヒットする可能性が高くなります(または少なくともそれが私の理解です)。


1
ニューラルネットワークは、各エポックでデータが供給される順序をどのように学習できますか?
コード教皇

1
つまり、できません。ミニバッチトレーニング(つまり、エポックごとに複数のバッチ)を使用する場合、データへの特定の順序は、最初に1つのミニバッチでトレーニングすることにより、ソルバーが特定の領域(おそらく、ローカルミニマム...)しかし、フィードフォワードNNがデータの順序について「学習」するとは、各予測が他のすべての予測とは独立して行われ、ミニバッチの順序はもちろん効果がないため、実際には正しくありません。
ジョシュ

6

非常に単純な観点から、データは順次供給されます。これは、少なくとも、データの順序が出力に影響を与える可能性があることを示唆しています。順序が重要でない場合、ランダム化は確かに害はありません。順序が重要な場合、ランダム化は、これらのランダム効果を滑らかにして、システマティックバイアスにならないようにします。要するに、ランダム化は安価であり、痛むことはなく、多くの場合、データの順序付けの影響を最小限に抑えます。


6

注:この回答全体を通して、トレーニング損失の最小化を参照し、検証損失などの停止基準については説明しません。停止基準の選択は、以下で説明するプロセス/概念に影響しません。

ニューラルネットワークを訓練するプロセスは、損失関数の最小値を見つけることであるWは、ニューロン間の重みのマトリックス(または複数のマトリックス)を表し、Xは、トレーニングデータセットを表しています。Xの添字を使用して、Xが固定されている間、ℒの最小化が重みWに対してのみ発生することを示します(つまり、が最小化されるようなWを探しています)。X(W)WXXWWX

ここで、Wに要素がある(つまり、ネットワークにP個の重みがある)と仮定すると、P + 1次元空間の表面になります。視覚的なアナログを与えるために、ニューロンの重みが2つしかないことを想像してください(P = 2)。それから、easyは簡単な幾何学的解釈を持っています:それは3次元空間の表面です。これは、任意の重みWのマトリックスについて、Xで損失関数を評価でき、その値が表面の標高になるという事実から生じます。PWPP+1P=2WX

しかし、非凸面の問題があります。私が説明した表面には多くの局所的な最小値があるため、勾配降下アルゴリズムはそれらの最小値で「スタック」する可能性がありますが、より深い/より低い/より良いソリューションが近くにあります。これは、表面が与えられたXに対して固定されているため、がすべてのトレーニングの繰り返しにわたって変化しない場合に発生する可能性があります。さまざまな最小値を含むすべての機能は静的です。XX

これに対する解決策は、シャッフルと組み合わせたミニバッチトレーニングです。特定の反復中に行をシャッフルし、それらのサブセットのみでトレーニングすることにより、は反復ごとに変化します。実際、トレーニングの反復とエポックのシーケンス全体で2回の反復がまったく同じXで実行されることはありません。効果は、ソルバーがローカルミニマムから簡単に「バウンス」できることです。ソルバーが、ミニバッチX iのトレーニングを使用して、反復iで極小値に留まっていると想像してください。この極小対応重みの特定の値で評価。我々はそれを呼ぶことにしますX IWXXiXi。私たちが使用しているので、次の反復では、当社の損失の表面の形状は、実際に変わる XのI + 1、である、XをI + 1W Iとは非常に異なった値をとることができるX IW Iと、それを極小値に対応していない可能性があります!勾配の更新を計算して、トレーニングを続けることができます。明確にするために:の形状X I + 1がします-一般的には-のものと異なる場合がX IXi(Wi)Xi+1Xi+1(Wi)Xi(Wi)Xi+1Xi。ここで、トレーニングセットXで評価された損失関数を参照していることに注意してください。それはすべての可能な値上に定義された完全な表面でWはなく、特定の値のためのその損失の評価(単にスカラである)W。また、シャッフルせずにミニバッチを使用すると、損失サーフェスのある程度の「多様化」がありますが、ソルバーから見える有限の(そして比較的少ない)固有のエラーサーフェスがあることに注意してください(具体的には、各エポック中に、同じ正確なミニバッチのセット-したがって損失サーフェス-XWW

私が意図的に避けたものの1つは、ミニバッチサイズの議論でした。これについては100万の意見があり、それが実際に重要な意味を持っています(より大きなバッチでより大きな並列化を実現できます)。ただし、次のことは言及する価値があると思います。ため各列の値を計算することによって評価されるX重み行列の所与のセットについて(すなわち、可換演算子平均および加算または服用)Wの列の配置、Xは影響を及ぼさないフル使用時バッチ勾配降下(つまり、各バッチが完全なXであり、反復とエポックが同じ場合)。XWX X


この有益な説明をありがとう。回答を深く読んだ後、2つの質問があります。1.ミニバッチは、ある程度の多様性を提供すると述べました。どうしてこれがローカルミニマムで行き詰まるのを避けるのに十分ではないのか理解できません。ソルバーが1つのバッチの表面の極小にある場合、次のバッチの表面の極小にない可能性が高いため、スタックしないでください。2.ソルバーは損失関数の表面でどのように収束しますが、表面は常に異なるバッチを使用して変化しますか?
コード教皇

多様化の利点は、シャッフルなしでも存在しますが、シャッフリングを使用する場合ほど重要ではありません。これは、損失面の同じシーケンスが絶えず見られるためです。停止基準については、通常、指定された反復回数にわたる損失の平均減少率が許容範囲を下回ると、トレーニングが停止するように書きました。
ジョシュ

2
たぶん、私はローカルミニマムに関するあなたの質問にはあまりよく答えなかったのかもしれません。理論上、応答の確率分布(モデルの予測子を条件とする)はトレーニングデータセット全体で一定であると想定されるため、これらの損失曲面はすべてある程度の類似性を示す必要があります。したがって、最小値が十分に深い場合、非常に多くのミニバッチに表示されるはずなので、ソルバーはそれから跳ね返ることはほとんどありません。しかし、最小値が基本的に「ノイズ」である場合、この戦略はかなりうまく機能し、モデルがトレーニングを継続できるようにする必要があります。
ジョシュ

ありがとう。2番目の応答は、異なる表面にもかかわらずNNが収束する理由を明確に理解できるようにします。私の最初の質問に関して、同じシーケンスを持っていると、シャッフルを使用する場合よりも、バッチの多くの損失面で「ノイズ」が繰り返される可能性が高くなると言うのは正しいですか?これは、シャッフルせずにミニバッチを使用する場合にローカルミニマムのままになる可能性がある理由を説明できる唯一の説明です。
コード教皇

@CodePopeそれは正しいと思います。また、トレーニングの開始以降、損失が大幅に削減されると、勾配はかなり小さくなり、ソルバーが損失サーフェスの同じシーケンスを見続けるため、基本的に「ループ」に陥る可能性さえあります。これは私のかなり限られた経験に基づく投機的な説明であるため、これに深刻な理論的興味がある場合は、専門家に相談することをお勧めします。
ジョシュ

4

あなたの最後のいくつかのミニバッチラベルが実際により多くのノイズを持っていると想像してください。次に、これらのバッチは最終的に学習した重みを間違った方向に引き出します。毎回シャッフルすると、最後の数バッチが不均衡にうるさくなる可能性が低くなります。


1

固定データセットを使用してネットワークをトレーニングすると、トレーニング中にシャッフルすることのないデータを意味します。40,70、-101,200などのように、非常に高い重量と非常に低い重量を取得する可能性が非常に高くなります。これは、ネットワークがトレーニングデータを学習していないが、トレーニングデータのノイズを学習していることを意味します。オーバーフィットモデルのクラシックケース。このようなネットワークを使用すると、トレーニングに使用したデータの予測にスポットを当てることができます。他の入力を使用してテストすると、モデルはバラバラになります。これで、各エポック(セット全体の反復)後にトレーニングデータをシャッフルすると、各エポックでニューロンに異なる入力を供給するだけで、重みを単純に調整するため、ゼロに近い「低い」重みが得られる可能性が高くなります。 、そしてそれはあなたのネットワークがより良い一般化を行えることを意味します。

それが明確であったことを願っています。


1

より直感的な説明を次に示します。

勾配降下法を使用する場合、勾配の方向で損失を減らす必要があります。勾配は、重みの更新の各ラウンドの単一のミニバッチからのデータによって計算されます。必要なのは、このミニバッチベースの勾配が人口勾配に近いことです。これにより、収束が速くなることが期待されるためです。(ネットワークに1つのミニバッチで100クラス1データを供給し、別のミニバッチで100クラス2データを供給した場合、ネットワークはホバリングします。各ミニバッチで50クラス1 + 50クラス2を供給することをお勧めします。)

人口データをミニバッチで使用できないため、これを達成するにはどうすればよいですか?統計の技術は、人口をシャッフルし、最初のbatch_sizeのデータが人口を表すことができることを教えてくれます。これが人口をシャッフルする必要がある理由です。

母集団からデータをサンプリングする他の方法があり、サンプルが妥当な勾配を生成できることを確認する場合、シャッフルは必要ありません。

それが私の理解です。それが役に立てば幸い。

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