ミニバッチ学習 (G検定)

ミニバッチ学習

1. 定義と概要

ミニバッチ学習とは、訓練データ全体から一部を無作為に抽出した小さな束(ミニバッチ)ごとに勾配を計算し、その単位で更新していく学習方式です。この勾配とは、損失関数(モデルの予測が正解からどれだけずれているかを数値で表す関数)の値を小さくする方向を示す量を指します。

ミニバッチ単位で計算した勾配をもとに、パラメータ(重み。ニューラルネットワークが学習によって少しずつ調整していく数値)を更新します。この際に抽出するデータ数nはバッチサイズと呼ばれます。

全データを1回の更新に使うバッチ学習と、1件ずつ更新するオンライン学習(逐次学習)の中間にあたる折衷的な手法で、実務のディープラーニング学習ではデファクト標準として広く使われています。

従来の勾配降下法(損失が小さくなる方向へパラメータを少しずつ動かして最適化していく手法)は、訓練データ全体を使って1回だけ更新するバッチ学習と、データ1件ごとに更新するオンライン学習という両極端な手法が中心でした。

バッチ学習は勾配が安定する一方、1回の更新に全データの計算が必要なため低速でメモリ消費も大きく、大規模なデータセットでは現実的ではありません。オンライン学習は更新が速く局所最適解(全体では最良ではないが、その周辺だけを見ると最も損失が小さく見えるくぼみ)を抜け出しやすい一方、外れ値(他のデータから大きく外れた例外的な値)の影響を受けやすく学習が不安定になりがちです。

この両者の課題を折衷する形で、小さな束単位で更新するミニバッチ学習が広く採用されるようになりました。

2. 試験対策ポイント

理解するうえで中心になるのは、バッチサイズ(ミニバッチに含めるデータ数n)の大小によるトレードオフです。バッチサイズが大きいほど、1回の勾配計算に多くのデータの平均的な傾向が反映されるため勾配は安定します。ただし、1エポック(訓練データ全体を1周分学習し終える単位。詳しい定義は姉妹記事で扱います)あたりの更新回数は減り、メモリ消費量も増えます。

反対にバッチサイズが小さいほど更新回数は増え、勾配にノイズ(ばらつき)が乗ることで局所最適解を抜け出しやすくなりますが、学習は不安定になりやすい傾向があります。大小どちらに振ったときに何が変わるのかを、軸ごとに並べて確認しておきたいところです。

バッチサイズ 勾配の安定性 1エポックあたりの更新回数 あわせて起きること
大きい 多くのデータの平均的な傾向が反映され安定する 減る メモリ消費量が増える
小さい 勾配にノイズが乗り不安定になりやすい 増える 局所最適解を抜け出しやすくなる

安定性と更新回数がちょうど逆を向いている点が、この設定の悩みどころにあたります。

ミニバッチ単位で勾配降下法を行う手法はミニバッチ勾配降下法(mini-batch SGD)とも呼ばれ、確率的勾配降下法(SGD, Stochastic Gradient Descent。データを1件またはランダムな少数ずつ使って勾配を計算し、更新を繰り返していく手法)の一種として扱われます。SGDという呼称は、オンライン学習(1件ずつの更新)とミニバッチ学習の両方を指す文脈で使われる場合がある点に注意が必要です。

ミニバッチ学習はGPU(大量の計算を同時並行で処理するのが得意な演算装置)の並列計算と相性が良い手法です。GPUは行列演算(数値を格子状に並べた行列どうしのまとめ計算)を多数のコアで同時並行に処理するのが得意で、ミニバッチ単位でまとめて計算することでGPUの並列処理能力を活かせ、1件ずつ処理するより学習を高速化できます。

バッチサイズは学習率・エポック数と並ぶ代表的なハイパーパラメータ(学習を始める前に人が設定しておく調整つまみ)の一つで、慣習的に32・64・128・256といった2のべき乗の値が設定されることが多くあります。

3. 関連概念との比較・相違点

3つの学習方式は、1回の更新に使うデータ量という同じ軸の上に並びます。

方式 1回の更新に使うデータ 特徴
バッチ学習 訓練データ全体 勾配は最も安定するが計算コストとメモリ消費が大きい
ミニバッチ学習 無作為に抽出した小さな束 計算負荷を抑えながら比較的安定した勾配を得られる
オンライン学習 1件ずつ 新規データへの追従は速いが外れ値に弱く不安定になりやすい

