「エポック」、「バッチ」、および「ミニバッチ」の違いは何ですか?


38

私の知る限り、確率的勾配降下法を学習アルゴリズムとして採用する場合、誰かが完全なデータセットに「エポック」を使用し、単一の更新ステップで使用されるデータに「バッチ」を使用し、別の人はそれぞれ「バッチ」と「ミニバッチ」を使用し、その他は「エポック」と「ミニバッチ」を使用します。これは議論中に多くの混乱をもたらします。

では、正しいことわざとは何ですか?または、それらはすべて受け入れられる方言です?

回答:


25
  • エポックとは、トレーニングセット全体を1回通過することを意味します
  • バッチとは、1回の反復中にすべてのデータを使用して勾配を計算することを意味します。
  • ミニバッチとは、1回の反復中にすべてのデータのサブセットのみを取得することを意味します。


4

「エポック」は通常、学習アルゴリズムをトレーニングデータのセット全体に公開することを意味します。データを生成することがあるため、これは必ずしも意味をなさない。

「バッチ」と「ミニバッチ」はわかりにくい場合があります。

すべてのデータを必ずしも一度にアルゴリズムに公開できるとは限らないため(通常はメモリの制約により)、トレーニングサンプルを「バッチ処理」する必要がある場合があります。

SGDのコンテキストでは、「ミニバッチ」は、重みを更新する前にバッチ全体で勾配が計算されることを意味します。「ミニバッチ」を使用していない場合、「バッチ」のすべてのトレーニング例は、学習アルゴリズムのパラメーターを個別に更新します。


最後の段落について確かですか?「バッチ処理された」SGDはエポックのすべてのデータを使用して、非常に正確な勾配をゆっくりと計算すると考えました。サイズ1のミニバッチのようなあなたの最後の文の音
マット・クラウス

また、Cross Validatedへようこそ!
マットクラウス

そう、元のSGDにはサイズ1のミニバッチがあります。最終的にはソフトウェア作成者の解釈に依存すると思います。多くの場合、batch == mini-batchで、「mini-batch」に言及したドキュメントはありません。
鉄輪

エラーは、バッチ処理されたGDがすべてのデータを使用することを意味すると思います。私はそれは本当に小さなだことを指摘したいとき...私は通常、バッチと交換可能にminibatchが、「minibatch」を使用
マット・クラウス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.