エポック・バッチサイズ えぽっく・ばっちさいず
学習回数ミニバッチイテレーションハイパーパラメータ訓練データメモリ
エポック・バッチサイズについて教えて
簡単に言うとこんな感じ!
エポックは「教科書を何周したか」、バッチサイズは「1度に何問ずつ解くか」だよ!全データを1回通して学習したら1エポック。そのとき一度に何件のデータをまとめて処理するかがバッチサイズ。大きなバッチは計算が速いけどGPUメモリを食う——この2つのバランスが学習の効率と精度を決めるんだ!
エポック・バッチサイズとは
エポック(Epoch)とは、訓練データ全体を1回使いきって学習する単位です。100枚の画像データを持つモデルが10エポック学習した場合、合計1,000回(100枚×10回)データを処理したことになります。エポック数は学習の「繰り返し回数」であり、少なすぎると未学習、多すぎると過学習につながります。
バッチサイズ(Batch Size)とは、1回のパラメータ更新で使うデータのまとまりの大きさです。全データを一度に使うフルバッチ(バッチ学習)、1件ずつ使うSGD(確率的勾配降下法)、その中間のミニバッチ(現在の主流、32〜256件が一般的)に分かれます。
この2つは密接に関連しており、1エポックに必要なパラメータ更新回数(イテレーション数)は データ件数 ÷ バッチサイズ で求められます。たとえばデータ10,000件・バッチサイズ100なら、1エポック=100イテレーションです。
用語の関係整理
| 用語 | 定義 | 例(データ1万件・バッチ100) |
|---|---|---|
| エポック | 全データを1周する単位 | — |
| バッチサイズ | 1回の更新で使うデータ数 | 100件 |
| イテレーション | 1エポック内の更新回数 | 100回(=10000÷100) |
| ステップ | イテレーションと同義のことが多い | 100ステップ/エポック |
バッチサイズの大小比較
| バッチサイズ | 勾配の安定性 | 計算速度 | メモリ使用量 | 汎化性能 |
|---|---|---|---|---|
| 小さい(8〜32) | ノイジー(不安定) | 遅い | 少ない | 高い傾向 |
| 大きい(256〜1024+) | 安定 | 速い | 多い | やや低い傾向 |
| 中程度(64〜128) | バランス | 良好 | 普通 | 良好 |
歴史と背景
- 1960〜70年代:初期のニューラルネットワーク研究ではオンライン学習(1サンプルずつ更新)が基本
- 1986年:バックプロパゲーションの実用化でミニバッチ学習の有効性が示される
- 1990年代:「バッチサイズ32〜256がバランス的に優れる」という経験則が広まる
- 2012年:AlexNetのImageNet学習でGPUを使ったミニバッチ並列処理が定着
- 2017年:「大きなバッチサイズは汎化性能が落ちる」という研究(Keskarら)が発表され、学習率との調整が重要とされる
- 2018年:「学習率をバッチサイズに比例して大きくする(Linear Scaling Rule)」というルールが普及
- 現在:大規模言語モデルの学習では数百万のバッチサイズ(トークン数)を複数GPUで並列処理するスケールまで拡大
1エポック内の学習フロー
関連する規格・RFC
| 規格・RFC番号 | 内容 |
|---|---|
| ISO/IEC 22989:2022 | AI概念・用語(機械学習の訓練プロセスを含む) |