σμ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
  • 日本語
  • 中文
Bayesian Inference 学习路线›模块 2 · 对后验分布采样›主题 2.1·~1小时 5分钟高级

从零实现 Metropolis-Hastings

路线进度模块 2/3 · 主题 1/2
2.1 从零实现 Metropolis-Hastings
—实验得分— / 100总 XP—连续天数—

探索无法写出的后验

后验往往只能写到相差一个常数,即先验乘似然,既无法求和,也没法用代数求均值。Metropolis-Hastings 构造一个随机游走,访问各处的频率与后验成正比。在当前点 θ\thetaθ,提出一个附近的点 θ′\theta'θ′,比如 θ\thetaθ 加一点正态噪声。用比值 r=p(θ′)/p(θ)r=p(\theta')/p(\theta)r=p(θ′)/p(θ) 比较后验高度:若 r≥1r\ge1r≥1,新点至少一样好,就移动;否则以概率 rrr 移动。若不移动,就把当前点再记一次。未知的常数在两个高度中相同,所以在比值中抵消,这就是方法成立的原因。

r=p(θ′)p(θ),α=min⁡(1, r),ln⁡α=min⁡(0, ln⁡p(θ′)−ln⁡p(θ))r=\frac{p(\theta')}{p(\theta)},\qquad \alpha=\min(1,\,r),\qquad \ln\alpha=\min\big(0,\ \ln p(\theta')-\ln p(\theta)\big)r=p(θ)p(θ′)​,α=min(1,r),lnα=min(0, lnp(θ′)−lnp(θ))(1)

访问过的点的列表就是链。经过称为 burn-in 的预热之后,它的表现就像来自后验的样本,所以均值和区间可以直接由链的平均值和分位数得到。步长是最主要的旋钮:太小,几乎每次移动都被接受,但链爬得很慢;太大,大多数提议落在差的位置而被拒绝,链就原地不动。好的链大约接受四分之一到一半的提议。一定要看链本身:画出来,并从不同起点开始,看它们是否一致。

手算一次提议设后验高度为 p(θ)∝θ18(1−θ)10p(\theta)\propto\theta^{18}(1-\theta)^{10}p(θ)∝θ18(1−θ)10,即 Beta(19,11)\mathrm{Beta}(19,11)Beta(19,11) 的形状。从 θ=0.6\theta=0.6θ=0.6 提出 θ′=0.7\theta'=0.7θ′=0.7:比值为 (0.7/0.6)18(0.3/0.4)10=0.903(0.7/0.6)^{18}(0.3/0.4)^{10}=0.903(0.7/0.6)18(0.3/0.4)10=0.903,以概率 0.900.900.90 接受。若改提 θ′=0.55\theta'=0.55θ′=0.55:比值为 0.6780.6780.678,以概率 0.680.680.68 接受。两个计算都不需要使密度总和为 111 的那个常数。
  • 提议与比值:提出附近的点并比较后验高度,未知常数被抵消。
  • 链:访问过的点,移动被拒时重复记录。丢掉 burn-in 后再求平均。
  • 步长:太小爬得慢,太大会卡住,目标接受率约四分之一到一半。

实验:评分内容

  • 一个好的提议15 分
  • 更差的提议15 分
  • 对数比值10 分
  • 对链求平均10 分
  • 步长太大10 分
  • 一次迭代10 分
  • 配对术语15 分
  • 为什么不需要常数15 分
0/ 已答 8 题
任务
1数值作答15 分未作答

取 p(θ)∝θ18(1−θ)10p(\theta)\propto\theta^{18}(1-\theta)^{10}p(θ)∝θ18(1−θ)10,从 θ=0.6\theta=0.6θ=0.6 到 θ′=0.7\theta'=0.7θ′=0.7。比值 r=p(θ′)/p(θ)r=p(\theta')/p(\theta)r=p(θ′)/p(θ) 是多少?保留四位小数。

r=r =r=允许误差:± 0.003
2数值作答15 分未作答

再从 θ=0.6\theta=0.6θ=0.6 到 θ′=0.55\theta'=0.55θ′=0.55。比值 rrr 是多少?保留四位小数。

r=r =r=允许误差:± 0.003
3数值作答10 分未作答

用对数计算,从 0.60.60.6 到 0.70.70.7 的 ln⁡p(θ′)−ln⁡p(θ)\ln p(\theta')-\ln p(\theta)lnp(θ′)−lnp(θ),即 ln⁡0.9029\ln 0.9029ln0.9029 是多少?保留三位小数。

l=l =l=允许误差:± 0.004
4数值作答10 分未作答

burn-in 之后,一条短链的值为 0.62, 0.65, 0.65, 0.58, 0.700.62,\ 0.65,\ 0.65,\ 0.58,\ 0.700.62, 0.65, 0.65, 0.58, 0.70(第二个 0.650.650.65 是被拒绝的移动)。后验均值的估计是多少?保留两位小数。

m=m =m=允许误差:± 0.005
5选择10 分未作答

提议步长远远过大会怎样?

6排列步骤10 分未作答

把一次 Metropolis-Hastings 迭代的步骤按正确顺序排列。

拖动以重新排序;也可聚焦某项,按空格抬起,用方向键移动,再按空格放下。

  1. 1记录该点,无论新旧
  2. 2抽取 0 到 1 之间的均匀随机数 u
  3. 3提出附近的点
  4. 4若 u 小于比值就移动,否则留在原处
  5. 5计算后验高度之比
7配对15 分未作答

把每个术语与其含义配对。

为左侧每一项选择配对项。

链
burn-in
提议
接受率
8用文字解释15 分未作答

用一两句话解释:即使后验的归一化常数未知,Metropolis-Hastings 为什么仍然有效。

数学模式键盘或 LaTeX 输入第 1/8 题 · Ctrl ⏎ 检查

登录后即可运行你的代码。

所有讲解均可免费阅读。创建账户或登录后,即可运行代码、运行测试并提交此实验。

  • 浏览器内 IDE 与 bash 终端,无需安装
  • 即时评分、XP 以及你在学习路线中的位置
创建账户登录
或
使用 GitHub 继续