バッチサイズは、ネットワークを介して伝播されるサンプルの数を定義します。
たとえば、1050個のトレーニングサンプルがありbatch_size
、100に等しい値を設定するとします。アルゴリズムは、トレーニングデータセットから最初の100個のサンプル(1〜100番目)を取得し、ネットワークをトレーニングします。次に、2番目の100個のサンプル(101番目から200番目)を取得し、ネットワークを再度トレーニングします。ネットワークを介してすべてのサンプルを伝搬するまで、この手順を実行できます。最後のサンプルセットで問題が発生する場合があります。この例では、残りのない100で割り切れない1050を使用しました。最も簡単な解決策は、最後の50サンプルを取得してネットワークをトレーニングすることです。
バッチサイズ<すべてのサンプル数を使用する利点:
必要なメモリが少なくなります。より少ないサンプルを使用してネットワークをトレーニングするため、全体的なトレーニング手順で必要なメモリは少なくなります。データセット全体をマシンのメモリに収めることができない場合、これは特に重要です。
通常、ネットワークはミニバッチでより速くトレーニングします。これは、各伝播後に重みを更新するためです。この例では、11個のバッチ(そのうちの10個は100個のサンプル、1個は50個のサンプル)を伝播し、それぞれの後にネットワークのパラメーターを更新しました。伝播中にすべてのサンプルを使用した場合、ネットワークのパラメーターを1回だけ更新します。
バッチサイズを使用することの欠点<すべてのサンプルの数:
- バッチが小さいほど、勾配の推定の精度が低下します。次の図では、完全バッチグラデーション(青色)の方向と比較して、ミニバッチグラデーション(緑色)の方向が大きく変動していることがわかります。
Stochasticはbatch_size
1に等しいミニバッチです。その場合、グラデーションはミニバッチグラデーションよりも頻繁に方向を変更します。