Viterbi

25
Viterbi Método para o cálculo de uma seqüencia de estados oculta mais provável a partir de uma seqüência observada. Seqüência oculta conhecida como Caminho de Viterbi.

Transcript of Viterbi

Page 1: Viterbi

Viterbi

Método para o cálculo de uma seqüencia de estados oculta mais provável a partir de uma seqüência observada. Seqüência oculta conhecida como Caminho de Viterbi.

Page 2: Viterbi

Viterbi Ilustração

pt: probabilidade de transição

pe: pobabilidade de emissão

pi: probabilidade inicial do estado oculto

Os estados e as probabilidades são conhecidos a priori.

Problema: qual a seqüência de estados ocultos (caminho) que maximiza pi * pe1 * pt1 * pe2 * pt2 * pe3?

x, y,z?

a b c

x, y, z?

x, y,z?pt1 pt2

pe1

pe2

pe3

pi

Page 3: Viterbi

Viterbi

Exemplo: temos um conjunto de estados ocultos X = {x, y, z}, uma seqüência observada a -> b -> c e as seguintes relações de probabilidade:

pe a b cx 0.25 0.25 0.50y 0.40 0.20 0.40z 0.20 0.80 0.00

pt x y zx 0.50 0.25 0.25y 0.40 0.20 0.40z 0.20 0.80 0.00

pix 0.25y 0.25z 0.50

Page 4: Viterbi

Viterbi

pe a b cx 0.25 0.25 0.50y 0.40 0.20 0.40z 0.20 0.80 0.00

pt x y zx 0.50 0.25 0.25y 0.40 0.20 0.40z 0.20 0.80 0.00

pix 0.25y 0.25z 0.50

a b c

x

y

z

Prob x: 0.25

Prob y: 0.25

Prob z: 0.50

Passo: 1

Page 5: Viterbi

Viterbi

pe a b cx 0.25 0.25 0.50y 0.40 0.20 0.40z 0.20 0.80 0.00

pt x y zx 0.50 0.25 0.25y 0.40 0.20 0.40z 0.20 0.80 0.00

pix 0.25y 0.25z 0.50

a b c

x

y

z

Prob x: 0.25

Prob y: 0.25

Prob z: 0.50

Passo: 1

x

y

z

Page 6: Viterbi

Viterbi

pe a b cx 0.25 0.25 0.50y 0.40 0.20 0.40z 0.20 0.80 0.00

pt x y zx 0.50 0.25 0.25y 0.40 0.20 0.40z 0.20 0.80 0.00

pix 0.25y 0.25z 0.50

a b c

x

y

z

Prob x: 0.25

Prob y: 0.25

Prob z: 0.50

Passo: 1

x

y

z

0.25 * 0.5 * 0.25

0.25 * 0.4 * 0

.4

0.5 * 0.2 *

0.2

Page 7: Viterbi

Viterbi

pe a b cx 0.25 0.25 0.50y 0.40 0.20 0.40z 0.20 0.80 0.00

pt x y zx 0.50 0.25 0.25y 0.40 0.20 0.40z 0.20 0.80 0.00

pix 0.25y 0.25z 0.50

a b c

x

y

z

Prob x: 0.04

Prob y: 0.25

Prob z: 0.50

Passo: 1

x

y

z

0.03125

0.04

0.02

Page 8: Viterbi

Viterbi

pe a b cx 0.25 0.25 0.50y 0.40 0.20 0.40z 0.20 0.80 0.00

pt x y zx 0.50 0.25 0.25y 0.40 0.20 0.40z 0.20 0.80 0.00

pix 0.25y 0.25z 0.50

a b c

x

y

z

Prob x: 0.04

Prob y: 0.25

Prob z: 0.50

Passo: 1

x

y

z

Page 9: Viterbi

Viterbi

pe a b cx 0.25 0.25 0.50y 0.40 0.20 0.40z 0.20 0.80 0.00

pt x y zx 0.50 0.25 0.25y 0.40 0.20 0.40z 0.20 0.80 0.00

