σμ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 AcademyRoadmapsRoteiros
Ctrl K
AO
+1,2 mil alunos
EntrarParticipar ↗
RoadmapsRoteiros
AO
+1,2 mil alunos
Entrar
  • 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 AcademyRoadmapsRoteiros
Ctrl K
AO
+1,2 mil alunos
EntrarParticipar ↗
RoadmapsRoteiros
AO
+1,2 mil alunos
Entrar
  • English
  • Français
  • Español
  • العربية
  • Português
  • Deutsch
  • 日本語
  • 中文
Roteiro de Hidden Markov Models›Módulo 2 · Os algoritmos centrais›Tópico 2.1·~1 hAvançado

O algoritmo forward

Posição no roteiroMódulo 2 de 3 · Tópico 1 de 4
2.1 O algoritmo forward
—Nota do lab— / 100XP total—Sequência—

Quão provável é o que vimos?

Suponha que vimos os movimentos Pequeno, Grande, Grande. Quão provável é essa sequência no nosso modelo? Poderíamos listar todos os caminhos ocultos (Calmo-Calmo-Calmo, Calmo-Calmo-Tempestuoso etc.), calcular a probabilidade de cada um e somá-las. Com KKK estados e TTT dias são KTK^{T}KT caminhos, demais. O algoritmo forward faz a mesma soma em T⋅K2T\cdot K^{2}T⋅K2 passos reaproveitando o trabalho. Ele guarda um número αt(j)\alpha_t(j)αt​(j): a probabilidade das primeiras ttt observações e de estar no estado jjj no dia ttt.

α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)

Leia a recorrência em palavras: para estar no estado jjj hoje, veio-se de algum estado iii ontem (soma sobre iii com a probabilidade de transição) e então o estado de hoje produziu a observação de hoje. Dividir αt\alpha_tαt​ pelo seu total dá as probabilidades filtradas, sua crença sobre o estado de hoje dados os dados até hoje. Um problema prático: multiplicar muitos números pequenos dá números que tendem a zero. Então a cada passo divide-se pelo total ctc_tct​ e guarda-se. O log da probabilidade dos dados é então simplesmente a soma dos ln⁡ct\ln c_tlnct​.

Pequeno, Grande, GrandeDia 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), total c1=0,66c_1=0{,}66c1​=0,66. Dia 2 (um movimento grande): Calmo recebe (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 e Tempestuoso (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, total 0,1560{,}1560,156, então a probabilidade filtrada de Tempestuoso é 0,105/0,156=0,6730{,}105/0{,}156=0{,}6730,105/0,156=0,673. O dia 3 dá α3=(0,00669, 0,06237)\alpha_3=(0{,}00669,\ 0{,}06237)α3​=(0,00669, 0,06237). A probabilidade de toda a sequência é 0,00669+0,06237=0,06910{,}00669+0{,}06237=0{,}06910,00669+0,06237=0,0691 e seu log é −2,673-2{,}673−2,673.
  • Algoritmo forward: soma sobre todos os caminhos ocultos em T⋅K2T\cdot K^{2}T⋅K2 passos em vez de KTK^{T}KT.
  • Probabilidades filtradas: normalize αt\alpha_tαt​ para obter sua crença sobre o estado de hoje com os dados até hoje.
  • Escalonamento: divida por ctc_tct​ a cada passo e some os ln⁡ct\ln c_tlnct​ para evitar underflow.

Lab: o que é avaliado

  • O primeiro valor forward15 pts
  • O total do primeiro dia10 pts
  • Filtrado após dois dias15 pts
  • A probabilidade da sequência15 pts
  • A log-verossimilhança10 pts
  • O que o algoritmo forward economiza10 pts
  • Associar o vocabulário10 pts
  • Por que os valores são reescalados15 pts
0/ 8 respondidas
Tarefas
1Resposta numérica15 ptsSem resposta

O dia 1 mostra um movimento pequeno. Quanto vale α1(C)=πC BC(p)\alpha_1(C)=\pi_C\,B_C(p)α1​(C)=πC​BC​(p) com πC=0,6\pi_C=0{,}6πC​=0,6 e BC(p)=0,9B_C(p)=0{,}9BC​(p)=0,9?

a=a =a=aceito: ± 0.005
2Resposta numérica10 ptsSem resposta

Com α1=(0,54, 0,12)\alpha_1=(0{,}54,\ 0{,}12)α1​=(0,54, 0,12), quanto vale o total c1c_1c1​, a probabilidade da primeira observação?

c=c =c=aceito: ± 0.005
3Resposta numérica15 ptsSem resposta

Após as observações Pequeno e Grande, α2=(0,051, 0,105)\alpha_2=(0{,}051,\ 0{,}105)α2​=(0,051, 0,105). Qual é a probabilidade filtrada do estado tempestuoso, 0,105/(0,051+0,105)0{,}105/(0{,}051+0{,}105)0,105/(0,051+0,105)? Dê três casas decimais.

p=p =p=aceito: ± 0.003
4Resposta numérica15 ptsSem resposta

No dia 3, α3=(0,00669, 0,06237)\alpha_3=(0{,}00669,\ 0{,}06237)α3​=(0,00669, 0,06237). Qual é a probabilidade de toda a sequência Pequeno, Grande, Grande, a soma de α3\alpha_3α3​? Dê quatro casas decimais.

p=p =p=aceito: ± 0.0003
5Resposta numérica10 ptsSem resposta

Qual é o logaritmo natural da probabilidade 0,06910{,}06910,0691 da sequência? Dê duas casas decimais.

l=l =l=aceito: ± 0.02
6Escolha10 ptsSem resposta

O que o algoritmo forward nos permite evitar?

7Associar10 ptsSem resposta

Associe cada termo ao seu significado.

Escolha o par de cada item da esquerda.

αt(j)\alpha_t(j)αt​(j)
Probabilidade filtrada
ctc_tct​
∑jαT(j)\sum_j\alpha_T(j)∑j​αT​(j)
8Explicar com palavras15 ptsSem resposta

Em uma ou duas frases, explique por que uma implementação real do algoritmo forward divide por ctc_tct​ a cada passo.

Modo matemáticaEntrada por teclado ou LaTeXTarefa 1 de 8 · Ctrl ⏎ para verificar

Entre para executar o seu código.

Todas as aulas são gratuitas para ler. Crie uma conta ou entre para executar código, rodar os testes e enviar este lab.

  • IDE no navegador com terminal bash — nada para instalar
  • Correção instantânea, XP e o seu lugar no roteiro
Criar uma contaEntrar
OU
Continuar com o GitHub