13.2.2 フォワード・バックワードアルゴリズム #prml
DESCRIPTION
PRML読書会の発表資料です.TRANSCRIPT
13.2.2 フォワード・バックワードアルゴリズム
#prml
@nokuno
13.2.1の補足 2
N
m
mm
N
n
nn pppp22
11 ),|(),|()|(),|( φzxAzzπzθZX (13.10)
N
m
mm
N
n
nn pppp22
11 ),|(ln),|(ln)|(ln),|(ln φzxAzzπzθZX
尤度関数
対数尤度関数
Q関数
N
n
nn
N
n
nn
old
pEpEpE
pEQ
22
11 ),|(ln),|(ln)|(ln
),|(ln),(
φzxAzzπz
θZXθθ
ZZZ
Z
Q関数の導出が難しかったので補足してみる
13.2.1の補足 3
K
k
kkzpppE1
1111 ln)()|(ln),|()|(ln1
z
Z πzθXzπz
Zについての期待値は無関係な変数が周辺化されてz_iについての期待値になる
)()( ii fEfEi
zz zZ に注意しつつ…
第1項
第2項の中身
K
j
K
k
jknkjn
nnnnnn
Azz
pppEn n
1 1
,1
111
ln),(
),|(ln),|,(),|(ln1
z z
Z AzzθXzzAzz
K
k
knnknnnnn pzpppEn 1
)|(ln)(),|(ln),|(),|(ln φxφzxθXzφzxz
Z
第3項の中身
N
n
K
k
knnk
N
n
K
j
K
k
jknkjn
K
k
kk
old pzAzzzQ1 12 1 1
,1
1
1 )|(ln)(ln),(ln)(),( φxθθ
よって
(13.17)
EMアルゴリズムのEステップに対応
γとξを求める効率的な方法
Forward-BackwardまたはBaum-Welchと呼ばれる
出力確率の形、離散か連続かは無関係
13.2.2 フォワードバックワード 4
条件付き独立性を書き下す 5
)|()|()|( 11 n
N
nn
n
n ppp zxzxzX
)|(),|( 1
1
1
1 n
n
nn
n pp zxzxx
)|(),|( 1
1
11
1
1
n
n
nn
n pp zxzzx
)|(),|( 1111 n
N
nnn
N
n pp zxzzx
)|(),|( 12112 n
N
nnn
N
n pp zxxzx
(13.24)
(13.25)
(13.26)
(13.27)
(13.28)
)|()|()|(),|( 11
1
11 n
N
nnnn
n
nn pppp zxzxzxzzX
(13.29)
)|(),|( 1111 NNNN pp zxzXx (13.30)
)|(),|( 11 NNNN pp zzXzz (13.31)
ji
j
i xxx ,,
以下の省略記法を用いる
γの求め方 6
)(
)()(
)(
)|(),(
)(
)()|()|()(
11
X
zz
X
zxzx
X
zzXXzz
pp
pp
p
ppp
nnn
N
nn
n
nnnn
(13.33)
(13.32)
),()( 1 n
n
n p zxz
)|()( 1 n
N
nn p zxz
(13.34)
(13.35)
ベイズの定理と条件付き独立性を使って、γをαとβの積の形で書ける
フォワード再帰 7
図13.12
1
)|()()|()( 11
n
nnnnnn ppz
zzzzxz (13.36)
)|(,),|()|()(),()( 1111111111 KK ppppp xxzxzzxz (13.37)
初期条件
1
1
1
1
)|(),()|(
)()|()|()|(
)()|,()|(
),,()|(
),()|(
)()|()|(
)()|(),()(
11
1
1
111
1
1
11
1
1
1
1
1
1
1
1
1
11
n
n
n
n
nnn
n
nn
nnnn
n
nn
nnn
n
nn
nn
n
nn
n
n
nn
nn
n
nn
nn
n
n
n
n
ppp
pppp
ppp
pp
pp
ppp
ppp
z
z
z
z
zzzxzx
zzzzxzx
zzzxzx
zzxzx
zxzx
zzxzx
zzxzxz
(13.34)より
バックワード再帰 8
図13.13
1
)|()|()()( 1111
n
nnnnnn ppz
zzzxzz (13.38)
1)( Nz初期条件
1
1
1
1
)|()|()|(
)|()|(
)|(),|(
)|,(
)|()(
11112
111
111
11
1
n
n
n
n
nnnnn
N
n
nnn
N
n
nnnn
N
n
nn
N
n
n
N
nn
ppp
pp
pp
p
p
z
z
z
z
zzzxzx
zzzx
zzzzx
zzx
zxz
βの定義(13.35)より
EMの途中経過のチェックのため、尤度関数は重要
任意のnについて(13.41)が成り立つ
n=Nのとき(13.42)となりbackwardが不要
指数時間から線形時間に計算量を削減した
尤度関数 9
N
n
N
nnp
z
z
z
zzX
)(
)()()(
(13.41)
(13.42)
ξの求め方 10
)(
)()|()|()(
)(
)()|()|()|()|(
)(
),(),|(
)|,(),(
11
1111
1
1
11
11
X
zzzzxz
X
zzzzxzxzx
X
zzzzX
Xzzzz
p
pp
p
ppppp
p
pp
p
nnnnnn
nnnn
N
nnnn
n
nnnn
nnnn
(13.43)
←ξの定義より
←ベイズの定理より
←(13.29)より
←αとβの定義より
γが求まったのであとはξが求まればよい
ξもαとβから求められる!
HMMにおけるEMアルゴリズム 11
1. 初期化• パラメータθ=(π,A,φ)• ランダムまたは一様に初期化
2. Eステップ• フォワード再帰・バックワード再帰を実行• γとξが求まる• 尤度関数も求められる
3. Mステップ• γとξを使ってパラメータθを更新
4. 2と3を繰り返す• 尤度関数が変化しなくなるまで
実装してみた 12
http://github.com/nokuno/nokuno/blob/master/python/ml/hmm.py
Pythonで100行程度
フォワード再帰 13
出力確率(この場合は離散変数なので多項分布)
(13.37)で初期化、(13.36)でメッセージを伝播
バックワード再帰 14
全部1に初期化、(13.38)でメッセージを伝播
フォワード・バックワード 15
尤度関数(13.42)
forward()とbackward()を呼び出し、γを(13.33)で、ξを(13.43)で求める
EMアルゴリズム 16
Eステップ: forward_backwardを呼び出しMステップ:(13.18) (13.19) (13.23)を使ってパラメータ更新
補助関数 17
実行結果 18
データ数6、次元数3、状態数2
余談 19
変数名 p[x][y] の意味は…?
(1) P(x | y)
見た目通りだが、p[x]が確率にならない(2) P(y | x)
p[x]が確率の条件を満たす
第2回自然言語処理勉強会@東京をやります
日程候補:8/7, 8/8, 8/21, 8/22
発表者を募集中
FSNLPの輪読・論文紹介・実装してみた等
会場はクックパッド(白金台)の予定
宣伝 20
http://groups.google.co.jp/group/tokyotextmining