13.2.2 フォワード・バックワードアルゴリズム #prml

20
13.2.2 フォワード・バックワードアルゴリズム #prml @nokuno

Upload: yoh-okuno

Post on 28-May-2015

4.708 views

Category:

Documents


1 download

DESCRIPTION

PRML読書会の発表資料です.

TRANSCRIPT

Page 1: 13.2.2 フォワード・バックワードアルゴリズム #prml

13.2.2 フォワード・バックワードアルゴリズム

#prml

@nokuno

Page 2: 13.2.2 フォワード・バックワードアルゴリズム #prml

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関数の導出が難しかったので補足してみる

Page 3: 13.2.2 フォワード・バックワードアルゴリズム #prml

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)

Page 4: 13.2.2 フォワード・バックワードアルゴリズム #prml

EMアルゴリズムのEステップに対応

γとξを求める効率的な方法

Forward-BackwardまたはBaum-Welchと呼ばれる

出力確率の形、離散か連続かは無関係

13.2.2 フォワードバックワード 4

Page 5: 13.2.2 フォワード・バックワードアルゴリズム #prml

条件付き独立性を書き下す 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 ,,

以下の省略記法を用いる

Page 6: 13.2.2 フォワード・バックワードアルゴリズム #prml

γの求め方 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)

ベイズの定理と条件付き独立性を使って、γをαとβの積の形で書ける

Page 7: 13.2.2 フォワード・バックワードアルゴリズム #prml

フォワード再帰 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)より

Page 8: 13.2.2 フォワード・バックワードアルゴリズム #prml

バックワード再帰 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)より

Page 9: 13.2.2 フォワード・バックワードアルゴリズム #prml

EMの途中経過のチェックのため、尤度関数は重要

任意のnについて(13.41)が成り立つ

n=Nのとき(13.42)となりbackwardが不要

指数時間から線形時間に計算量を削減した

尤度関数 9

N

n

N

nnp

z

z

z

zzX

)(

)()()(

(13.41)

(13.42)

Page 10: 13.2.2 フォワード・バックワードアルゴリズム #prml

ξの求め方 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)より

←αとβの定義より

γが求まったのであとはξが求まればよい

ξもαとβから求められる!

Page 11: 13.2.2 フォワード・バックワードアルゴリズム #prml

HMMにおけるEMアルゴリズム 11

1. 初期化• パラメータθ=(π,A,φ)• ランダムまたは一様に初期化

2. Eステップ• フォワード再帰・バックワード再帰を実行• γとξが求まる• 尤度関数も求められる

3. Mステップ• γとξを使ってパラメータθを更新

4. 2と3を繰り返す• 尤度関数が変化しなくなるまで

Page 12: 13.2.2 フォワード・バックワードアルゴリズム #prml

実装してみた 12

http://github.com/nokuno/nokuno/blob/master/python/ml/hmm.py

Pythonで100行程度

Page 13: 13.2.2 フォワード・バックワードアルゴリズム #prml

フォワード再帰 13

出力確率(この場合は離散変数なので多項分布)

(13.37)で初期化、(13.36)でメッセージを伝播

Page 14: 13.2.2 フォワード・バックワードアルゴリズム #prml

バックワード再帰 14

全部1に初期化、(13.38)でメッセージを伝播

Page 15: 13.2.2 フォワード・バックワードアルゴリズム #prml

フォワード・バックワード 15

尤度関数(13.42)

forward()とbackward()を呼び出し、γを(13.33)で、ξを(13.43)で求める

Page 16: 13.2.2 フォワード・バックワードアルゴリズム #prml

EMアルゴリズム 16

Eステップ: forward_backwardを呼び出しMステップ:(13.18) (13.19) (13.23)を使ってパラメータ更新

Page 17: 13.2.2 フォワード・バックワードアルゴリズム #prml

補助関数 17

Page 18: 13.2.2 フォワード・バックワードアルゴリズム #prml

実行結果 18

データ数6、次元数3、状態数2

Page 19: 13.2.2 フォワード・バックワードアルゴリズム #prml

余談 19

変数名 p[x][y] の意味は…?

(1) P(x | y)

見た目通りだが、p[x]が確率にならない(2) P(y | x)

p[x]が確率の条件を満たす

Page 20: 13.2.2 フォワード・バックワードアルゴリズム #prml

第2回自然言語処理勉強会@東京をやります

日程候補:8/7, 8/8, 8/21, 8/22

発表者を募集中

FSNLPの輪読・論文紹介・実装してみた等

会場はクックパッド(白金台)の予定

宣伝 20

http://groups.google.co.jp/group/tokyotextmining