ミニバッチ学習

Mini-batch Learning

ミニバッチ学習(Mini-batch Learning)とは、訓練データを小さなバッチ(ミニバッチ)に分割し、各ミニバッチごとにパラメータを更新する学習方式です。バッチ学習とオンライン学習(SGD)の中間に位置し、実務で最も広く使われています。

ミニバッチの利点

バッチ学習より計算効率が良く、GPUの並列計算を有効活用できます。また、純粋なSGD(1サンプル)よりも勾配の推定が安定し、適度なノイズが正則化効果をもたらします。

表:ミニバッチ学習の要点まとめ
ひとことで言うとデータを小分けにして、その単位でパラメータを更新する学習方法。
何がうれしいか全件学習の安定性と、1件ずつ学習の速さの、いいとこ取りができる。
注意点バッチの中身に偏りがあると学習がぶれる。毎エポック順序をシャッフルする。

バッチサイズとの関係

一般的なバッチサイズは32〜256程度で、GPUメモリに収まる最大サイズを使用することが多いです。バッチサイズの選択は学習の収束速度と汎化性能に影響します。

図:ミニバッチ学習の流れ
1データをシャッフル偏りを防ぐ
▶
2小分けにする32件・64件など
▶
31バッチで損失計算平均の誤差を求める
▶
4パラメータ更新1バッチごとに1回
↺ 全バッチを処理したら1エポック完了