完全なデータセットとは対照的にミニバッチを使用する主な利点は、確率的勾配降下法1の基本的な考え方にまでさかのぼります。
バッチ勾配降下では、データセット全体の勾配を計算し、潜在的に膨大な量の情報を平均化します。それには多くのメモリが必要です。しかし、実際のハンディキャップは、バッチグラジエントトラジェクトリが悪い場所(サドルポイント)に落ちてしまうことです。
一方、純粋なSGDでは、データセットの単一インスタンスで計算された勾配を追加(マイナス記号)することにより、パラメーターを更新します。1つのランダムデータポイントに基づいているため、非常にノイズが多く、バッチグラディエントから遠く離れた方向に進む可能性があります。ただし、ノイズは、非凸最適化で必要なものです。これは、addle点または極小値からの脱出に役立つためです([2]の定理6)。欠点は、非常に非効率的であり、適切なソリューションを見つけるためにデータセット全体を何度もループする必要があることです。
ミニバッチ手法は、各勾配の更新に十分なノイズを注入する一方で、比較的迅速な収束を実現する妥協案です。
1 Bottou、L.(2010)。確率的勾配降下による大規模機械学習。COMPSTAT'2010の議事録(pp。177-186)。Physica-Verlag HD。
[2] Ge、R.、Huang、F.、Jin、C。、およびYuan、Y.(2015年6月)。addle点からの脱出テンソル分解のためのオンライン確率勾配 COLTで(pp。797-842)。
編集:
Yann LeCunのfacebookでこのコメントを見たところです。この質問に新しい視点を与えてくれます(fbにリンクする方法はわかりません)。
大きなミニバッチでのトレーニングは健康に悪いです。さらに重要なことは、テストエラーにとっては悪いことです。友人は友人が32レッツ顔にそれをより大きくminibatchesを使用してみましょういけない:唯一の人は、2012年以来、1より大きいが、GPUはバッチの非効率的であるため、ひどい理由ですより小さい32のサイズであるサイズminibatchに切り替えています。それは単にハードウェアがひどいことを意味します。
彼は、数日前(2018年4月)arXivに投稿されたばかりのこの論文を引用しました。
Dominic Masters、Carlo Luschi、ディープニューラルネットワーク向けの小規模バッチトレーニングの再検討、arXiv:1804.07612v1
要約から、
大きなミニバッチを使用すると利用可能な計算並列性が向上しますが、小さなバッチトレーニングは一般化パフォーマンスを向上させることが示されています...
最適なパフォーマンスは、m = 2からm = 32までのミニバッチサイズで一貫して得られています。これは、数千単位のミニバッチサイズの使用を提唱している最近の研究とは対照的です。