Stanford 大学が 2023 年に提案した二次情報活用型のオプティマイザ。ヘシアン行列の対角近似を用いてパラメータごとの曲率を推定し、曲率に応じた適応的クリッピングで更新量を制御する。GPT-2 規模の実験で AdamW 比 2 倍の収束速度を達成し、計算オーバーヘッドは約 5% に抑えた。
PC構成ビルダーで最適なパーツを選択
Sophia(Second-order Clipped Stochastic Optimization)は、2023 年に Stanford 大学の Hong Liu らが論文「Sophia: A Scalable Stochastic Second-order Optimizer for Language Model Pre-training」で提案したオプティマイザである。従来の二次最適化手法(L-BFGS、K-FAC 等)が大規模モデルではメモリ・計算コストが膨大になる問題を、ヘシアン対角の確率的推定とクリッピングで解決した。
Sophia のコアアイデアは「損失関数の曲面の曲率(二次微分)」を活用する点にある:
直感的には、Adam は「勾配がどれくらいブレるか」で学習率を調整するが、Sophia は「損失関数がどれくらい急カーブか」で調整する。損失関数の形状をより直接的に反映するため、理論的に効率的な更新が可能になる。
Sophia の更新は以下のステップで構成される:
ヘシアン対角の推定は毎ステップではなく k=10 ステップごとに行うことで、計算オーバーヘッドを約 5% に抑える。
Stanford の GPT-2 規模(125M〜770M パラメータ)の実験結果:
| 指標 | AdamW | Sophia-H | Sophia-G | 改善率 |
|---|---|---|---|---|
| 同一 Loss 到達ステップ | 100K | 50K | 53K | 約 2 倍高速 |
| 同一ステップ数での Loss | 3.08 | 2.95 | 2.97 | -4.2% |
| Wall-clock 時間(同一 Loss) | 基準 | -47% | -45% | 約 2 倍高速 |
| メモリオーバーヘッド | 0% | +15% (h 保持) | +15% | 微増 |
| 計算オーバーヘッド | 0% | +5% | +5% | 微増 |
Sophia-H はハッチンソン法、Sophia-G はガウス-ニュートン法によるヘシアン推定の variant。
# sophia-optimizer パッケージ
# pip install sophia-optimizer
from sophia import SophiaG
optimizer = SophiaG(
model.parameters(),
lr=2e-4, # AdamW と同程度
betas=(0.965, 0.99),
rho=0.04, # クリッピング閾値
weight_decay=0.1,
hessian_interval=10 # ヘシアン推定頻度
)
# 学習ループ内でヘシアン推定ステップが必要
for step, batch in enumerate(dataloader):
loss = model(batch)
loss.backward()
if step % 10 == 0:
optimizer.update_hessian() # k ステップごとにヘシアン更新
optimizer.step()
optimizer.zero_grad()
Sophia の課題は以下の通り:
A: GPT-2 規模(125M-770M パラメータ)の実験では、同一損失値に到達するまでのステップ数が約半分で、Wall-clock 時間も約 47% 短縮された。ただしこの結果は比較的小規模なモデルでの検証であり、7B-70B 規模での再現は 2026 年時点で限定的。二次情報の恩恵はモデルが大きくなるほど増す理論的根拠があるが、実証は今後の課題。
A: はい、約 15% 増加する。AdamW は m(一次モーメント)と v(二次モーメント)を保持するが、Sophia は m に加えてヘシアン対角 h を保持する。ただし h の更新は k ステップごとなので、計算コストの増加は約 5% に抑えられる。7B モデルで AdamW の 56 GB に対し Sophia は約 64 GB。
A: 理論的には可能だが、ファインチューニングでの大規模検証は限定的。SFT やLoRA ではエポック数が少ない(2-3)ため、Sophia の収束速度の優位性が発揮されにくい。事前学習のような長時間の学習で最も効果を発揮する設計。