【ミニバッチ】

ミニバッチ とは?

💡 食べ放題を一皿ずつ取りに行く戦略
📌 このページのポイント
バッチサイズの比較 確率的勾配降下法 (バッチサイズ = 1) 1件 更新頻度: 高 ノイズ: 大きい メモリ: 少 収束が不安定 ミニバッチ学習 (バッチサイズ = 32〜256) 更新頻度: 中 ノイズ: 適度 メモリ: 中 バランスが良い フルバッチ学習 (バッチサイズ = 全データ) 全データ 更新頻度: 低 ノイズ: なし メモリ: 大 安定だが遅い ミニバッチが主流な理由 GPU並列処理との相性が良く、速度・精度・メモリのバランスが最適 深層学習ではバッチサイズ 32〜256 が一般的
ミニバッチのイメージ
ひよこ ひよこ

ミニバッチってなに?全部のデータを一気に使って学習すればいいんじゃないの?

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

データが何百万件もあると、全部一度にメモリに載せるのは無理なんだよ。だからデータを小さなグループに分けて、少しずつ学習するのがミニバッチ方式だね

ひよこ ひよこ

じゃあ1件ずつ処理するのとは何が違うの?

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

1件ずつだとノイズが多すぎて学習がフラフラするし、GPUの並列計算能力を活かせないんだ。ミニバッチなら適度にノイズを残しつつ効率よく計算できるよ

ひよこ ひよこ

バッチサイズってどれくらいがいいの?

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

32や64が定番だけど、実はバッチサイズは奥が深いんだ。大きくすると学習が安定する反面、小さいバッチのほうが「良い谷」に落ちやすくて汎化性能が上がることが多いよ

ひよこ ひよこ

えっ、不安定なほうがいい結果になることがあるの?

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

そうなんだよ。ベテランでも意外と見落としがちだけど、大きいバッチサイズだと鋭い最小値(シャープミニマ)にハマりやすくて、テスト精度が落ちることがあるんだ。Googleの研究でも学習率バッチサイズスケーリング則が提唱されていて、単に大きくすればいいわけじゃないんだよ

ひよこ ひよこ

バッチサイズ選びも奥が深いんだね……!

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

しかもバッチサイズを学習の途中で変える「ウォームアップ」テクニックもあるよ。最初は小さいバッチで広く探索して、後半は大きいバッチで安定させる、なんて使い分けもプロはやっているんだ

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「ミニバッチ」って出てきたら「学習データを小分けにして効率よく学習する方法」と思えればだいたいOK!
📖 おまけ:英語の意味
「Mini-Batch」 = 小さなひとかたまり
💬 「batch」はパンを焼くときの「一窯分」が語源だよ。データを一窯分ずつ処理するイメージだね
← 用語集にもどる