両端にある2つの方式の性質を踏まえると、ミニバッチ学習の立ち位置がつかみやすくなります。

バッチ学習との最大の違いは、1回の更新に使うデータ量にあります。バッチ学習は訓練データ全体を使って1エポックに1回だけ更新するため勾配は最も安定しますが、計算コストとメモリ消費が大きく、大規模なデータセットには向きません。ミニバッチ学習は全データより小さい束で更新するため、この計算負荷を抑えながら比較的安定した勾配を得られる方式です。

バッチ学習の具体的な更新の仕組みは姉妹記事で詳しく扱います。

オンライン学習との最大の違いも、1回の更新に使うデータ量にあります。オンライン学習はデータ1件ごとに逐次更新するため新規データへの追従は速いものの、外れ値の影響を受けやすく学習が不安定になりがちです。

ミニバッチ学習は、バッチ学習の安定性とオンライン学習の速さの中間に位置づけられる折衷的な方式であり、この位置づけがG検定でも重要な論点になります。オンライン学習の詳しい更新の仕組みも姉妹記事で解説します。

4. ビジネス・実務での活用シナリオ

画像認識モデルの開発では、数百万枚規模の画像データセットを一度にメモリへ載せられないため、ミニバッチ単位でGPUに読み込みながら学習を回すのが標準的な運用になっています。メモリの制約下でも大規模なデータを扱えることが、実務での重要な意義です。

自然言語処理(人間の言葉をコンピュータに扱わせる技術分野)や大規模言語モデル(膨大な文章データで学習した、文章生成に強いAIモデル)の学習でも、ミニバッチ学習が広く使われます。モデルの規模や利用できるGPU数に応じてバッチサイズを調整し、学習の安定性と収束速度(学習が最適なパラメータに落ち着くまでの速さ)のバランスを取ります。

バッチサイズの設計が、学習コストと精度の両方に直結します。

需要予測やレコメンドシステムの継続学習では、日々蓄積される新規データを一定量ためてミニバッチとして取り込み、モデルを定期的に再学習する運用が取られます。この運用により、バッチ学習の安定性とオンライン学習の追従性の折衷を実現します。

5. 要点まとめ

  • ミニバッチ学習は訓練データを小さな束(ミニバッチ)に分け、その単位でパラメータを更新する方式で、抽出するデータ数nをバッチサイズと呼びます。バッチ学習とオンライン学習の中間に位置し、実務のデファクト標準になっています。
  • バッチサイズの大小にはトレードオフがあり、大きいほど勾配は安定しGPUの並列計算を活かしやすい一方、小さいほど更新回数が増え、勾配のノイズによって局所最適解を抜け出しやすくなります。
  • ミニバッチ単位の1回の更新をイテレーション(パラメータを1回更新する単位)、訓練データ全体を1周する単位をエポックと呼びます。ミニバッチ学習はこの反復の基本単位を作ります。詳細は姉妹記事で扱います。

6. 確認問題

問1ミニバッチ学習とは、訓練データ全体からランダムに抽出した少数のサンプル群(ミニバッチ)ごとに勾配を計算し、その単位でパラメータを更新する手法である。

解答・解説をみる

○ 正しい

ミニバッチ学習の定義そのものです。抽出するデータ数nはバッチサイズと呼ばれ、バッチ学習とオンライン学習の中間に位置づけられます。

問2バッチサイズを大きくするほど、GPUの並列計算を活かしやすくなり、1回の更新で計算される勾配は安定する傾向がある。

解答・解説をみる

○ 正しい

バッチサイズが大きいほど多くのデータの平均的な傾向が勾配に反映されて安定し、GPUの並列演算とも相性が良い関係にあります。ただしメモリ消費量は増え、1エポックあたりの更新回数は減ります。

問3バッチサイズを大きくするほど、パラメータの更新回数が増え、局所最適解から抜け出しやすくなる。

解答・解説をみる

× 誤り

逆向きの記述です。バッチサイズを大きくすると1エポックあたりの更新回数はむしろ減ります。正しくは、バッチサイズを小さくするほど更新回数が増え、勾配に含まれるノイズによって局所最適解を抜け出しやすくなるという関係です。