勾配降下法の基礎

🔥 Vibe プロンプト

「f(x,y)=x²+2y²における勾配降下法を可視化。等高線図とパラメータ軌道を表示。」

勾配降下法とは?

勾配降下法は、関数の最小値を見つけるための1次反復最適化アルゴリズムです。勾配の逆方向に進むことで谷底に到達します。

| 概念 | 意味 | |------|------| | 勾配 | 最も急な上昇方向(逆方向に進む) | | 学習率 (α) | ステップサイズ — 大きすぎると発散、小さすぎると低速 | | 収束 | 勾配 ≈ 0 になったら最小値に到達 | | 局所/大域 | 勾配降下法は局所最小値を発見(乱数再起動で大域探索) |

実装

import numpy as np

def gradient_descent(gradient_func, initial_w, lr=0.1, n_steps=100):
    w = initial_w.copy().astype(float)
    history = [w.copy()]
    for i in range(n_steps):
        grad = gradient_func(w)
        w = w - lr * grad
        history.append(w.copy())
        if i % 10 == 0:
            print(f"Step {i}: w={w}, f(w)={f(w):.4f}")
    return w, history

def f(w):
    return w[0]**2 + 2*w[1]**2

def grad(w):
    return np.array([2*w[0], 4*w[1]])

w0 = np.array([3.0, 4.0])
w_final, history = gradient_descent(grad, w0, lr=0.1, n_steps=50)

print(f"\n最終: w = {w_final}")
print(f"f(w) = {f(w_final):.6f}")
print(f"解析的最小値: (0, 0), f=0")

学習率の比較

| 学習率 | 結果 | 判定 | |--------|------|------| | 0.01 | 収束が遅い(50ステップでも未収束) | ❌ 小さすぎ | | 0.10 | スムーズに収束 | ✅ 適切 | | 0.50 | 速いが振動する | ⚠️ やや大きい | | 1.00 | 発散する(値が増大) | ❌ 大きすぎ |

まとめ

| 項目 | 詳細 | |------|------| | 方向 | 勾配の逆方向(最急降下) | | 学習率 (α) | ステップサイズ — 最重要ハイパーパラメータ | | 収束条件 | 勾配の大きさ ≈ 0 | | 時間計算量 | O(k × d) k=ステップ数, d=次元数 | | 課題 | 適切な学習率の選択 | | 拡張 | Momentum, Adam, RMSProp(適応的学習率) |

章のまとめ

  • コアコンセプトと原理を理解
  • 実装方法とテクニックを習得
  • 一般的な問題と解決策に精通
  • 実際のプロジェクトに適用可能

さらに読む

  • 公式ドキュメントとAPIリファレンス
  • GitHubのオープンソース例
  • 技術書とオンラインコース
  • コミュニティディスカッションと技術ブログ

実装例

基本例

# 完全な実装例を提供します

手順

  1. セットアップ: 開発環境の設定
  2. データ: 必要なデータの準備
  3. 実装: コア機能の構築
  4. テスト: 動作確認
  5. 最適化: パフォーマンスの向上

よくあるエラー

| エラー種別 | 原因 | 解決方法 | |-----------|------|---------| | コンパイル | 構文 | コードの構文を確認 | | 実行時 | 環境 | 依存パッケージの確認 | | 論理 | アルゴリズム | ステップごとのデバッグ | | パフォーマンス | 効率 | プロファイラーの使用 |

コード例

import sys

def main():
    print("Hello, World!")

if __name__ == "__main__":
    main()

参考資料

  • 公式ドキュメント
  • APIリファレンス
  • オープンソース例
  • コミュニティディスカッション

会員限定無料チュートリアル

このチャプターは登録会員限定の無料コンテンツです!ログインまたは登録してすぐにロックを解除してください。

今すぐログイン / 登録