回答:
別の説明をしようとするには:
ニューラルネットワークの最も強力な機能の1つは、非常に複雑な機能になり、入力データと出力データ間の非常に複雑な関係を学習できることです。これらの関係には、エポックごとにデータが供給される順序など、予期しないことを含めることができます。各エポック内のデータの順序が同じである場合、モデルはトレーニングエラーを減らす方法としてこれを使用できます。これは一種の過剰適合です。
速度に関して:ミニバッチ法は、確率的勾配降下法(およびその改良法)に依存しています。つまり、最小値を見つけるためにランダム性に依存しています。ミニバッチをシャッフルすると、勾配がより可変になります。これにより、適切な方向にヒットする可能性が高くなります(または少なくともそれが私の理解です)。
注:この回答全体を通して、トレーニング損失の最小化を参照し、検証損失などの停止基準については説明しません。停止基準の選択は、以下で説明するプロセス/概念に影響しません。
ニューラルネットワークを訓練するプロセスは、損失関数の最小値を見つけることである、Wは、ニューロン間の重みのマトリックス(または複数のマトリックス)を表し、Xは、トレーニングデータセットを表しています。Xの添字を使用して、Xが固定されている間、ℒの最小化が重みWに対してのみ発生することを示します(つまり、ℒが最小化されるようなWを探しています)。
ここで、Wに要素がある(つまり、ネットワークにP個の重みがある)と仮定すると、ℒはP + 1次元空間の表面になります。視覚的なアナログを与えるために、ニューロンの重みが2つしかないことを想像してください(P = 2)。それから、easyは簡単な幾何学的解釈を持っています:それは3次元空間の表面です。これは、任意の重みWのマトリックスについて、Xで損失関数を評価でき、その値が表面の標高になるという事実から生じます。
しかし、非凸面の問題があります。私が説明した表面には多くの局所的な最小値があるため、勾配降下アルゴリズムはそれらの最小値で「スタック」する可能性がありますが、より深い/より低い/より良いソリューションが近くにあります。これは、表面が与えられたXに対して固定されているため、がすべてのトレーニングの繰り返しにわたって変化しない場合に発生する可能性があります。さまざまな最小値を含むすべての機能は静的です。
これに対する解決策は、シャッフルと組み合わせたミニバッチトレーニングです。特定の反復中に行をシャッフルし、それらのサブセットのみでトレーニングすることにより、は反復ごとに変化します。実際、トレーニングの反復とエポックのシーケンス全体で2回の反復がまったく同じXで実行されることはありません。効果は、ソルバーがローカルミニマムから簡単に「バウンス」できることです。ソルバーが、ミニバッチX iのトレーニングを使用して、反復iで極小値に留まっていると想像してください。この極小対応ℒ重みの特定の値で評価。我々はそれを呼ぶことにしますℒ X I(W。私たちが使用しているので、次の反復では、当社の損失の表面の形状は、実際に変わる XのI + 1、である、 ℒ XをI + 1(W I)とは非常に異なった値をとることができる ℒ X I(W I)と、それを極小値に対応していない可能性があります!勾配の更新を計算して、トレーニングを続けることができます。明確にするために:の形状 ℒ X I + 1がします-一般的には-のものと異なる場合が ℒ X I。ここで、トレーニングセットXで評価された損失関数を参照していることに注意してください。それはすべての可能な値上に定義された完全な表面でWはなく、特定の値のためのその損失の評価(単にスカラである)W。また、シャッフルせずにミニバッチを使用すると、損失サーフェスのある程度の「多様化」がありますが、ソルバーから見える有限の(そして比較的少ない)固有のエラーサーフェスがあることに注意してください(具体的には、各エポック中に、同じ正確なミニバッチのセット-したがって損失サーフェス-
私が意図的に避けたものの1つは、ミニバッチサイズの議論でした。これについては100万の意見があり、それが実際に重要な意味を持っています(より大きなバッチでより大きな並列化を実現できます)。ただし、次のことは言及する価値があると思います。ため各列の値を計算することによって評価されるX重み行列の所与のセットについて(すなわち、可換演算子平均および加算または服用)Wの列の配置、Xは影響を及ぼさないフル使用時バッチ勾配降下(つまり、各バッチが完全なXであり、反復とエポックが同じ場合)。
固定データセットを使用してネットワークをトレーニングすると、トレーニング中にシャッフルすることのないデータを意味します。40,70、-101,200などのように、非常に高い重量と非常に低い重量を取得する可能性が非常に高くなります。これは、ネットワークがトレーニングデータを学習していないが、トレーニングデータのノイズを学習していることを意味します。オーバーフィットモデルのクラシックケース。このようなネットワークを使用すると、トレーニングに使用したデータの予測にスポットを当てることができます。他の入力を使用してテストすると、モデルはバラバラになります。これで、各エポック(セット全体の反復)後にトレーニングデータをシャッフルすると、各エポックでニューロンに異なる入力を供給するだけで、重みを単純に調整するため、ゼロに近い「低い」重みが得られる可能性が高くなります。 、そしてそれはあなたのネットワークがより良い一般化を行えることを意味します。
それが明確であったことを願っています。
より直感的な説明を次に示します。
勾配降下法を使用する場合、勾配の方向で損失を減らす必要があります。勾配は、重みの更新の各ラウンドの単一のミニバッチからのデータによって計算されます。必要なのは、このミニバッチベースの勾配が人口勾配に近いことです。これにより、収束が速くなることが期待されるためです。(ネットワークに1つのミニバッチで100クラス1データを供給し、別のミニバッチで100クラス2データを供給した場合、ネットワークはホバリングします。各ミニバッチで50クラス1 + 50クラス2を供給することをお勧めします。)
人口データをミニバッチで使用できないため、これを達成するにはどうすればよいですか?統計の技術は、人口をシャッフルし、最初のbatch_sizeのデータが人口を表すことができることを教えてくれます。これが人口をシャッフルする必要がある理由です。
母集団からデータをサンプリングする他の方法があり、サンプルが妥当な勾配を生成できることを確認する場合、シャッフルは必要ありません。
それが私の理解です。それが役に立てば幸い。