Hidden Markov Models Что такое HMM? Кружки – состояния Стрелки – вероятностные переходы What is an HMM? Зеленые кружки – скрытые состояния (hidden states) Зависят только от предыдущего состояния What is an HMM? Фиолетовые кружки – наблюдаемые состояния (observed states) Зависят только от соответственных скрытых состояний Формализуем HMM S S S S S K K K K K {S, K, P, A, B} S : {s1…sN } значения скрытых состояний K : {k1…kM } значения наблюдаемых состояний Формализуем HMM S A S B K K A S B K A S A B K {S, K, P, A, B} P = {pi} вероятности начальных состояний A = {aij} вероятности смены скрытого состояния B = {bik} вероятности «эмиссии» наблюдаемого состояния S K Задачи HMM Вычислить вероятность генерации данной последовательности Вычислить наиболее вероятную последовательность скрытых состояний по данной последовательности наблюдаемых состояний По данной последовательности наблюдаемых состояний и набор возможных моделей, вычислить наиболее подходящую? Расшифровка o1 ot-1 ot ot+1 oT Вычислить вероятность генерации данной последовательности O = (o1...oT ), = ( A, B, P ) Compute P(O | ) Расшифровка x1 xt-1 xt xt+1 xT o1 ot-1 ot ot+1 oT P(O | X , ) = bx1o1 bx2o2 ...bxT oT Расшифровка x1 xt-1 xt xt+1 xT o1 ot-1 ot ot+1 oT P(O | X , ) = bx1o1 bx2o2 ...bxT oT P( X | ) = p x1 a x1x2 a x2 x3 ...a xT 1xT Расшифровка x1 xt-1 xt xt+1 xT o1 ot-1 ot ot+1 oT P(O | X , ) = bx1o1 bx2o2 ...bxT oT P( X | ) = p x1 a x1x2 a x2 x3 ...a xT 1xT P(O, X | ) = P(O | X , ) P( X | ) Расшифровка x1 xt-1 xt xt+1 xT o1 ot-1 ot ot+1 oT P(O | X , ) = bx1o1 bx2o2 ...bxT oT P( X | ) = p x1 a x1x2 a x2 x3 ...a xT 1xT P(O, X | ) = P(O | X , ) P( X | ) P(O | ) = P(O | X , ) P( X | ) X Расшифровка x1 xt-1 xt xt+1 xT o1 ot-1 ot ot+1 oT P(O | ) = p { x1 ... xT } T 1 b x1 x1o1 Pa t =1 b xt xt 1 xt 1ot 1 Forward Procedure x1 xt-1 xt xt+1 xT o1 ot-1 ot ot+1 oT i (t ) = P(o1...ot , xt = i | ) Forward Procedure x1 xt-1 xt xt+1 xT o1 ot-1 ot ot+1 oT j (t 1) = P(o1...ot 1 , xt 1 = j ) = P(o1...ot 1 | xt 1 = j ) P( xt 1 = j ) = P(o1...ot | xt 1 = j ) P(ot 1 | xt 1 = j ) P( xt 1 = j ) = P(o1...ot , xt 1 = j ) P(ot 1 | xt 1 = j ) Forward Procedure x1 xt-1 xt xt+1 xT o1 ot-1 ot ot+1 oT j (t 1) = P(o1...ot 1 , xt 1 = j ) = P(o1...ot 1 | xt 1 = j ) P( xt 1 = j ) = P(o1...ot | xt 1 = j ) P(ot 1 | xt 1 = j ) P( xt 1 = j ) = P(o1...ot , xt 1 = j ) P(ot 1 | xt 1 = j ) Forward Procedure x1 xt-1 xt xt+1 xT o1 ot-1 ot ot+1 oT j (t 1) = P(o1...ot 1 , xt 1 = j ) = P(o1...ot 1 | xt 1 = j ) P( xt 1 = j ) = P(o1...ot | xt 1 = j ) P(ot 1 | xt 1 = j ) P( xt 1 = j ) = P(o1...ot , xt 1 = j ) P(ot 1 | xt 1 = j ) Forward Procedure x1 xt-1 xt xt+1 xT o1 ot-1 ot ot+1 oT j (t 1) = P(o1...ot 1 , xt 1 = j ) = P(o1...ot 1 | xt 1 = j ) P( xt 1 = j ) = P(o1...ot | xt 1 = j ) P(ot 1 | xt 1 = j ) P( xt 1 = j ) = P(o1...ot , xt 1 = j ) P(ot 1 | xt 1 = j ) Forward Procedure x1 xt-1 xt xt+1 xT o1 ot-1 ot ot+1 oT = P(o ...o , x 1 i =1... N = = i, xt 1 = j )P(ot 1 | xt 1 = j ) = j | xt = i )P( xt = i ) P(ot 1 | xt 1 = j ) P(o ...o , x = i )P( xt 1 = j | xt = i ) P(ot 1 | xt 1 = j ) 1 t 1 i =1... N = t P(o ...o , x i =1... N = t t (t )a b i =1... N i ij t 1 t jot 1 Forward Procedure x1 xt-1 xt xt+1 xT o1 ot-1 ot ot+1 oT = P(o ...o , x 1 i =1... N = = i, xt 1 = j )P(ot 1 | xt 1 = j ) = j | xt = i )P( xt = i ) P(ot 1 | xt 1 = j ) P(o ...o , x = i )P( xt 1 = j | xt = i ) P(ot 1 | xt 1 = j ) 1 t 1 i =1... N = t P(o ...o , x i =1... N = t t (t )a b i =1... N i ij t 1 t jot 1 Forward Procedure x1 xt-1 xt xt+1 xT o1 ot-1 ot ot+1 oT = P(o ...o , x 1 i =1... N = = i, xt 1 = j )P(ot 1 | xt 1 = j ) = j | xt = i )P( xt = i ) P(ot 1 | xt 1 = j ) P(o ...o , x = i )P( xt 1 = j | xt = i ) P(ot 1 | xt 1 = j ) 1 t 1 i =1... N = t P(o ...o , x i =1... N = t t (t )a b i =1... N i ij t 1 t jot 1 Forward Procedure x1 xt-1 xt xt+1 xT o1 ot-1 ot ot+1 oT = P(o ...o , x 1 i =1... N = = i, xt 1 = j )P(ot 1 | xt 1 = j ) = j | xt = i )P( xt = i ) P(ot 1 | xt 1 = j ) P(o ...o , x = i )P( xt 1 = j | xt = i ) P(ot 1 | xt 1 = j ) 1 t 1 i =1... N = t P(o ...o , x i =1... N = t t (t )a b i =1... N i ij t 1 t jot 1 Backward Procedure x1 xt-1 xt xt+1 xT o1 ot-1 ot ot+1 oT i (T 1) = 1 i (t ) = P(ot ...oT | xt = i) i (t ) = a b j =1... N ij iot j (t 1) Вероятность остальных последующих состояний при условии данного в данной позиции Расшифровка x1 xt-1 xt xt+1 xT o1 ot-1 ot ot+1 oT N P(O | ) = i (T ) Forward Procedure P(O | ) = p i i (1) Backward Procedure P (O | ) = i (t ) i (t ) Combination i =1 N i =1 N i =1 Лучшая последовательность состояний o1 ot-1 Алгоритм Витерби arg max P( X | O) X ot ot+1 oT Алгоритм Витерби x1 xt-1 j o1 ot-1 ot ot+1 oT j (t ) = max P( x1...xt 1 , o1...ot 1 , xt = j, ot ) x1 ... xt 1 Наиболее вероятная последовательность состояний до t-1, завершающаяся в состоянии j, при данном наблюдении в t Рекурсия x1 xt-1 xt xt+1 o1 ot-1 ot ot+1 j (t ) = max P( x1...xt 1 , o1...ot 1 , xt = j, ot ) x1 ... xt 1 j (t 1) = max i (t )aijb jo t 1 i j (t 1) = arg max i (t )aijb jo i t 1 oT Алгоритм Витерби x1 xt-1 xt xt+1 xT o1 ot-1 ot ot+1 oT Xˆ T = arg max i (T ) i Xˆ t = ^ (t 1) X t 1 P( Xˆ ) = arg max i (T ) i Оценка параметров A B o1 A B ot-1 A B ot A B B ot+1 oT Оценка параметров A B A B o1 A B ot-1 ot i (t )aijb jo j (t 1) pt (i, j ) = m (t ) m (t ) t 1 m =1... N i (t ) = p (i, j ) j =1... N t A B B ot+1 oT Вероятность прохождения ребра i ->j Вероятность нахождения в состоянии i Оценка параметров A A B B o1 ot-1 A B ot A B B ot+1 oT pˆi = i (1) p (i, j ) = (t ) (i ) = (t ) T aˆij t =1 T t =1 bˆik t i {t :ot = k } t T t =1 i Теперь мы можем оценить новые параметры модели