σμ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
  • 日本語
  • 中文
Hidden Markov Models 学习路线›模块 2 · 核心算法›主题 2.1·~1小时高级

前向算法

路线进度模块 2/3 · 主题 1/4
2.1 前向算法
—实验得分— / 100总 XP—连续天数—

我们看到的有多大可能?

设我们看到的波动是 小、大、大。在我们的模型下这个序列有多大可能?可以把所有隐含路径(平静-平静-平静、平静-平静-动荡……)列出来,算每条的概率再相加;但 KKK 个状态、TTT 天就有 KTK^{T}KT 条路径,太多了。前向算法通过复用计算,用 T⋅K2T\cdot K^{2}T⋅K2 步算出同一个和。它保存一个数 αt(j)\alpha_t(j)αt​(j):前 ttt 个观测出现、且第 ttt 天处于状态 jjj 的概率。

α1(j)=πjBj(o1),αt(j)=[∑iαt−1(i)Aij]Bj(ot),P(o1,…,oT)=∑jαT(j)\alpha_1(j)=\pi_jB_j(o_1),\qquad \alpha_t(j)=\Big[\sum_i\alpha_{t-1}(i)A_{ij}\Big]B_j(o_t),\qquad P(o_1,\dots,o_T)=\sum_j\alpha_T(j)α1​(j)=πj​Bj​(o1​),αt​(j)=[i∑​αt−1​(i)Aij​]Bj​(ot​),P(o1​,…,oT​)=j∑​αT​(j)(1)

用文字读一下这个递推:今天处于状态 jjj,就是昨天来自某个状态 iii(按转移概率对 iii 求和),然后今天的状态产生了今天的观测。把 αt\alpha_tαt​ 除以它的总和,就得到滤波概率,即已知截至今天的数据时你对今天状态的信念。有个实际问题:把许多小数相乘,数值会趋近于零而下溢。所以每一步都除以总和 ctc_tct​ 并保存起来,数据概率的对数就是各个 ln⁡ct\ln c_tlnct​ 之和。

小、大、大第 1 天:α1=(0.6⋅0.9, 0.4⋅0.3)=(0.54, 0.12)\alpha_1=(0.6\cdot0.9,\ 0.4\cdot0.3)=(0.54,\ 0.12)α1​=(0.6⋅0.9, 0.4⋅0.3)=(0.54, 0.12),总和 c1=0.66c_1=0.66c1​=0.66。第 2 天(大波动):平静得到 (0.54⋅0.9+0.12⋅0.2)⋅0.1=0.051(0.54\cdot0.9+0.12\cdot0.2)\cdot0.1=0.051(0.54⋅0.9+0.12⋅0.2)⋅0.1=0.051,动荡得到 (0.54⋅0.1+0.12⋅0.8)⋅0.7=0.105(0.54\cdot0.1+0.12\cdot0.8)\cdot0.7=0.105(0.54⋅0.1+0.12⋅0.8)⋅0.7=0.105,总和 0.1560.1560.156,所以动荡的滤波概率为 0.105/0.156=0.6730.105/0.156=0.6730.105/0.156=0.673。第 3 天得 α3=(0.00669, 0.06237)\alpha_3=(0.00669,\ 0.06237)α3​=(0.00669, 0.06237)。整个序列的概率为 0.00669+0.06237=0.06910.00669+0.06237=0.06910.00669+0.06237=0.0691,其对数为 −2.673-2.673−2.673。
  • 前向算法:用 T⋅K2T\cdot K^{2}T⋅K2 步而不是 KTK^{T}KT 步对所有隐含路径求和。
  • 滤波概率:把 αt\alpha_tαt​ 归一化,就得到由截至今天的数据得出的对今天状态的信念。
  • 缩放:每步除以 ctc_tct​ 并累加 ln⁡ct\ln c_tlnct​,以避免下溢。

实验:评分内容

  • 第一个前向值15 分
  • 第一天的总和10 分
  • 两天后的滤波15 分
  • 序列的概率15 分
  • 对数似然10 分
  • 前向算法节省了什么10 分
  • 配对术语10 分
  • 为什么要缩放这些值15 分
0/ 已答 8 题
任务
1数值作答15 分未作答

第 1 天出现小波动。当 πC=0.6\pi_C=0.6πC​=0.6、BC(s)=0.9B_C(s)=0.9BC​(s)=0.9 时,α1(C)=πC BC(s)\alpha_1(C)=\pi_C\,B_C(s)α1​(C)=πC​BC​(s) 是多少?

a=a =a=允许误差:± 0.005
2数值作答10 分未作答

当 α1=(0.54, 0.12)\alpha_1=(0.54,\ 0.12)α1​=(0.54, 0.12) 时,总和 c1c_1c1​(第一个观测的概率)是多少?

c=c =c=允许误差:± 0.005
3数值作答15 分未作答

观测 小、大 之后 α2=(0.051, 0.105)\alpha_2=(0.051,\ 0.105)α2​=(0.051, 0.105)。动荡状态的滤波概率 0.105/(0.051+0.105)0.105/(0.051+0.105)0.105/(0.051+0.105) 是多少?保留三位小数。

p=p =p=允许误差:± 0.003
4数值作答15 分未作答

第 3 天 α3=(0.00669, 0.06237)\alpha_3=(0.00669,\ 0.06237)α3​=(0.00669, 0.06237)。整个序列 小、大、大 的概率(α3\alpha_3α3​ 之和)是多少?保留四位小数。

p=p =p=允许误差:± 0.0003
5数值作答10 分未作答

序列概率 0.06910.06910.0691 的自然对数是多少?保留两位小数。

l=l =l=允许误差:± 0.02
6选择10 分未作答

前向算法让我们避免了什么?

7配对10 分未作答

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

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

αt(j)\alpha_t(j)αt​(j)
滤波概率
ctc_tct​
∑jαT(j)\sum_j\alpha_T(j)∑j​αT​(j)
8用文字解释15 分未作答

用一两句话解释:为什么前向算法的实际实现要在每一步除以 ctc_tct​。

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

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

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

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