【ミニバッチこうばいこうかほう】

ミニバッチ勾配降下法 とは?

最終更新:
💡 少人数チームで素早く判断を積み重ねる、賢い会議スタイル

訓練データの小さなまとまりから損失の勾配を計算し、その勾配を使ってモデルのパラメーターを更新する最適化手法。バッチサイズや学習率を調整しながら、更新を繰り返す。

📌 このページのポイント
少量のデータで勾配を求め、更新 訓練データ12件を一巡する例 フルバッチ 12件で更新 更新1回 1件ずつ 1件で更新 更新12回 ミニバッチ 4件で更新 更新3回 ミニバッチの1回分 4件選ぶ 勾配を計算 重みを更新 次の4件で繰り返す
色の付いたデータが1回の更新に使う件数。12件を重複・省略なく一巡する仮の比較で、ミニバッチ4件なら更新は3回。下の矢印は選択・勾配計算・更新・次のバッチへの順序。損失が毎回下がるという意味ではない。
ひよこ ひよこ
勾配降下法ってデータ全部使うんじゃないの?
ペンギン先生 ペンギン先生
全データで勾配を求めるフルバッチ、1件で求める方式、少量をまとめるミニバッチに分けて考えられるよ。SGDという名前は、1件ずつだけでなくミニバッチを使う学習にも使われるので、名称だけで更新に使う件数を決めつけないようにしよう。
ひよこ ひよこ
ミニバッチって何件くらいのまとまりなの?
ペンギン先生 ペンギン先生
件数に固定の範囲はないよ。バッチサイズを、モデルやGPUメモリなどに合わせて決めるんだ。図は12件を4件ずつ使う仮の例で、1回の更新に4件、1エポックで3回更新する。1エポックは訓練データを一巡する単位だよ。
ひよこ ひよこ
なんでわざわざ小分けにするの?
ペンギン先生 ペンギン先生
全データを使った勾配の計算を待たずに更新できるし、同時に扱うデータの量も抑えられるよ。複数の勾配を平均することで、独立にサンプルを選ぶなどの条件では1件だけよりばらつきが小さくなる。ただしバッチを大きくすれば必ずよい学習になるわけではないんだ。
ひよこ ひよこ
GPUとも相性がいいって聞いたんだけど、それはなんで?
ペンギン先生 ペンギン先生
複数のサンプルをまとめた行列計算などを並列に処理しやすいからだよ。ただし小さすぎると処理の効率が落ち、大きすぎるとメモリに収まらない場合がある。バッチサイズだけでなく、学習率や更新回数も合わせて評価しよう。
ひよこ ひよこ
更新のたびに損失は下がるの?
ペンギン先生 ペンギン先生
必ずではないよ。選んだバッチによって勾配が変わるし、学習率が大きすぎると不安定にもなる。全体の損失や学習に使っていないデータでの結果を確認しよう。「少量ずつだからいつも速くて安定」とは言い切れないんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「ミニバッチ勾配降下法」って出てきたら「少量ずつデータを使って効率よく学習する方法」と思えればだいたいOK!
📖 おまけ:英語の意味
「Mini-Batch Gradient Descent」 = ミニバッチ勾配降下法
💬 Gradient(勾配)とDescent(降下)で「損失の坂を下る」イメージ。Mini-Batchは「小さなまとまり」で、全データでも1件ずつでもなく中間の量を使う工夫から来ているんだよ。

参考資料

← 用語集にもどる