σμ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.2·~55 minAvançado

Decodificação de Viterbi

Posição no roteiroMódulo 2 de 3 · Tópico 2 de 4
2.2 Decodificação de Viterbi
—Nota do lab— / 100XP total—Sequência—

A única história mais provável

O algoritmo forward soma todos os caminhos ocultos para dizer quão prováveis são os dados. Muitas vezes queremos outra coisa: a melhor história única, a sequência de estados que explica os dados com a maior probabilidade. A decodificação de Viterbi a encontra. A ideia é o algoritmo forward com uma mudança: em vez de somar sobre os estados anteriores, tomar o melhor. Guarda-se uma pontuação δt(j)\delta_t(j)δt​(j), a probabilidade do melhor caminho que termina no estado jjj no dia ttt, e lembra-se qual estado anterior a deu, o ponteiro para trás.

δ1(j)=πjBj(o1),δt(j)=[max⁡iδt−1(i)Aij]Bj(ot),ψt(j)=arg⁡max⁡iδt−1(i)Aij\delta_1(j)=\pi_jB_j(o_1),\qquad \delta_t(j)=\Big[\max_i\delta_{t-1}(i)A_{ij}\Big]B_j(o_t),\qquad \psi_t(j)=\arg\max_i\delta_{t-1}(i)A_{ij}δ1​(j)=πj​Bj​(o1​),δt​(j)=[imax​δt−1​(i)Aij​]Bj​(ot​),ψt​(j)=argimax​δt−1​(i)Aij​(1)

Depois do último dia, escolha o estado com maior δT\delta_TδT​ e volte pelos ponteiros ψ\psiψ para ler o caminho todo. Dois pontos práticos. Primeiro, trabalhe com logs: produtos de muitas probabilidades tendem a zero, mas os logs os transformam em somas e, como o log é crescente, o melhor caminho é o mesmo. Segundo, o melhor caminho não é o mesmo que escolher o estado mais provável de cada dia separadamente. O caminho pode ser forçado pelo que vem depois, como mostra o exemplo.

Pequeno, Grande, Grande de novoDia 1: δ1=(0,54, 0,12)\delta_1=(0{,}54,\ 0{,}12)δ1​=(0,54, 0,12). Dia 2 (grande): Calmo vem melhor de Calmo, 0,54⋅0,9⋅0,1=0,04860{,}54\cdot0{,}9\cdot0{,}1=0{,}04860,54⋅0,9⋅0,1=0,0486. Tempestuoso vem melhor de Tempestuoso, 0,12⋅0,8⋅0,7=0,06720{,}12\cdot0{,}8\cdot0{,}7=0{,}06720,12⋅0,8⋅0,7=0,0672, e não de Calmo (0,54⋅0,1⋅0,7=0,03780{,}54\cdot0{,}1\cdot0{,}7=0{,}03780,54⋅0,1⋅0,7=0,0378). Dia 3: Tempestuoso vem de Tempestuoso, 0,0672⋅0,8⋅0,7=0,03760{,}0672\cdot0{,}8\cdot0{,}7=0{,}03760,0672⋅0,8⋅0,7=0,0376, e Calmo só 0,00440{,}00440,0044. O melhor caminho é Tempestuoso, Tempestuoso, Tempestuoso com probabilidade 0,03760{,}03760,0376. No entanto, o primeiro dia sozinho parecia calmo com probabilidade 0,820{,}820,82. Os movimentos grandes seguintes puxam toda a história para Tempestuoso. Esse caminho é 1,781{,}781,78 vez mais provável que Calmo, Tempestuoso, Tempestuoso (0,02120{,}02120,0212).
  • Viterbi troca a soma do algoritmo forward por um máximo e guarda ponteiros para trás.
  • O melhor caminho pode diferir do estado mais provável de cada dia tomado separadamente.
  • Use logs: somas de logs evitam underflow e mantêm o mesmo melhor caminho.

Lab: o que é avaliado

  • Uma pontuação de Viterbi no dia dois15 pts
  • A probabilidade do melhor caminho15 pts
  • O log do melhor caminho10 pts
  • Diante de outro caminho10 pts
  • O primeiro estado do melhor caminho15 pts
  • Os passos de Viterbi10 pts
  • Associar o vocabulário10 pts
  • Por que usar logs15 pts
0/ 8 respondidas
Tarefas
1Resposta numérica15 ptsSem resposta

Com δ1=(0,54, 0,12)\delta_1=(0{,}54,\ 0{,}12)δ1​=(0,54, 0,12) e um movimento grande no dia 2, quanto vale δ2(T)=max⁡(0,54⋅0,1, 0,12⋅0,8)⋅0,7\delta_2(T)=\max(0{,}54\cdot0{,}1,\ 0{,}12\cdot0{,}8)\cdot0{,}7δ2​(T)=max(0,54⋅0,1, 0,12⋅0,8)⋅0,7? Dê quatro casas decimais.

d=d =d=aceito: ± 0.0003
2Resposta numérica15 ptsSem resposta

Com δ2=(0,0486, 0,0672)\delta_2=(0{,}0486,\ 0{,}0672)δ2​=(0,0486, 0,0672) e um movimento grande no dia 3, quanto vale δ3(T)=max⁡(0,0486⋅0,1, 0,0672⋅0,8)⋅0,7\delta_3(T)=\max(0{,}0486\cdot0{,}1,\ 0{,}0672\cdot0{,}8)\cdot0{,}7δ3​(T)=max(0,0486⋅0,1, 0,0672⋅0,8)⋅0,7, a probabilidade do melhor caminho? Dê quatro casas decimais.

d=d =d=aceito: ± 0.0003
3Resposta numérica10 ptsSem resposta

Qual é o logaritmo natural da probabilidade 0,03760{,}03760,0376 do melhor caminho? Dê duas casas decimais.

l=l =l=aceito: ± 0.02
4Resposta numérica10 ptsSem resposta

Quantas vezes o melhor caminho (probabilidade 0,03760{,}03760,0376) é mais provável que o caminho Calmo, Tempestuoso, Tempestuoso (probabilidade 0,02120{,}02120,0212)? Dê duas casas decimais.

r=r =r=aceito: ± 0.02
5Escolha15 ptsSem resposta

O primeiro dia mostra um movimento pequeno, o que torna Calmo 82 % provável sozinho. Qual é o primeiro estado do melhor caminho para Pequeno, Grande, Grande?

6Ordenar os passos10 ptsSem resposta

Coloque em ordem os passos da decodificação de Viterbi.

Arraste para reordenar, ou foque um item, Espaço para levantá-lo, setas para movê-lo e Espaço para soltá-lo.

  1. 1Depois do último dia, escolher o estado de maior pontuação
  2. 2Começar com delta igual à probabilidade inicial vezes a primeira emissão
  3. 3Voltar pelos ponteiros para ler o caminho
  4. 4Para cada dia e estado, manter o melhor predecessor e lembrá-lo
7Associar10 ptsSem resposta

Associe cada termo ao seu significado.

Escolha o par de cada item da esquerda.

δt(j)\delta_t(j)δt​(j)
ψt(j)\psi_t(j)ψt​(j)
Algoritmo forward
Algoritmo de Viterbi
8Explicar com palavras15 ptsSem resposta

Em uma ou duas frases, explique por que a decodificação de Viterbi costuma ser escrita com logs das probabilidades e por que isso não muda o melhor caminho.

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