pix 0.25y 0.25z 0.50

a b c

x

y

z

Prob x: 0.01

Prob y: 0.25

Prob z: 0.50

Passo: 1

x

y

z

0.25 * 0.25 * 0.25

0.25 * 0.2 * 0.4

0.5 * 0.8 * 0

.2

Page 10: Viterbi

Viterbi

pe a b cx 0.25 0.25 0.50y 0.40 0.20 0.40z 0.20 0.80 0.00

pt x y zx 0.50 0.25 0.25y 0.40 0.20 0.40z 0.20 0.80 0.00

pix 0.25y 0.25z 0.50

a b c

x

y

z

Prob x: 0.04

Prob y: 0.08

Prob z: 0.50

Passo: 1

x

y

z

0.0156

0.02

0.08

Page 11: Viterbi

Viterbi

pe a b cx 0.25 0.25 0.50y 0.40 0.20 0.40z 0.20 0.80 0.00

pt x y zx 0.50 0.25 0.25y 0.40 0.20 0.40z 0.20 0.80 0.00

pix 0.25y 0.25z 0.50

a b c

x

y

z

Prob x: 0.04

Prob y: 0.08

Prob z: 0.50

Passo: 1

x

y

z

Page 12: Viterbi

Viterbi

pe a b cx 0.25 0.25 0.50y 0.40 0.20 0.40z 0.20 0.80 0.00

pt x y zx 0.50 0.25 0.25y 0.40 0.20 0.40z 0.20 0.80 0.00

pix 0.25y 0.25z 0.50

a b c

x

y

z

Prob x: 0.04

Prob y: 0.08

Prob z: 0.04

Passo: 1

x

y

z0.0

0.04

0.0156

Page 13: Viterbi

Viterbi

pe a b cx 0.25 0.25 0.50y 0.40 0.20 0.40z 0.20 0.80 0.00

pt x y zx 0.50 0.25 0.25y 0.40 0.20 0.40z 0.20 0.80 0.00

pix 0.25y 0.25z 0.50

a b c

x

y

z

Prob x: 0.04

Prob y: 0.08

Prob z: 0.04

Passo: 1

x

y

z

Page 14: Viterbi

Viterbi

pe a b cx 0.25 0.25 0.50y 0.40 0.20 0.40z 0.20 0.80 0.00

pt x y zx 0.50 0.25 0.25y 0.40 0.20 0.40z 0.20 0.80 0.00

pix 0.25y 0.25z 0.50

a b c

x

y

z

Prob x: 0.04

Prob y: 0.08

Prob z: 0.04

Passo: 2

x

y

z

x

y

z

0.04 * 0.5 * 0.25

0.08 * 0.2 * 0.2

0.04 * 0.2 *

0.8

Page 15: Viterbi

Viterbi

pe a b cx 0.25 0.25 0.50y 0.40 0.20 0.40z 0.20 0.80 0.00

pt x y zx 0.50 0.25 0.25y 0.40 0.20 0.40z 0.20 0.80 0.00

pix 0.25y 0.25z 0.50

a b c

x

y

z

Prob x: 0.0064

Prob y: 0.08

Prob z: 0.04

Passo: 2

x

y

z

x

y

z

0.005

0.0032

0.0064

Page 16: Viterbi

Viterbi

pe a b cx 0.25 0.25 0.50y 0.40 0.20 0.40z 0.20 0.80 0.00

pt x y zx 0.50 0.25 0.25y 0.40 0.20 0.40z 0.20 0.80 0.00

pix 0.25y 0.25z 0.50

a b c

x

y

z

Prob x: 0.0064

Prob y: 0.0256

Prob z: 0.04

Passo: 2

x

y

z

x

y

z

0.0025

0.0032

0.0256

Page 17: Viterbi

Viterbi

pe a b cx 0.25 0.25 0.50y 0.40 0.20 0.40z 0.20 0.80 0.00

pt x y zx 0.50 0.25 0.25y 0.40 0.20 0.40z 0.20 0.80 0.00

pix 0.25y 0.25z 0.50

