基づいて、我々はデータサイエンスに掲載の質問がCrossValidatedに掲載の質問の重複しているとき、何をすべき?、CrossValidated(https://stats.stackexchange.com/a/311318/89653)で尋ねられた同じ質問に対する回答を再投稿しています。
注:この回答全体を通して、トレーニング損失の最小化を参照し、検証損失などの停止基準については説明しません。停止基準の選択は、以下で説明するプロセス/概念に影響しません。
ニューラルネットワークをトレーニングするプロセスは、損失関数の最小値を見つけることです。ここで、はニューロン間の重みの行列(または複数の行列)を表し、はトレーニングデータセットを表します。に添字を使用して、が固定されている間、最小化が重みに対してのみ発生することを示します(つまり、が最小になるようなを探してい)。WXX ℒ WW ℒ XLX(W)WXXLWWLX
ここで、要素がある(つまり、ネットワークに重みがある)とと、は次元空間の表面になります。視覚的なアナログを与えるために、ニューロンの重みが2つしかないことを想像してください()。その後簡単な幾何学的な解釈を持っている:それは、3次元空間内の面です。これは、任意の重み行列について、損失関数を評価でき、その値が表面の標高になるという事実から生じます。W P ℒ P + 1 、P = 2 ℒ W XPWPLP+1P=2LWX
しかし、非凸面の問題があります。私が説明した表面には多数の局所的な最小値があるため、勾配降下アルゴリズムはそれらの最小値で「スタック」しやすくなりますが、より深い/より低い/より良いソリューションが近くにあります。これは、与えられたに対して表面が固定されているため、がすべてのトレーニングの繰り返しにわたって変化しない場合に発生する可能性があります。さまざまな最小値を含むすべての機能は静的です。XXX
これに対する解決策は、シャッフルと組み合わせたミニバッチトレーニングです。特定の反復中に行をシャッフルし、それらのサブセットのみでトレーニングすることにより、が反復ごとに変化し、実際には、トレーニングの反復とエポックのシーケンス全体で2つの反復がまったく同じ実行されない可能性が非常に高い。効果は、ソルバーがローカルミニマムから簡単に「バウンス」できることです。ソルバーが、ミニバッチをトレーニングして、反復で極小値に留まっていると想像してください。この極小対応重みの特定の値で評価。と呼びますX I X 、I ℒ ℒ X I(W I)X I + 1 ℒのXのI + 1(W I)ℒ X I(W I)ℒ X I + 1 ℒ X I ℒ X W WXXiXiLLXi(Wi)。次の反復では、を使用しているため、損失曲面の形状が実際に変化します。つまり、はとは非常に異なる値をますそして、それが極小値に対応していない可能性は大いにあります!勾配の更新を計算して、トレーニングを続けることができます。明確にするために:の形状は、一般にとはます。ここで、トレーニングセット評価された損失関数を参照していることに注意してください。すべての可能な値にわたって定義された完全な表面Xi+1LXi+1(Wi)LXi(Wi)LXi+1LXiLXW、特定の値に対するその損失(単なるスカラー)の評価ではなく。シャッフルせずにミニバッチを使用すると、損失サーフェスのある程度の「多様化」が依然として存在することに注意してください。ただし、ソルバから見える有限の(そして比較的少ない)固有のエラーサーフェスがあります(具体的には、各エポック中に、同じ正確な一連のミニバッチ-したがって損失サーフェス-W
私が意図的に避けたものの1つは、ミニバッチサイズについての議論でした。これについては100万の意見があり、実用上の重要な意味があります(より大きなバッチでより大きな並列化を実現できます)。ただし、次のことは言及する価値があると思います。ため各列の値を計算することによって評価される重み行列の所与のセットについて(すなわち、可換演算子平均および加算または服用)の列の配置、影響を及ぼさないフル使用時バッチ勾配降下(つまり、各バッチが完全なであり、反復とエポックが同じ場合)。 X W X XLXWX X