σμimplied vol · KKmax(S−K,0)udβρᵢⱼfat tailsPnL · drawdownyield · TdSₜ = μSₜ dt + σSₜ dWₜC = S·N(d₁) − K·e⁻ʳᵀ·N(d₂)σₚ² = wᵀΣwd₁ = [ln(S/K) + (r + σ²⁄2)T] ⁄ σ√T∂V/∂t + ½σ²S²·∂²V/∂S² + rS·∂V/∂S − rV = 0Sharpe = (Rₚ − R_f) ⁄ σₚVaR₉₉ = μ − 2.33σρ = Cov(X,Y) ⁄ σₓσᵧE[Rₚ] = Σ wᵢ·E[Rᵢ]φ(x) = e^(−x²/2) ⁄ √2πE[Rᵢ] = R_f + βᵢ(E[Rₘ] − R_f)dXₜ = θ(μ − Xₜ)dt + σ dWₜσ²ₜ = ω + α·ε²ₜ₋₁ + β·σ²ₜ₋₁C − P = S − K·e⁻ʳᵀΔ = ∂V/∂S Γ = ∂²V/∂S²p = (e^(rΔt) − d) ⁄ (u − d)rₜ = ln(Pₜ ⁄ Pₜ₋₁)E[Xₜ₊₁ | ℱₜ] = Xₜf* = (bp − q) ⁄ bz = (x − μ) ⁄ σP(N=k) = λᵏe^(−λ) ⁄ k!Θ = −∂V/∂Tν = S·φ(d₁)·√Tmin wᵀΣw s.t. wᵀμ = μ*∫Σ∂∞λ
uantCraft Academyロードマップスキル
Ctrl K
AO
+1.2k 人の学習者
ログイン参加する ↗
ロードマップスキル
AO
+1.2k 人の学習者
ログイン
  • English
  • Français
  • Español
  • العربية
  • Português
  • Deutsch
  • 日本語
  • 中文
σμimplied vol · KKmax(S−K,0)udβρᵢⱼfat tailsPnL · drawdownyield · TdSₜ = μSₜ dt + σSₜ dWₜC = S·N(d₁) − K·e⁻ʳᵀ·N(d₂)σₚ² = wᵀΣwd₁ = [ln(S/K) + (r + σ²⁄2)T] ⁄ σ√T∂V/∂t + ½σ²S²·∂²V/∂S² + rS·∂V/∂S − rV = 0Sharpe = (Rₚ − R_f) ⁄ σₚVaR₉₉ = μ − 2.33σρ = Cov(X,Y) ⁄ σₓσᵧE[Rₚ] = Σ wᵢ·E[Rᵢ]φ(x) = e^(−x²/2) ⁄ √2πE[Rᵢ] = R_f + βᵢ(E[Rₘ] − R_f)dXₜ = θ(μ − Xₜ)dt + σ dWₜσ²ₜ = ω + α·ε²ₜ₋₁ + β·σ²ₜ₋₁C − P = S − K·e⁻ʳᵀΔ = ∂V/∂S Γ = ∂²V/∂S²p = (e^(rΔt) − d) ⁄ (u − d)rₜ = ln(Pₜ ⁄ Pₜ₋₁)E[Xₜ₊₁ | ℱₜ] = Xₜf* = (bp − q) ⁄ bz = (x − μ) ⁄ σP(N=k) = λᵏe^(−λ) ⁄ k!Θ = −∂V/∂Tν = S·φ(d₁)·√Tmin wᵀΣw s.t. wᵀμ = μ*∫Σ∂∞λ
uantCraft Academyロードマップスキル
Ctrl K
AO
+1.2k 人の学習者
ログイン参加する ↗
ロードマップスキル
AO
+1.2k 人の学習者
ログイン
  • English
  • Français
  • Español
  • العربية
  • Português
  • Deutsch
  • 日本語
  • 中文
