【ミニバッチ】

ミニバッチ とは?

最終更新:
💡 学習データを小分けにして、まとまりごとに更新

機械学習で、学習データの一部を小さなまとまりとして処理すること。ミニバッチ勾配降下法では、そのまとまりの勾配を平均してモデルのパラメータを更新する。

📌 このページのポイント
ミニバッチ:何件で1回更新?6件のデータを一周する例1件ずつ1件/グループ1234566回更新ミニバッチ2件/グループ1234563回更新全件まとめて6件/グループ1234561回更新ミニバッチ2件なら:①② → ③④ → ⑤⑥各グループで1回更新する例最適な件数はメモリや学習条件で変わる
色の付いたデータは最初のグループ。件数は説明用で、推奨設定ではありません。
ひよこ ひよこ
全部のデータを一度に使わないの?
ペンギン先生 ペンギン先生
全データを使ってから更新する方法もあるけれど、データが多いと計算やメモリの負担が大きくなるよ。ミニバッチ勾配降下法では、一部のまとまりを使い、その勾配を平均してパラメータを更新するんだ
ひよこ ひよこ
1件ずつ使う方法との違いは?
ペンギン先生 ペンギン先生
この比較でのSGDは、1回に1件を使って更新する方法だよ。ミニバッチは複数件をまとめるので、計算をまとめて実行できる利点がある。ただし、ライブラリによってはミニバッチを使う方法も含めてSGDと呼ぶので、名前だけで件数を決めつけないようにしようね
ひよこ ひよこ
ペンギン先生 ペンギン先生
別の数だよ。たとえば学習データが6件でバッチサイズ2なら、2件ずつ3組に分けられる。各組で1回ずつ更新する例では、1周で3回の更新だね。全データを1周したのが1エポックになるよ
ひよこ ひよこ
32や64にすれば、いつでも正解?
ペンギン先生 ペンギン先生
万能な値はないよ。モデルや使えるメモリ、処理速度、学習率などによって選ぶ。大きければ必ず高精度、小さければ必ず汎化性能がよい、とは言えないので、学習時間と評価結果を確かめようね
ひよこ ひよこ
ウォームアップって、途中でバッチを大きくすること?
ペンギン先生 ペンギン先生
一般に学習率ウォームアップは、学習の始めに学習率を低い値から徐々に上げる方法だよ。バッチサイズを変えることとは別の話なんだ。ミニバッチの大きさと、1回の更新でどれだけ動かすかを決める学習率は、区別して考えようね
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「ミニバッチ」って出てきたら「学習データを小さなまとまりで処理するやり方」と思えばだいたいOK!
📖 おまけ:英語の意味
「Mini-Batch」 = 小さなまとまり
💬 miniは小さい、batchは一まとまりという意味だよ。全データをまとめて扱う場合と、1件ずつ扱う場合の間のイメージで覚えよう

参考資料

← 用語集にもどる