【ばっちさいず】

バッチサイズ とは?

💡 一度に何問まとめて答え合わせするかを決める「勉強の単位」
📌 このページのポイント
バッチサイズと学習の関係 データセット全体(1000件) バッチサイズ = 100 の場合 100件 100件 100件 100件 100件 100件 = 10バッチ 重み更新① 重み更新② 重み更新③ 小さいバッチ(32) 更新頻度高・ノイズ多い 大きいバッチ(512) 安定した勾配・メモリ多い
バッチサイズによるミニバッチ学習のイメージ
ひよこ ひよこ

バッチサイズって全データを一度に使えばいいんじゃないの?

ペンギン先生 ペンギン先生

メモリが足りないんだよ。100万件のデータを全部同時にGPUに乗せようとしてもメモリが溢れてしまう。だからデータを小さなかたまり(ミニバッチ)に分けて少しずつ処理するのが現実的なんだ。

ひよこ ひよこ

バッチサイズを小さくすると精度が上がるって聞いたけど?

ペンギン先生 ペンギン先生

小さいバッチは計算にランダム性が高くなって、局所最適を抜け出しやすくなることがあるんだよ。「ノイズの多い勾配」が正則化のような効果を持つんだ。一方で計算が不安定になりやすいし、GPU利用率が下がって遅くなる欠点もある。

ひよこ ひよこ

2の累乗(32・64・128)を使うのはなぜ?

ペンギン先生 ペンギン先生

GPUメモリ管理が2の累乗単位で最適化されているからだよ。33や65といった中途半端な数だとメモリの使い方が非効率になって、処理が遅くなることがある。慣例と最適化の両方の理由があるんだ。

ひよこ ひよこ

バッチサイズが大きいと同じ精度になるまでエポック数が少なくて済むってこと?

ペンギン先生 ペンギン先生

計算の話は少し複雑でね、バッチサイズを大きくすると1エポックあたりの更新回数が減るから、エポックごとの学習量は変わる。さらに「大バッチサイズは汎化性能が下がる」という論文が2016年に発表されて議論になったんだけど、その後「学習率を適切にスケーリングすれば大バッチでも問題ない」という反論も出てきた。正確には「シャープな最小値 vs フラットな最小値」の問題で、大バッチはシャープな最小値に収束しやすくてテストデータで精度が落ちやすい。これは現在も研究中のテーマで、バッチサイズ選びは単純な「大きい・小さい」だけじゃ語れないんだよ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「バッチサイズ」って出てきたら「1回の学習更新に使うデータの個数のことだな」と思えればだいたいOK!
📖 おまけ:英語の意味
「Batch Size」 = バッチ(一束)のサイズ
💬 Batchは「一まとめ」という意味。一度に処理するデータのまとまりの大きさを指すよ
← 用語集にもどる