勾配降下法
勾配降下法は、現在のパラメーターで損失の傾きを求め、学習率 η を掛けて逆向きに進みます。1 変数なら θ ← θ − η·f′(θ)。関数と学習率によって収束、遅い進行、振動、発散が変わります。
霧の山で足元の傾きだけを頼りに下ると考えてください。小さい歩幅は遅く、大きすぎる歩幅は谷を越えて反対の高所へ着くかもしれません。この教材は 1 曲線で比べます。
勾配降下法の仕組み
凸二次関数 f(θ) = θ² を使います。横位置が変更できる θ、高さが損失です。f′(θ) = 2θ は増加方向なので、更新で引きます。
最低点を先に解く必要はありません。この曲線ではゼロから遠いほど傾きが大きく、同じ η でも長く進みます。近くなると歩幅が縮みます。ただし一般の損失で勾配の大きさを最適点までの距離とは読めません。
代入すると θ ← θ·(1 − 2η)。毎回同じ倍率です。|1 − 2η| < 1 ならゼロへ近づき、1 より大きければ非ゼロ初期値の絶対値が増えます。画面に倍率を表示し、軌跡を予測できます。
勾配降下法のステップ
初期設定は η = 0.25、倍率 1 − 2·0.25 = 0.5、θ = 4 から固定 6 反復です。各反復は傾きの測定と更新の 2 ステップ。
- 開始。 θ=4、
f(4)=16。右側の高所です。 - 測定。 接線の傾き
f′(4)=2·4=8。下りは左です。 - 更新。
θ ← 4 − 0.25·8 = 2、損失は 4。 - 再測定。
f′(2)=2·2=4。正のまま半分です。 - 再更新。
θ ← 2 − 0.25·4 = 1、損失は 1。
反復 3〜6 も 1 → 0.5 → 0.25 → 0.125 → 0.0625 と進み、接線と矢印が小さくなります。6 回後は、表示が収束と呼ぶ ±0.15 内です。
±0.15 は可視化の判定で、実訓練の一般的な停止条件ではありません。最終パラメーターは普通未知です。勾配ノルム、反復予算、検証損失の変化などで止めます。トレース自身は早期停止せず 6 回動きます。
学習率と軌跡
η は 0.05〜1.15、0.05 刻みです。曲線と初期値を保ち、1 − 2η だけ変えます。
- η=0.10、倍率 0.8。 理論上収束しても、6 回後は
θ = 4·0.8⁶ ≈ 1.05。表示許容範囲に届かず stalled です。この予算内で進みが足りない意味で、永久に収束しないのではありません。 - η=0.25、倍率 0.5。 毎回半分になり、6 回で許容範囲へ入ります。
- η=0.85、倍率 −0.7。 毎回ゼロを越えますが
|−0.7|<1なので、絶対値と損失は減り、振動しながら収束します。 - η=1.05、倍率 −1.1。 毎回反対側の高所へ着き、6 回後
|θ| = 4·1.1⁶ ≈ 7.09。表示範囲も広がります。1.15 は拡張範囲も越え、点を端に固定して真の θ と off the chart を表示します。
η=1.00 の前後をゆっくり動かしてください。0.95 は減衰し、1.00 は倍率 −1 で 4 ↔ −4 を続け、1.05 は振幅が増えます。η=0.50 は倍率ゼロで、4 から最低点へ 1 回で着きます。
安定条件 |1 − 2η| < 1 は、この関数で 0 < η < 1 です。上限は曲率 f″=2 に依存し、鋭い二次曲線なら安全な学習率は小さくなります。すべての問題に安全な値はありません。
実訓練は多変数、ミニバッチの雑音、非凸地形、モメンタム、Adam、学習率スケジュールも使います。本課は局所勾配から更新する基本を取り出します。
境界条件
- 最低点にいる。 θ=0 なら勾配も更新もゼロで、どの η でも固定です。
- 平坦な領域。 本例の小勾配は最低点へ近い結果ですが、一般の地形では最適点から遠い平坦部でも進行が止まり得ます。
- 安定限界。 η=1 は ±4 間を往復。η>1 は非ゼロから発散しますが、ゼロ初期値は例外です。
- 非凸地形。 局所最小へ近づく、鞍点付近や平坦部で停滞する、不適切な歩幅で収束しない場合があります。必ず谷へ落ち着く保証はありません。
よくある間違い
- 負号を落とす。
θ ← θ + η·f′(θ)は勾配上昇です。 - 同じ η を万能とする。 0.25 はここで有効でも、鋭い地形で不安定になり得ます。曲率に依存します。
- 大勾配を終了間近と読む。 この二次関数ではゼロから遠いことを示し、一般には距離へ直接換算できません。
- 損失と勾配を混ぜる。 損失は高さ、勾配は傾きです。後者の逆へ進んで前者を下げます。
- 最低点を越えれば失敗とする。 0.85 は毎回越えても収束します。この例の発散は倍率の絶対値が 1 を超えて振幅が増えるときです。