Optimization スキル›モジュール 3 · 凸性と曲率›トピック 3.2·~55 分中級

ニュートン法と準ニュートン法

スキル上の位置モジュール 3/5 · トピック 2/2
3.2 ニュートン法と準ニュートン法
—ラボスコア— / 100合計XP—連続日数—

曲率を使う

勾配降下法が知っているのは傾きだけです。ニュートン法は曲率も使います。現在の点の近くで fff を、値・勾配・ヘッセ行列が同じ2次関数に置き換え、その2次関数の最小点へ一気に跳びます。ステップは w←w−H−1g\mathbf w\leftarrow\mathbf w-H^{-1}\mathbf gw←w−H−1g です。厳密に2次の関数なら、条件数にかかわらず1ステップで最小値に着きます。滑らかな関数の最小値の近くでは収束は2次的で、誤差が1ステップごとにほぼ2乗されるため、正しい桁数がおよそ倍になります。

wk+1=wk−H(wk)−1∇f(wk),∥wk+1−w∗∥ ≲ C ∥wk−w∗∥2\mathbf w_{k+1}=\mathbf w_k-H(\mathbf w_k)^{-1}\nabla f(\mathbf w_k),\qquad \lVert\mathbf w_{k+1}-\mathbf w^{*}\rVert\ \lesssim\ C\,\lVert\mathbf w_k-\mathbf w^{*}\rVert^{2}wk+1​=wk​−H(wk​)−1∇f(wk​),∥wk+1​−w∗∥ ≲ C∥wk​−w∗∥2(1)
e^x − 2x へのニュートン法f(x)=ex−2xf(x)=e^x-2xf(x)=ex−2x を最小化します。最小点は x∗=ln⁡2=0.693147x^{*}=\ln2=0.693147x∗=ln2=0.693147 で、f′=ex−2f'=e^x-2f′=ex−2、f′′=exf''=e^xf′′=ex です。x0=0x_0=0x0​=0 から、x1=0−(−1)/1=1x_1=0-(-1)/1=1x1​=0−(−1)/1=1、次に x2=1−0.7183/2.7183=0.7358x_2=1-0.7183/2.7183=0.7358x2​=1−0.7183/2.7183=0.7358、x3=0.6940x_3=0.6940x3​=0.6940、x4=0.693148x_4=0.693148x4​=0.693148 となります。誤差 0.307, 0.0426, 0.0009, 4⋅10−70.307,\ 0.0426,\ 0.0009,\ 4\cdot10^{-7}0.307, 0.0426, 0.0009, 4⋅10−7 はどんな固定の係数よりも速く縮みます。2変数では、f=(x−1)2+2(y+2)2f=(x-1)^2+2(y+2)^2f=(x−1)2+2(y+2)2 の点 (3,0)(3,0)(3,0) で g=(4,8)\mathbf g=(4,8)g=(4,8)、H=diag(2,4)H=\mathrm{diag}(2,4)H=diag(2,4) なので、ステップは −H−1g=(−2,−2)-H^{-1}\mathbf g=(-2,-2)−H−1g=(−2,−2) で、1ステップで最小点 (1,−2)(1,-2)(1,−2) に着きます。

