バッチサイズと学習率のスケーリング則
バッチを増やしても精度が落ちる原因が腑に落ちる。線形/平方根スケーリングと勾配ノイズスケールで学習率の合わせ方を理屈から決め、臨界バッチサイズとLARS/LAMBまで一本で押さえる。
- 1.バッチを大きくしたら学習率も上げる。理論上はバッチ比に比例(線形)、SGD系では平方根が当てはまる場面もあり、どちらが妥当かは勾配ノイズの寄与で決まる。
- 2.勾配ノイズスケール(critical batch size)が境界。これより小さいバッチでは線形スケーリングが効き、超えると1ステップあたりの効率改善が頭打ちになり計算が無駄になる。
- 3.大バッチは汎化ギャップを生みやすい。LARS/LAMBは層ごとに学習率を正規化してこれを緩和し、ResNetやBERTを数千〜数万バッチで学習可能にした。
なぜバッチを変えると学習率も変えるのか
ミニバッチSGDは、バッチ B 個のサンプルで勾配を平均し、その推定値でパラメータを1歩更新します。バッチを大きくすると勾配推定の 分散が下がる(標本平均の分散は 1/B に比例)一方、1エポックあたりの更新回数は減ります。ここで学習率 η を据え置くと、更新の進み方が変わってしまう。だから「バッチを変えたら学習率も合わせる」必要が生じます。問題は どの比率で合わせるかで、ここに2つの代表的なスケーリング則があります。土台は 勾配降下法 と SGD/Adam の系譜 を前提にします。
線形スケーリング則:1エポックの「実効的な歩幅」を保つ
最も広く使われるのが 線形スケーリング則 です。バッチを k 倍にしたら学習率も k 倍にする、というシンプルな規則です。
B → k·B のとき η → k·η
直感はこうです。バッチが k 倍になると1エポックの更新回数は 1/k に減ります。各更新を k 倍大きく踏めば、エポック全体での総移動量がほぼ揃う。より厳密には、k 個の連続するSGDステップを「同じ重みで評価した勾配の和」で1ステップにまとめたと近似でき、その近似が成り立つ範囲では大バッチ1歩 ≒ 小バッチ k 歩になります。画像分類で大バッチ学習を成立させた研究(ImageNetの1時間学習)でも、この規則に加え学習初期の 学習率ウォームアップ を併用しています。
線形スケーリングは「k ステップの間、勾配がほぼ同じ向き」という近似に依存します。学習率を上げすぎると1歩で損失曲面の局所構造を飛び越え、近似が崩れて発散します。だから大バッチでは、最初の数百〜数千ステップで η を0から目標値へ線形に上げるウォームアップがほぼ必須です。
平方根スケーリング則:ノイズの大きさを保つ
もう一つが 平方根スケーリング則 で、B を k 倍にしたら η を √k 倍にします。
B → k·B のとき η → √k·η
根拠は分散の側にあります。SGDの更新を確率微分方程式(連続時間の拡散過程)で近似すると、解の定常分布の「広がり」は比 η/B で決まります。この 温度 に相当する量を一定に保つには、B を k 倍したとき η も k 倍する必要があり、これは実は線形則と一致します。一方、1ステップで重みに乗る勾配ノイズの標準偏差を一定に保つ立場では η ∝ √B となり、平方根則が導かれます。つまり 何を保存量とみなすか で結論が変わるのです。
| 観点 | 線形スケーリング | 平方根スケーリング |
|---|---|---|
| 規則 | η ∝ B | η ∝ √B |
| 保とうとする量 | エポックあたりの実効的移動量/SDEの温度 η/B | 1ステップの勾配ノイズの大きさ |
| よく当てはまる場面 | 小〜中バッチ、勾配ノイズが支配的な領域 | ノイズが小さくなった領域・一部のSGD設定 |
| 注意点 | 大バッチで上げすぎると発散、ウォームアップ必須 | 大バッチで歩幅不足になり収束が遅れることがある |
勾配ノイズスケールと臨界バッチサイズ
2つの則の優劣を決める鍵が 勾配ノイズスケール です。バッチ勾配は「真の勾配(信号)+ サンプリングによるノイズ」と分解できます。バッチが小さいとノイズが信号を覆い、大きくするほどノイズが平均化されて消えていく。両者が拮抗するバッチサイズが 臨界バッチサイズ(critical batch size) B_crit です。
B ≪ B_crit : ノイズ支配。Bを増やすほど勾配が素直に良くなり、
1ステップで進める量が比例して増える(線形則が効く領域)
B ≈ B_crit : 信号とノイズが同程度。スケーリングの利得が鈍り始める
B ≫ B_crit : 信号支配。Bを増やしても勾配はほぼ変わらず、
ステップ数は減らないのに計算だけ増える(効率の壁)
B_crit の含意は実務的に重要です。B_crit 以下なら、バッチを増やすほど 必要なステップ数がほぼ反比例で減るため、データ並列で並列度を上げれば学習を時間短縮できます。しかし B_crit を超えると、追加のサンプルは勾配をほとんど改善せず、計算(FLOPs)だけ増えて 時間あたりの学習効率が頭打ちになります。重要なのは B_crit が固定値ではなく、学習が進むほど大きくなる点です。損失が下がると勾配ノイズスケールが上がるため、序盤は小バッチ、終盤は大バッチへ動的に増やすと効率がよい、という設計指針が出てきます。
勾配ノイズスケールは、おおまかには「勾配の共分散のトレース(各成分の分散の総和)」を「真の勾配の二乗ノルム」で割った比で推定できます。各タスク・各時点で計測でき、複数バッチサイズで実走しなくても B_crit の目安が得られるのが利点です。計算規模の見通しは スケーリング則 の議論とも接続します。
大バッチの汎化ギャップ
理論上は線形スケーリングで大バッチでも同じ精度に届くはずですが、実際には大バッチ学習が テスト精度を落とす 現象が繰り返し観測されてきました。これが 汎化ギャップ(generalization gap) です。
主要な説明は 解の鋭さ(sharpness) にあります。小バッチSGDは勾配ノイズが大きく、損失曲面の鋭い谷(sharp minima)から弾き出され、平坦な谷(flat minima) に落ち着きやすい。平坦な谷は重みが多少ずれても損失が増えにくく、訓練分布とテスト分布のズレに強い=汎化しやすいと考えられています。大バッチはノイズが小さくこの探索効果が弱まるため、鋭い谷にはまりやすい。汎化と表現力のトレードオフという観点は バイアス・バリアンスと二重降下 とも通じます。
ギャップは固定的な宿命ではありません。学習率を十分上げる(線形スケーリングを正しく適用)、ウォームアップとコサイン減衰を併用する、学習を長めに回す、といった工夫の多くで縮小します。「大バッチが本質的に劣る」のではなく「ハイパーパラメータが合っていない」場合が相当ある、という報告が積み重なっています。
LARS / LAMB:層ごとに学習率を正規化する
大バッチ学習を数千〜数万まで押し上げたのが LARS(Layer-wise Adaptive Rate Scaling) と、その Adam 版である LAMB です。動機は、層ごとに「重みの大きさ」と「更新量の大きさ」の比がバラバラで、グローバルな1つの η では一部の層が踏みすぎ/踏み足りなくなる点にあります。
LARS は層 l ごとに、重みノルムと勾配ノルムの比から 信頼比(trust ratio) を作り、それで学習率を局所的にスケールします。
# 層 l の更新(概念式、weight decay 等は簡略化)
trust_l = ‖w_l‖ / ‖g_l‖
w_l ← w_l - η · trust_l · g_l
これにより、重みが大きく勾配が小さい層は歩幅を伸ばし、その逆の層は縮める。全層で「相対的な更新量」が揃うため、巨大バッチでも特定層が暴走せず安定します。LARS はResNetを数万バッチで、LAMB はBERTを巨大バッチで短時間学習することを可能にしました。LAMB は Adam の適応更新に同じ層別の信頼比を掛ける構造で、適応最適化と層別正規化を両立させます。これらの並列化基盤は 分散学習 の前提知識とあわせて理解すると実装像が掴めます。
- 線形則(η∝B)と平方根則(η∝√B)の違いは「何を保存量とみなすか」。SDEの温度 η/B を保てば線形則になる。
- 臨界バッチサイズ未満では線形則が効き、超えると1ステップの利得が頭打ち。
B_critは学習が進むと大きくなる。 - 大バッチの汎化ギャップは鋭い谷へ落ちやすいことが一因。学習率・ウォームアップの適正化やLARS/LAMBで緩和できる。
まとめ:保存量とノイズで考える
バッチサイズと学習率の関係は、暗記すべき定数ではなく 何を一定に保つかの選択 です。エポックあたりの移動量やSDEの温度 η/B を保てば線形スケーリング、1ステップのノイズを保てば平方根スケーリングが導かれます。どちらが妥当かは勾配ノイズスケールと臨界バッチサイズで決まり、B_crit 未満では大バッチが素直に高速化を生み、超えると計算が無駄になります。大バッチで生じやすい汎化ギャップは鋭い谷の問題として理解でき、学習率の適正化・ウォームアップ・LARS/LAMB の層別正規化で実用的に克服できます。バッチを動かすときは必ず「学習率・ウォームアップ・正則化」を連動して見直す——これが大規模学習を安定させる基本姿勢です。
AI/機械学習 Article
バッチサイズと学習率のスケーリング則を実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
最適化
比較で見る軸
難易度: advanced / カテゴリ: AI/機械学習 / タグ数: 5
導入後に効く点
勾配ノイズスケール(critical batch size)が境界。これより小さいバッチでは線形スケーリングが効き、超えると1ステップあたりの効率改善が頭打ちになり計算が無駄になる。
先に潰すリスク
用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。
- 難易度
- advanced
- カテゴリ
- AI/機械学習
- タグ数
- 5
判断チェックリスト
- 自社の用途が「最適化 / バッチサイズ」に近いか確認する。
- 強みである「バッチを大きくしたら学習率も上げる。理論上はバッチ比に比例(線形)、SGD系では平方根が当てはまる場面もあり、どちらが妥当かは勾配ノイズの寄与で決まる。」が本当に評価軸になるか確認する。
- 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。