本文へ移動

G検定(ジェネラリスト検定)

みにばっちがくしゅう

ミニバッチ学習

Mini-batch Learning

無作為に選んだ複数の事例の勾配を平均し、1回の反復につき1回だけ重みとバイアスを更新する学習法。フルバッチとSGDの中間に位置する。

詳しい説明

ミニバッチ学習とは

ミニバッチ学習(ミニバッチ確率的勾配降下法、mini-batch SGD)は、訓練データ全体ではなく、その一部をまとめた小さな集まり(ミニバッチ)ごとに重みとバイアスを更新していく学習の進め方です。

全データを見てから更新しない理由

モデルが重みとバイアスを更新する前に処理する事例の数をバッチサイズと呼び、これはハイパーパラメータの一つです。データセットのすべての事例について損失を計算してから更新する方法(フルバッチ)も考えられますが、事例が数十万件、数百万件に及ぶと現実的ではありません。そこで、更新のたびに全事例を見なくても、平均的には正しい勾配を得られる手法が使われます。ミニバッチ学習はその代表的な手法の一つです。

1回の反復で行うこと

1. 訓練データから、ミニバッチに含める事例を無作為に選ぶ
2. 選んだ各事例の勾配を求め、それらを平均する

3. 平均した勾配を使って、重みとバイアスを1回更新する

この流れが1回の反復(イテレーション)にあたり、更新は反復ごとに1回だけ行われます。

バッチサイズの範囲と位置づけ

データ点がN件あるとき、ミニバッチ学習のバッチサイズは1より大きくN未満の任意の数を取ります。バッチサイズ1で更新する確率的勾配降下法(SGD)と、N件すべてを使うフルバッチとの間に位置する、折衷的な方法です。

バッチサイズの大きさによって振る舞いが変わります。

  • バッチサイズが小さい場合: SGDに近い振る舞いになる
  • バッチサイズが大きい場合: フルバッチの勾配降下法に近い振る舞いになる

1バッチあたり何件の事例を入れるかは、扱うデータセットと使える計算資源に応じて決めます。

ノイズは悪いものとは限らない

無作為に選んだ一部の事例から勾配を求めるため、更新にはノイズが混じります。ノイズは取り除くべきものと考えがちですが、ある程度のノイズはむしろ役に立つことがあります。モデルの汎化を助けたり、ニューラルネットワークで最適な重みとバイアスを見つけたりする助けになりうるからです。

エポックと反復回数の関係

エポックとは、モデルが訓練セットのすべての事例を1回ずつ処理し終えることを指します。たとえば訓練セットが1,000事例、ミニバッチサイズが100事例であれば、1エポックを終えるまでに10回の反復が必要です。訓練事例数をミニバッチサイズで割った数が、1エポックに必要な反復回数の目安になります。

試験で問われること

G検定

  • ミニバッチ学習はフルバッチとSGDの折衷であり、データ点がN件あるときバッチサイズは1より大きくN未満の任意の数を取るという範囲を、SGDのバッチサイズ1と区別して押さえておく。
  • 各反復では、ミニバッチに含める事例を無作為に選び、それらの勾配を平均してから、重みとバイアスを1回の反復につき1回だけ更新するという手順の順番を確認しておく。
  • バッチサイズが小さいほどSGDに近い振る舞いになり、大きいほどフルバッチの勾配降下法に近い振る舞いになるという対応関係を、取り違えて逆に覚えないよう注意する。
  • 訓練セット1,000事例でミニバッチサイズ100なら1エポックに10回の反復が必要になるように、エポックと反復回数とミニバッチサイズの関係を計算できるようにしておく。
  • バッチサイズは重みとバイアスの更新前に処理する事例数を指すハイパーパラメータで、データセットと計算資源に応じて決めること、ある程度のノイズは汎化を助けうることを確認する。

最終更新日: 2026/09/23