ニュートン法には代償があります。パラメータが nnn 個ならヘッセ行列は n2n^2n2 個の要素を持ち、それを使った求解には約 n3n^3n3 回の演算が必要で、数百個なら問題ありませんが数百万個では不可能です。最小点から遠い場所や HHH が正定値でない場所ではニュートンステップが上り坂を向くこともあるため、実用版は直線探索でステップを減衰させます。準ニュートン法はコストをかけずに速さの大部分を保ちます。BFGS は観測された変化 s=wk+1−wk\mathbf s=\mathbf w_{k+1}-\mathbf w_ks=wk+1​−wk​ と y=gk+1−gk\mathbf y=\mathbf g_{k+1}-\mathbf g_ky=gk+1​−gk​ からヘッセ行列の逆行列の近似を作り、セカント条件 Bs=yB\mathbf s=\mathbf yBs=y を課します。勾配だけで済み、1ステップのコストは O(n2)O(n^2)O(n2)、収束は超1次です。L-BFGS は直近 mmm 組(通常5〜20)だけを保存するのでメモリは O(mn)O(mn)O(mn) で、SciPy の既定のオプティマイザのように、滑らかなキャリブレーションや最尤推定の定番として使われます。

  • ニュートン法:w←w−H−1g\mathbf w\leftarrow\mathbf w-H^{-1}\mathbf gw←w−H−1g。2次関数なら1ステップ、最小点の近くでは2次収束。
  • BFGS:勾配の差から逆ヘッセ行列の近似を学ぶので、2階微分は不要です。
  • L-BFGS:直近の数組だけを保持するので、多数のパラメータにも使えます。
ニュートン法には安全策が必要素のニュートン法は、悪い開始点から行き過ぎたり発散したりすることがあります。ライブラリの実装は直線探索や信頼領域を加え、ヘッセ行列が正定値でないときは勾配ステップに戻ります。キャリブレーションのために、こうした安全策のない素のニュートンのループを自作しないでください。

ラボ:採点される内容

  • 最初のニュートンステップ15点
  • 2番目のニュートンステップ15点
  • 2変数でのニュートンステップ15点
  • 2次関数でのステップ数15点
  • セカント条件15点
  • 手法と考え方10点
  • 巨大な問題で厳密なニュートン法が避けられる理由15点
0/ 7問回答済み
問題
1数値で答える15点未回答

f(x)=ex−2xf(x)=e^x-2xf(x)=ex−2x を x0=0x_0=0x0​=0 からニュートン法で最小化します。f′=ex−2f'=e^x-2f′=ex−2、f′′=exf''=e^xf′′=ex のとき x1x_1x1​ はいくつですか。

x1=x1 =x1=許容:± 0.01
2数値で答える15点未回答

x1=1x_1=1x1​=1 から続けます。e1=2.71828e^1=2.71828e1=2.71828 として x2x_2x2​ はいくつですか。小数第4位まで答えてください。

x2=x2 =x2=許容:± 0.001
3数値で答える15点未回答

f=(x−1)2+2(y+2)2f=(x-1)^2+2(y+2)^2f=(x−1)2+2(y+2)2 の点 (3,0)(3,0)(3,0) で勾配は (4,8)(4,8)(4,8)、H=diag(2,4)H=\mathrm{diag}(2,4)H=diag(2,4) です。ニュートンステップを1回行った後の yyy 座標はいくつですか。

y=y =y=許容:± 0.01
4選択15点未回答

狭義凸な2次関数を厳密に最小化するのにニュートンステップは何回必要ですか。

5選択15点未回答

s=wk+1−wk\mathbf s=\mathbf w_{k+1}-\mathbf w_ks=wk+1​−wk​、y=gk+1−gk\mathbf y=\mathbf g_{k+1}-\mathbf g_ky=gk+1​−gk​ のとき、BFGS のヘッセ行列近似 BBB はどの関係を課しますか。

6対応づけ10点未回答

各手法をその要点に結び付けてください。

左の各項目に対応するものを選んでください。

勾配降下法
ニュートン法
BFGS
L-BFGS
7言葉で説明する15点未回答

1〜2文で、数百万個のパラメータを持つ問題で厳密なニュートン法が使われない理由を説明してください。

数学モードキーボードまたは LaTeX で入力問題1/7 · Ctrl ⏎ で確認

コードを実行するにはログインしてください。

レクチャーはすべて無料で読めます。コードの実行、テスト、ラボの提出にはアカウントの作成かログインが必要です。

  • ブラウザ内IDEとbashターミナル。インストール不要
  • 即時採点、XP、スキルでの現在地
アカウントを作成ログイン
または
GitHubで続ける