二次最適化:ニュートン法と準ニュートン法
曲率を使えば学習率調整に悩まず一気に最小へ近づける。ニュートン法・L-BFGS・自然勾配/K-FACの原理と、なぜ深層学習では一次法が主流かを計算量と確率性から整理する。
- 1.ニュートン法はヘッセ行列の逆を勾配に掛け、条件数に依存しない局所2次収束を得ますが、計算とメモリがO(d^2)〜O(d^3)で大規模では非現実的です。
- 2.準ニュートン法(BFGS/L-BFGS)はセカント条件からヘッセ逆を低ランク更新で近似し、L-BFGSは直近m組の勾配差だけ保持してO(md)で済ませます。
- 3.深層学習で一次法が主流なのは、確率的勾配でヘッセ推定が雑音まみれになり、非凸で曲率が負にもなり、d=数十億でヘッセを扱えないためです。
なぜ二階情報を使うのか
勾配降下法 は勾配(一階情報)だけで進むため、谷が細長い(条件数が大きい)と直交方向にジグザグして極端に遅くなります。原因は、勾配が「どちらが下りか」は教えても「どれだけ進めばよいか(曲率)」を教えないことにあります。二次最適化は損失をその点で二次関数に近似し、その極小を一発で当てることで、座標ごとに最適な歩幅を自動で決めます。曲率の情報源がヘッセ行列です。
ニュートン法:二次近似の極小へ直行
損失 f を現在点 x のまわりでテイラー2次まで展開すると f(x+p) ≈ f(x) + g·p + (1/2) p·H·p となります。ここで g は勾配、H はヘッセ行列(二階偏微分を並べた d×d 行列)です。この二次モデルを p について最小化すると、極小条件 g + H·p = 0 から更新方向が決まります。
# ニュートン法の更新
p_k = - H_k^{-1} g_k # ヘッセ逆を勾配に掛ける
x_{k+1} = x_k + p_k # 純粋ニュートンは歩幅1
H が正定値なら p は降下方向で、二次関数なら1ステップで厳密に最小へ届きます。一般の関数でも最適解の近傍では二次収束、すなわち誤差が e_{k+1} ≈ C·e_k^2 のように二乗で縮みます(有効桁数が反復ごとに倍増する速さ)。重要なのは、H^{-1} を掛けることが座標系を等方に変換するプレコンディショニングに等しく、収束が条件数 κ に依存しなくなる点です。一次法が κ に支配されたのと対照的です。
H^{-1} を掛ける操作は、ヘッセの固有値で各方向のスケールを割り戻すことに相当します。細長い谷を球状の谷に座標変換してから勾配を下る、と捉えると分かりやすいです。変換後はどの方向も曲率が等しく、歩幅1がすべての方向で適切になります。これが「ニュートン法に学習率調整がほぼ要らない」理由です。
ニュートン法の壁:コストと非凸性
理論上は強力ですが、実装には二つの致命的な壁があります。
| 問題 | 内容 | 大規模での帰結 |
|---|---|---|
| 計算量 | ヘッセ構築 O(d^2) と逆行列/求解 O(d^3) | d=10^6 で行列が10^12要素、求解は事実上不能 |
| メモリ | 密なヘッセ d×d を保持 | 数百万次元でメモリが破綻 |
| 非凸性 | H が負の固有値を持つと p が上り方向に | 鞍点・極大へ吸い込まれ発散しうる |
| 雑音感度 | 確率的勾配だとHの推定も高分散 | 近似ヘッセが不安定で歩幅が暴れる |
非凸での暴走を防ぐため、実用版は信頼領域法(モデルを信じる半径内でだけ更新)や減衰ニュートン(H + λI と単位行列を足して正定値化、λ→∞で勾配降下に退化)で正則化します。さらに歩幅1をそのまま使わず、直線探索で歩幅を縮めます。それでも O(d^3) の求解コストは残るため、ヘッセを陽に作らず近似する動機が生まれます。
準ニュートン法とセカント条件
準ニュートン法は、ヘッセを直接計算せず、反復中に観測した勾配の変化からヘッセ(の逆)を逐次推定します。鍵は1次元のニュートン法(割線法=セカント法)の一般化です。1変数では f'' を (g_{k+1}-g_k)/(x_{k+1}-x_k) で近似しますが、これを多変数化したのがセカント条件です。
# 変位とその間の勾配変化を定義
s_k = x_{k+1} - x_k # パラメータの変位
y_k = g_{k+1} - g_k # 勾配の変化
# セカント条件:近似ヘッセ B が割線関係を満たすことを要求
B_{k+1} · s_k = y_k # 逆では H~ · y_k = s_k
セカント条件だけでは B は一意に決まらないため、「直前の近似 B_k からの変化を最小にする」という条件を加えて更新を確定させます。最も成功したのがBFGSで、対称正定値を保ちながら逆行列 H~(B^{-1} に相当)を直接、ランク2の更新で書き換えます。逆行列を維持するので、毎反復で O(d^3) の逆行列計算が不要になり、行列ベクトル積の O(d^2) で済みます。
更新が正定値を保つには曲率条件 s_k·y_k > 0 が必要です。強凸なら自動的に満たされ、非凸では直線探索のWolfe条件でこれを強制します。これにより近似ヘッセが常に降下方向を生み、ニュートン法の非凸での暴走を構造的に避けられます。
L-BFGS:行列を持たずに大規模へ
BFGS でも d×d の密行列 H~ を保持するため、メモリが O(d^2) で大規模には不向きです。L-BFGS(Limited-memory BFGS)はこれを解消します。発想は、近似ヘッセ逆を陽に保持せず、直近 m 組の {s_k, y_k} ペアだけ記憶し、必要な「H~ · g」という積を二段ループ(two-loop recursion)で再構成することです。
# L-BFGS:行列を作らず H~·g を計算(two-loop recursion)
# 保持するのは直近 m 組の (s_i, y_i) のみ。通常 m = 5〜20
q = g
for i = k-1 down to k-m: # 第1ループ:右から作用
a_i = (s_i·q) / (y_i·s_i)
q = q - a_i · y_i
r = (s·y / y·y) · q # 初期ヘッセスケーリング
for i = k-m up to k-1: # 第2ループ:左から補正
b = (y_i·r) / (y_i·s_i)
r = r + (a_i - b) · s_i
# r ≈ H~·g が更新方向(の符号反転前)
これでメモリは O(md)、1反復の計算も O(md) に収まり、d が数百万でも動きます。m が大きいほど曲率を多く覚えますが、古いペアは現在の曲率と乖離するため m は小さく保つのが定石です。L-BFGS はバッチ(全データで勾配が正確な)設定の凸〜準凸問題で一次法を大きく上回り、ロジスティック回帰やCRF、フルバッチ最適化の定番です。
自然勾配とK-FAC
ニュートン法がヘッセ(損失の曲率)で前処理するのに対し、自然勾配法はフィッシャー情報行列 F で前処理します。F はパラメータ変化が出力分布をどれだけ変えるか(KLダイバージェンスの曲率)を測る行列で、更新 p = -F^{-1} g は「分布空間で見て最急降下」になります。確率モデルの幾何(情報幾何)に沿うため、パラメータの取り方に依存しない自然な方向を与えます。
問題は F も d×d で逆行列が非現実的なこと。**K-FAC(Kronecker-Factored Approximate Curvature)**は、ニューラルネットの各層の F を二つの小さな行列のクロネッカー積 F ≈ A ⊗ G(A は入力の共分散、G は出力勾配の共分散)で近似します。クロネッカー積は (A⊗G)^{-1} = A^{-1}⊗G^{-1} と逆が因子ごとに取れるため、巨大な逆行列が二つの小行列の逆に分解され、層単位で扱える計算量に落ちます。
K-FACや自然勾配は1ステップの進みは大きいものの、曲率推定(共分散の蓄積・逆行列)のオーバーヘッドが重く、ウォールクロック時間ではAdamに勝てない場面が多くあります。GPUは大バッチの行列積に最適化されており、追加の逆行列計算はその利点を相殺しがちです。
なぜ深層学習では一次法が主流か
理論的優位がありながら、現代の深層学習は SGD と Adam という一次法が圧倒的に主流です。理由は単一ではなく、深層学習特有の三条件が重なるためです。
| 要因 | 二階法に不利な理由 |
|---|---|
| 次元 d | LLMでd=10^9〜10^12。ヘッセ/フィッシャーの逆は形成すら不能、近似でも重い |
| 確率的勾配 | ミニバッチ勾配は雑音入り。曲率推定はさらに高分散で、H^{-1}が雑音を増幅し不安定 |
| 非凸性 | 鞍点・負曲率が遍在。素のニュートン法は鞍点へ引き寄せられ、正則化が必須 |
| 計算/通信効率 | GPUの大バッチ行列積と相性が悪く、分散学習では曲率の集約が通信ボトルネックに |
決定的なのは確率性と次元の組み合わせです。二次収束はフルバッチで正確な勾配・ヘッセがあって初めて意味を持ちますが、深層学習は確率的勾配で進むため、ヘッセを精密に当てる前に雑音が支配し、二次収束の利得が消えます。むしろ Adam のように対角の二次モーメントだけで座標ごとの実効的な条件数を粗く均す「軽量な擬似二階」が、コストと安定性の最良の妥協点になっています。L-BFGS が活きるのはフルバッチ・低雑音の凸寄り問題で、大規模分散学習(分散学習 参照)では一次法のスケーラビリティが勝ります。
- ニュートン法は
p=-H^{-1}gで局所2次収束・条件数非依存だが O(d^3)。2) 準ニュートンはセカント条件 B·s=y からヘッセ逆を低ランク近似、BFGSはランク2更新。3) L-BFGSは直近m組の(s,y)だけ保持し two-loop で O(md)。4) 自然勾配はフィッシャー Fで前処理、K-FACがクロネッカー積で近似。5) 深層で一次法が主流なのは確率的勾配・非凸・超高次元の三重苦。この5点をセットで。
まとめ
二次最適化は、損失の曲率(ヘッセ/フィッシャー)で勾配を前処理し、条件数に縛られない速い収束を得る枠組みです。ニュートン法は局所2次収束を達成しますが O(d^3) と非凸での暴走が壁になり、準ニュートン法(BFGS/L-BFGS)はセカント条件を使った低ランク近似でこれを O(md) まで軽量化します。自然勾配と K-FAC は分布空間の幾何に沿う前処理を実用的な計算量へ落とします。それでも深層学習で一次法が主流なのは、確率的勾配・非凸性・超高次元という三条件が二次法の前提を崩すためで、Adam のような対角近似が現実的な妥協点になっています。前提となる更新則と収束理論は 勾配降下法 と 凸最適化と勾配法の収束保証 を参照してください。
AI/機械学習 Article
二次最適化:ニュートン法と準ニュートン法を実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
最適化
比較で見る軸
難易度: advanced / カテゴリ: AI/機械学習 / タグ数: 6
導入後に効く点
準ニュートン法(BFGS/L-BFGS)はセカント条件からヘッセ逆を低ランク更新で近似し、L-BFGSは直近m組の勾配差だけ保持してO(md)で済ませます。
先に潰すリスク
用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。
- 難易度
- advanced
- カテゴリ
- AI/機械学習
- タグ数
- 6
判断チェックリスト
- 自社の用途が「最適化 / ニュートン法」に近いか確認する。
- 強みである「ニュートン法はヘッセ行列の逆を勾配に掛け、条件数に依存しない局所2次収束を得ますが、計算とメモリがO(d^2)〜O(d^3)で大規模では非現実的です。」が本当に評価軸になるか確認する。
- 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。