a b c

x

y

z

Prob x: 0.0064

Prob y: 0.0256

Prob z: 0.0064

Passo: 2

x

y

z

x

y

z

0.00250.0064

0.0

Page 18: Viterbi

Viterbi

pe a b cx 0.25 0.25 0.50y 0.40 0.20 0.40z 0.20 0.80 0.00

pt x y zx 0.50 0.25 0.25y 0.40 0.20 0.40z 0.20 0.80 0.00

pix 0.25y 0.25z 0.50

a b c

x

y

z

Prob x: 0.0064

Prob y: 0.0256

Prob z: 0.0064

Passo: 2

x

y

z

x

y

z

Page 19: Viterbi

Viterbi

pe a b cx 0.25 0.25 0.50y 0.40 0.20 0.40z 0.20 0.80 0.00

pt x y zx 0.50 0.25 0.25y 0.40 0.20 0.40z 0.20 0.80 0.00

pix 0.25y 0.25z 0.50

a b c

x

y

z

Prob x: 0.004

Prob y: 0.0256

Prob z: 0.0064

Passo: 3

x

y

z

x

y

z

x

y

z

x

y

z

x

y

z

0.0016

0.004

0.0

Page 20: Viterbi

Viterbi

pe a b cx 0.25 0.25 0.50y 0.40 0.20 0.40z 0.20 0.80 0.00

pt x y zx 0.50 0.25 0.25y 0.40 0.20 0.40z 0.20 0.80 0.00

pix 0.25y 0.25z 0.50

a b c

x

y

z

Prob x: 0.004

Prob y: 0.002

Prob z: 0.0064

Passo: 3

x

y

z

x

y

z

x

y

z

x

y

z

x

y

z

0.0008

0.00.002

Page 21: Viterbi

Viterbi

pe a b cx 0.25 0.25 0.50y 0.40 0.20 0.40z 0.20 0.80 0.00

pt x y zx 0.50 0.25 0.25y 0.40 0.20 0.40z 0.20 0.80 0.00

pix 0.25y 0.25z 0.50

a b c

x

y

z

Prob x: 0.004

Prob y: 0.002

Prob z: 0.004

Passo: 3

x

y

z

x

y

z

x

y

z

x

y

z

x

y

z

0.00080.004

0.0

Page 22: Viterbi

Viterbi

pe a b cx 0.25 0.25 0.50y 0.40 0.20 0.40z 0.20 0.80 0.00

pt x y zx 0.50 0.25 0.25y 0.40 0.20 0.40z 0.20 0.80 0.00

pix 0.25y 0.25z 0.50

a b c

x

y

z

Prob x: 0.004

Prob y: 0.002

Prob z: 0.004

Passo: 3

x

y

z

x

y

z

x

y

z

x

y

z

x

y

z

Page 23: Viterbi

Viterbi

# y: lista ordenada de estados observados# X: lista de estados ocultos# sp: probabilidade inicial de cada estado oculto (lista)# tp: probabilidade de transição entre estados ocultos (matriz)# ep: probabilidade de emissão entre estados ocultos e estados observados def viterbi(y, X, sp, tp, ep): T = {} # passo 1: inicializa mapeamento estados vs. probabilidades iniciais for state in X: ## estado probabilidade inicial T[state] = ([state], sp[state])

Page 24: Viterbi

Viterbi

# passo 2: calcula melhores sequencias (> v_prob) # para cada estado oculto correspondente a cada estado observado for observed_state in y: U = {} for next_state in X: path = None probmax = 0 for state in X: (v_path, v_prob) = T[state] p = ep[state][observed_state] * tp[state][next_state] v_prob *= p if v_prob > probmax: path = v_path + [next_state] probmax = v_prob U[next_state] = (path, probmax) T = U

Page 25: Viterbi

Viterbi

# passo 3: escolhe seqüência (caminho de viterbi) # com maior probabilidade path = None probmax = 0 for state in X: (v_path, v_prob) = T[state] if v_prob > probmax: path = v_path probmax = v_prob return (path, probmax)