Upgrade to Pro — share decks privately, control downloads, hide ads and more …

隠れマルコフモデル(HMM)の個人的メモ

Rigel
September 21, 2017

 隠れマルコフモデル(HMM)の個人的メモ

隠れマルコフモデルでのパラメータ推定と状態系列推定に用いられるBaum-WelchアルゴリズムとViterbiアルゴリズムに関する個人的なメモ。
誰かの理解の助けになると嬉しいです。

Rigel

September 21, 2017
Tweet

More Decks by Rigel

Other Decks in Science

Transcript

  1. 具体例 アリスとボブ • アリスとボブがいる • アリスは毎日何をしたかボ ブに電話で伝える • アリスは三種類しか行動し ない

    • アリスはその日の天気に よってのみ行動を決める • ボブはアリスの地域の天 気を知る術はない • この世界の天気は2種類 ありマルコフ過程に従い変 化する このような仮定のとき、観測値(アリスの行動)は 隠れマルコフモデルに従う。
  2. 隠れマルコフモデルの定式化 k 2 {1, ..., K} ⇢ N , j

    2 {1, ..., K} ⇢ N , n 2 {1, ..., N} ⇢ N 8k , 8n , znk 2 {0, 1} where K X k=1 znk = 1 and zn = {zn1, zn2, ..., znK } 8k , ⇡k = p(z1k = 1) where 0  ⇡k  1 ^ K X k=1 ⇡k = 1 and ⇡ = {⇡1, ⇡2, ..., ⇡K } 8k , 8j , 8n , Ajk = p(znk = 1|zn 1,j = 1) where 0  Ajk  1 ^ K X k=1 Ajk = 1 and A = [Ajk] 1jK,1kK 8k , 8n , p( xn |znk, k) = znkf( xn | k) and = { 1, 2, ..., K } then p( xn | zn, ) = K Y k=1 f( xn | k)znk X = { x1, x2, ..., xN } , Z = { z1, z2, ..., zN } , ✓ = { ⇡ , A , } as the result p( X , Z | ✓ ) = p( z1 | ⇡ ) ( N Y n=2 p( zn | zn 1, A ) ) ( N Y n=1 p( xn | zn, ) )
  3. Baum-Welchアルゴリズム(Eステップ) Log likelihood log p ( X|✓ ) = log

    p ( X, Z|✓ ) log p ( Z|X, ✓ ) = X Z p ( Z|X, ✓old ) log p ( X, Z|✓ ) X Z p ( Z|X, ✓old ) log p ( Z|X, ✓ ) where ✓old is initial parameters . with Q ( ✓|✓old ) = X Z p ( Z|X, ✓old ) log p ( X, Z|✓ ) then log p ( X|✓ ) log p ( X|✓old ) = Q ( ✓|✓old ) Q ( ✓old|✓old ) + X Z p ( Z|X, ✓old ) log p ( Z|X, ✓old ) p ( Z|X, ✓ ) since X Z p ( Z|X, ✓old ) log p ( Z|X, ✓old ) p ( Z|X, ✓ ) 0 log p ( X|✓ ) log p ( X|✓old ) Q ( ✓|✓old ) Q ( ✓old|✓old ) hence update equation is ✓new = arg max ✓ Q ( ✓|✓old ) EMアルゴリズムはここまで共通
  4. Baum-Welchアルゴリズム(Eステップ) 8 n , 8 j , 8 k let

    (zn) = p(zn | X | ✓) ⇠(zn 1, zn) = p(zn 1, zn | X✓) (znk) = X zn (zn)znk = p(znk = 1 | X✓) ⇠(zn 1,j, znk) = X zn 1,zn ⇠(zn 1, zn)zn 1,jznk = p(zn 1,j = 1, znk = 1 | X✓) then Q(✓, ✓ old ) = X Z p(Z | X, ✓ old ) log p(X, Z | ✓) = X Z p(Z | X, ✓ old ) 8 < :log p(z1 | ⇡) + N X n=2 log p(zn | zn 1, A) + N X n=1 log p(xn | zn, ) 9 = ; = X Z p(Z | X, ✓ old ) log p(z1 | ⇡) + X Z p(Z | X, ✓ old ) N X n=2 log p(zn | zn 1, A) + X Z p(Z | X, ✓ old ) N X n=1 log p(xn | zn, ) = X z1 p(z1 | X, ✓ old ) log p(z1 | ⇡) + N X n=2 X zn,zn 1 p(zn, zn 1 | X, ✓ old ) log p(zn | zn 1, A) + N X n=1 X zn p(zn | X, ✓ old ) log p(xn | zn, ) = X z1 K X k=1 (z1)z1k log ⇡k + N X n=2 X zn,zn 1 K X j=1 K X k=1 ⇠(zn 1, zn)zn 1,jznk log Ajk + N X n=1 K X k=1 X zn (zn)znk log p(xk | k) = K X k=1 (z1k) log ⇡k + N X n=2 K X j=1 K X k=1 ⇠(zn 1,j, znk) log Ajk + N X n=1 K X k=1 (znk) log p(xk | k) HMM を求めるには とを求めたい
  5. Baum-Welchアルゴリズム(Eステップ) ( zn) = p( zn | X ) =

    p( X | zn)p( zn) p( X ) = p( X , zn) p( X ) = p( x1, ..., xn | zn)p( xn+1, ..., xN | zn)p( zn) p( X ) = p( x1, ..., xn, zn)p( xn+1, ..., xN | zn) p( X ) = ↵( zn) ( zn) p( X ) where ↵( zn) = p( x1, ..., xn, zn) ( zn) = p( xn+1, ..., xN | zn) を求めるには とを求めたい
  6. Baum-Welchアルゴリズム(Eステップ) ↵( zn) = p( x1, ..., xn, zn) =

    p( x1, ..., xn | zn)p( zn) = p( xn | x1, ..., xn 1, zn)p( x1, ..., xn 1 | zn)p( zn) = p( xn | zn)p( x1, ..., xn 1, zn) = p( xn | zn) X zn 1 p( x1, ..., xn 1, zn 1, zn) = p( xn | zn) X zn 1 p( x1, ..., xn 1, zn | zn 1)p( zn 1) = p( xn | zn) X zn 1 p( x1, ..., xn 1 | zn, zn 1)p( zn | zn 1)p( zn 1) = p( xn | zn) X zn 1 p( x1, ..., xn 1 | zn 1)p( zn | zn 1)p( zn 1) = p( xn | zn) X zn 1 p( x1, ..., xn 1, zn 1)p( zn | zn 1) = p( xn | zn) X zn 1 ↵( zn 1)p( zn | zn 1) ↵( z1) = p( x1, z1) = p( x1 | z1)p( z1) = K Y k=1 ⇡z1k k ! K Y k=1 p( xk | k)z1k ! 求まった
  7. Baum-Welchアルゴリズム(Eステップ) ( zn) = p( xn+1, ..., xn | zn)

    = X zn+1 p( xn+1, ..., xn, zn+1 | zn) = X zn+1 p( xn+1, ..., xn | zn, zn+1)p( zn+1 | zn) = X zn+1 p( xn+1, ..., xn | zn+1)p( zn+1 | zn) = X zn+1 p( xn+2, ..., xn | xn+1, zn+1)p( xn+1 | zn+1)p( zn+1 | zn) = X zn+1 p( xn+2, ..., xn | zn+1)p( xn+1 | zn+1)p( zn+1 | zn) = X zn+1 ( zn+1)p( xn+1 | zn+1)p( zn+1 | zn) ( zN ) = ( zN )p( X ) ↵( zN ) = p( zN | X )p( X ) p( X , zN ) = 1 求まった
  8. Baum-Welchアルゴリズム(Eステップ) ⇠( zn 1, zn) = p( zn 1, zn

    | X ) = p( X | zn 1, zn)p( zn 1, zn) p( X ) = p( x1, ..., xn 1 | zn 1)p( xn | zn)p( xn+1, ..., xN | zn)p( zn | zn 1)p( zn 1) p( X ) = p( x1, ..., xn 1 | zn 1)p( zn 1)p( xn | zn)p( xn+1, ..., xN | zn)p( zn | zn 1) p( X ) = ↵( zn 1)p( xn | zn) ( zn)p( zn | zn 1) p( X ) もとで求めることができた よってを求めることができる
  9. Baum-Welchアルゴリズム(Mステップ) ✓new = arg max ✓ L ( ✓ )

    L ( ✓ ) = Q ( ✓|✓old ) 1 K X k =1 ⇡ k 1 ! K X j =1 j +1 K X k =1 A jk 1 ! @L @⇡ k = ( z1 k) ⇡ k 1 = 0 , ⇡ k = ( z1 k) 1 @L @A jk = ⌃N n =1 ⇠ ( z n 1 ,j , z nk) A jk j +1 = 0 , A jk = ⌃N n =1 ⇠ ( z n 1 ,j , z nk) j +1 K X k =1 ⇡ k = K X k =1 ( z1 k) 1 = 1 , 1 = K X j =1 ( z1 j) K X k =1 A jk = K X k =1 ⌃N n =1 ⇠ ( z n 1 ,j , z nk) j +1 = 1 , j +1 = K X l =1 N X n =1 ⇠ ( z n 1 ,j , z nl) ⇡ k = ( z1 k) 1 = ( z1 k) P K j =1 ( z1 j) A jk = ⌃N n =1 ⇠ ( z n 1 ,j , z nk) j +1 = ⌃N n =1 ⇠ ( z n 1 ,j , z nk) ⌃K l =1⌃N n =1 ⇠ ( z n 1 ,j , z nl) 制約条件がある最適化なので ラグランジュの未定乗数法を使う . は仮定する分布に よって異なるので省略
  10. Viterbiアルゴリズム 1( k ) = ⇡kf (x1 | k) 1(

    j ) = 0 t+1( k ) = max j [ t( j ) Ajk] f (xt+1 | k) t+1( k ) = arg max j [ t( j ) Ajk] ˆ P = max k T ( k ) ˆ qT = arg max k T ( k ) ˆ qt = t+1(ˆ qt+1) " (1) " () " () ・ ・ ・ ・ ・ ・ "%$ (1) "%$ () "%$ () ・ ・ ・ ・ ・ ・ max ∗ $. ∗ ;. ∗ <. ∗ ("%$ |. ) "%$ (1) "%$ () "%$ () ・ ・ ・ ・ ・ ・ argmax