Optimizer 比較(SGD / Momentum / Adam)
細長い谷や鞍点を持つ損失曲面の上で、同じ初期位置から SGD・Momentum・Adam の3本の最適化軌跡を同時に走らせ、収束の速さ・振動・鞍点脱出の差を見ます。等高線上をボールが転がります。
0.060
0.90
キャンバスをクリックするか、出発点マーカーをドラッグすると出発点を変更できます。
SGD
Momentum
Adam
最小点
ステップ数
—
SGD 損失 L
—
Momentum 損失 L
—
Adam 損失 L
—
損失 L の推移(縦=損失・対数感覚 / 横=ステップ)
等高線とパラメータ空間の軌跡(θ₁ × θ₂)
ニューラルネットの学習は、損失
一番素朴な SGD は
細長い谷ではSGDが谷壁で振動しがち、鞍点では勾配がほぼ0になり停滞しがちです。同じ初期点から3本を走らせ、速さ・振動・鞍点脱出の違いを見比べましょう。
L(θ) を小さくするように勾配 g = ∇L を使ってパラメータ θ を少しずつ更新する最適化です。一番素朴な SGD は
θ ← θ − η·g。Momentum は過去の更新を慣性として足し込み谷で加速します。Adam は勾配の1次・2次モーメントから方向ごとに学習率を自動調整します。細長い谷ではSGDが谷壁で振動しがち、鞍点では勾配がほぼ0になり停滞しがちです。同じ初期点から3本を走らせ、速さ・振動・鞍点脱出の違いを見比べましょう。
いま何が起きている?
ここがポイント
- SGD ──
θ ← θ − η·g。細長い谷では急な方向に過剰反応してジグザグ振動し、収束が遅い。 - Momentum ── 速度
v ← β·v − η·gに慣性を蓄え谷底方向で加速。鞍点も勢いで抜けやすいが、行き過ぎ(オーバーシュート)も起きる。 - Adam ── 1次モーメント m と2次モーメント v で方向ごとに歩幅を正規化。スケールの違う方向でも安定して進み、初期収束が速い。
- 学習率 η が大きすぎると発散、小さすぎると停滞 ── 最適な η は曲面と optimizer ごとに違う。極端な値でも発散しないよう範囲を制限しています。