hmm, memm, crf メモ

32
HMM, MEMM, CRF メモ CRFの論文を読むための個人的メモ~

Upload: takeshi-arabiki

Post on 28-May-2015

6.817 views

Category:

Technology


1 download

DESCRIPTION

2010-06-21にhandsOutにアップした資料の明らかな間違いを修正した資料です。

TRANSCRIPT

Page 1: HMM, MEMM, CRF メモ

HMM, MEMM, CRF メモ

~CRFの論文を読むための個人的メモ~

Page 2: HMM, MEMM, CRF メモ

Hidden Markov Model

Page 3: HMM, MEMM, CRF メモ

P (X,Y ) = P (Y )P (X|Y ) =�

t

P (Yt|Yt−1)P (Xt|Yt)

Yt−1 Yt Yt+1

Xt+1XtXt−1

HMMの特徴観測系列Xや状態系列Yの生起確率を定義する(同時確率)単純マルコフ過程を仮定(現在の状態は1つ前の状態にしか依存しない)

生成モデルである

HMMのグラフィカルモデル(黒丸はモデルが生成する要素)

効率的なアルゴリズムが存在する前向きアルゴリズム,Viterbi アルゴリズムなど

P (X,Y )

Page 4: HMM, MEMM, CRF メモ

P (X) =�

Y

P (X,Y )

argmaxY

P (Y |X) = argmaxY

P (X,Y )

P (X)= argmax

YP (X,Y )

HMMで使われるアルゴリズム観測系列 X が観測される確率を与える評価問題(言語モデルなどに使われる)

効率的な算出アルゴリズムが存在する→ 前向きアルゴリズム,後ろ向きアルゴリズム

復号化問題(形態素解析などに使われる)観測系列 X を生成した可能性の最も高い状態系列Yを推定する

効率的な算出アルゴリズムが存在する → Viterbiアルゴリズム

パラメータ推定EMアルゴリズムに基づく効率的なアルゴリズムが存在する→ 前向き・後ろ向きアルゴリズム(Baum-Welch アルゴリズム)※学習データに状態系列の情報も含まれる場合は最適解が求まる

Page 5: HMM, MEMM, CRF メモ

xt ∈ O yt ∈ S

O(|S|2T )

前向きアルゴリズム指定した観測系列を得られる確率を効率的に算出することができる

を計算したい!

計算量

のうち, を生成して t 番目の状態が である確率(前向き確率)を導入

1. 初期化(sS は状態集合Sに含まれない全系列共通の初期状態)

2. t = 1, ..., T – 1 について前向き確率を再帰的に計算

3. 最終確率の計算(sE は状態集合Sに含まれない全系列共通の最終状態)

=

前向きアルゴリズムの手順

状態集合出力シンボル集合P (X = x) =

y

P (X1 = x1, · · · , XT = xT ,Y = y)

x = x1 · · ·xT six1 · · ·xt

αt(x, si) = P (X1 = x1, · · · , Xt = xt, Yt = si)

α1(x, si) = P (Y1 = si|Ys = ss)P (X1 = x1|Y1 = si)

αt+1(x, si) =

j

αt(x, sj)P (si|sj)

P (xt+1|si)

P (x) =�

j

αT (x, sj)P (sE |sj)

1

Page 6: HMM, MEMM, CRF メモ

αt(x, s2) = P (x1, x2, Y2 = s2)

前向きアルゴリズム具体例(状態数|S| = 3,系列の長さ4の場合)

sS

s1

s2

s3

sE

YS Y1 Y2 Y3 Y4 YE

X1 X2 X3 X4

s1

s2

s3

s1

s2

s3

s1

s2

s3

s2

x1 x2

Page 7: HMM, MEMM, CRF メモ

xt+1 · · ·xT

後ろ向きアルゴリズム前向きアルゴリズムの逆バージョン

のうち,状態が から始めて を生成する確率(後ろ向き確率)を導入

1. 初期化( sE は状態集合Sに含まれない全系列共通の最終状態)

2. t = T – 1, ..., 1 について後ろ向き確率を再帰的に計算

3. 最終確率の計算( sS は状態集合Sに含まれない全系列共通の初期状態)

=

計算量後ろ向きアルゴリズムの手順

x = x1 · · ·xT si

βt(x, si) =

�P (xt+1, · · · , xT , Yt = si) if t = 1, · · · , T − 1

P (Yt = si) if t = T

O(|S|2T )

βT (x, si) = P (sE |si)

P (x) =�

j

P (sj |sS)P (xt|sj)β1(x, sj)

βt(x, si) =�

j

P (sj |si)P (xt|sj)βt+1(x, sj)

※定義が異なるものもあるので注意

1

Page 8: HMM, MEMM, CRF メモ

β3(x, s1) = P (x4, Y3 = s1)

後ろ向きアルゴリズム具体例(状態数|S| = 3,系列の長さ4の場合)

sS

s1

s2

s3

sE

YS Y1 Y2 Y3 Y4 YE

X1 X2 X3 X4

s1

s2

s3

s1

s2

s3

s1

s2

s3

x4

s1

Page 9: HMM, MEMM, CRF メモ

y = argmaxy

P (y|x)

Viterbiアルゴリズム指定した観測系列を得られる確率の最も高い状態系列を効率的に推定できる

を求めたい!

のうち, を生成して t 番目の状態が である状態系列の最大の確率を導入

1. 初期化(sS は状態集合Sに含まれない全系列共通の初期状態)

2. t = 1, ..., T – 1 について最大の確率と,その確率を与える状態を再帰的に計算

3. 最終確率の計算(sE は状態集合Sに含まれない全系列共通の最終状態)

=

4. t = T – 1, ..., 1 に対して最適状態系列を復元

Viterbi アルゴリズムの手順

← 最大の確率を与える状態を記憶

計算量 のはず

x = x1 · · ·xT x1 · · ·xt si

O(|S|2T )δt(x, si) = max

y1···yt−1

P (x1, · · · , xt, y1, · · · , yt−1, Yt = si)

δ1(x, si) = P (si|sS)P (x1|si)

δt+1(x, si) = maxsj

[δt(x, sj)P (si|sj)]P (xt+1|si)ψt(x, si) = argmax

sj[δt(x, sj)P (si|sj)]

maxy

P (x,y) = maxsj

[δT (x, sj)]P (sE |sj)

yT = argmaxsj

δT (x, sj)

yt = ψt(x, yt+1)

1

Page 10: HMM, MEMM, CRF メモ

argmaxsj

δ4(x, sj) = s1

ψt(x, sj)

Viterbiアルゴリズム具体例(状態数|S| = 3,系列の長さ4の場合)

1 2 3

s1 s1 s3 s1

s2 s1 s2 s3

s3 s2 s1 s1

sjt

sS

s1

s2

s3

sE

YS Y1 Y2 Y3 Y4 YE

X1 X2 X3 X4

s1

s2

s3

s1

s2

s3

s1

s2

s3

x1 x2 x3 x4

sS s2 s3 s1 sEs1

Page 11: HMM, MEMM, CRF メモ

γt(si, sj |θ) = P (Yt = si, Yt+1 = sj |x,θ)

=αt(si|θ)P (sj |si,θ)P (xt+1|sj ,θ)βt+1(sj |θ)�

k αT (sk|θ)P (sE |sk,θ) P (x|θ)

γT (si, ·|θ) =αT (si|θ)�k αT (sk|θ)

前向き後ろ向きアルゴリズム効率的なパラメータ推定(Baum-Welch アルゴリズムとも呼ぶ)

=

次のような γ を導入(前向き後ろ向きアルゴリズムのミソ)

※θは求めるパラメータで今まで省略してきた

sS

s1

s2

s3

sE

YS Y1 Y2 Y3 Y4 YE

X1 X2 X3 X4

s1

s2

s3

s1

s2

s3

s1

s2

s3

1

Page 12: HMM, MEMM, CRF メモ

θ ← θ = (· · · , πi, · · · , aij , · · · , bik, · · · )

パラメータの更新パラメータ

その他の変数の導入

更新式

※O は出力シンボル集合

初期状態確率

遷移確率

シンボル出力確率

θ = (π1, · · · ,π|S|, a11, · · · , a|S||S|, b11, · · · , b|S||O|)

γt(si|θ) =�

sj∈S

γt(si, sj |θ) t = 1, · · · , T − 1

πi = P (si|sS ,θ) = γ1(si|θ)

aij = P (sj |si,θ) =�T−1

t=1 γt(si, sj |θ)�T−1t=1 γt(si|θ)

bik = P (ok|si,θ) =�

t:xt=okγt(si|θ)

�Tt=1 γt(si|θ)

Page 13: HMM, MEMM, CRF メモ

Maximum Entropy Markov Model

Page 14: HMM, MEMM, CRF メモ

HMMの問題点

同時に起こりうる素性 (features) を扱うのが困難

→ 考えうる全ての観測値についての条件付き確率を定義しなければならない→ 未定義の観測値が観測されると破綻するので未定義値の観測確率を付与

柔軟性が少ない

生成モデルである観測系列Xや状態系列Yの生起確率を定義する(同時確率)

(例)観測系列が単語列, 状態系列が品詞の場合

大文字で始まるかどうかと‘er’で終わるかどうかという素性があった場合、これらの素性は同時に起こりうる!

HMMだと大文字で始まるかどうかか‘er’で終わるかどうかのどちらかしか扱えない! (無理矢理扱おうとすると「大文字で始まる かつ ‘er’で終わる」, 「大文字で始まる かつ ‘er’で終わらない」 …という場合分けが必要)

Page 15: HMM, MEMM, CRF メモ

[[x = y]] =

�1 if x = y

0 if x �= y

MEMMの特徴

MEMMのグラフィカルモデル(黒丸はモデルが生成する要素)

複数の素性を容易に取り込むことが可能

識別モデルである(最大エントロピーモデル)観測系列Xが与えられた場合の状態系列Yの条件付き確率を定義する※観測系列の独立性を仮定する必要がない

は規格化定数

素性関数重み (パラメータ)

HMMの効率的なアルゴリズムをほとんどそのまま適用可能

Yt−1 Yt Yt+1

Xt+1XtXt−1

Z(Xt, Yt−1)

Ps(Yt|Xt) =1

Z(Xt, s)exp

��

a

λafa(Xt, Yt)

�P (Y |X) =�

t

Ps(Yt|Xt)[[Yt−1 = s]]

状態 s ごとにMEモデルを構築

Page 16: HMM, MEMM, CRF メモ

f<begins-with-number,question> = 1

素性関数素性(features)を扱う2値の関数

素性関数の例(Usenet の FAQ ページで行毎にタグ付け)

begins-with-numberbegins-with-ordinalbegins-with-punctuationbegins-with-question-wordbegins-with-subjectblankcontains-alphanumcontains-bracketed-numbercontains-httpcontains-non-spacecontains-numbercontains-pipe

contains-question-markcontains-question-wordends-with-question-markfirst-alpha-is-capitalizedindentedindented-1-to-4indented-5-to-10more-than-one-third-spaceonly-punctuationprev-is-blankprev-begins-with-ordinalshorter-than-30

Xt が1行の単語列に相当

各行に head, question, answer, tail をタグ付け

例えば t 行目が数字で始まって question の場合

素性一覧

f<b,s>(Xt, Yt) =

�1 if b(Xt) is true and Yt = s

0 otherwise

※この素性関数が1になることで確率が最大になるようなら t 行目は question

Page 17: HMM, MEMM, CRF メモ

最尤状態系列の推定指定した観測系列を得られる確率の最も高い状態系列を効率的に推定できる

を求めたい!

1. 初期化(sS は状態集合Sに含まれない全系列共通の初期状態)

2. t = 1, ..., T – 1 について最大の確率と,その確率を与える状態を再帰的に計算

3. 最終確率の計算

4. t = T – 1, ..., 1 に対して最適状態系列を復元

Viterbi アルゴリズムの手順

← 最大の確率を与える状態を記憶

y = argmaxy

P (y|x)

のうち, を生成して t 番目の状態が である状態系列の最大の確率を導入x = x1 · · ·xT x1 · · ·xt si

δ1(si|x) = P (si|sS , x1)

δt+1(si|x) = maxsj

[δt(sj |x)P (si|sj , xt+1)]

ψt(si|x) = argmaxsj

[δt(sj |x)P (si|sj , xt+1)]

maxy

P (y|x) = maxsj

δT (sj |x)

yT = argmaxsj

δT (sj |x)

yt = ψt(yt+1|x)

δt(si|x) = maxy1···yt−1

P (y1, · · · , yt−1, Yt = si|x1, · · · , xt)

Page 18: HMM, MEMM, CRF メモ

(x(1),y(1)), · · · , (x(n),y(n))

MEMMのパラメータ学習Generalized Iterative Scaling の場合

1. 素性の総和が任意のo, s に関してCで一定とする

※ 一定にならない場合は以下のような素性を導入

2. 学習データ に対して素性関数の経験的期待値を算出

3. 現在のパラメータで素性関数の期待値を算出(x は学習データに現れたものだけ考慮)

4. パラメータを更新

5. 3, 4を収束するまで全パラメータについて繰り返す(状態 s ごとにMEモデルを学習)

fc(o, s) ≥ 0 ∀o, sfc(o, s) = C −�

a

fa(o, s)

C =�

a

fa(o, s)

E[fa] =1

n

n�

i=1

1

m(i)s

t:yt−1=s

fa(x(i)t , y(i)t )

E[fa] =1

n

n�

i=1

1

m(i)s

t:yt−1=s

y∈S

Ps(y|xt,λ)fa(x(i)t , y)

λnewa = λa +1

Clog

�E[fa]

E[fa]

Page 19: HMM, MEMM, CRF メモ

Conditional Random Fields

Page 20: HMM, MEMM, CRF メモ

MEMMの問題点ラベルバイアスが起きる分岐の少ない経路が選ばれやすい

s0

s5

s4

s6

s3

s1

s2

0.65

0.351

0.5

0.5 1

1

1 s0 → s1 → s2 → s3 : 0.325

学習データにおいて x1 x2 x3 に対する s0 s1 s2 s3 , s0 s1 s4 s3

の出現頻度が多くても s0 s5 s6 s3 が選択される前の状態が同じデータで分割して独立にMEモデルを学習していることが原因

例:観測系列 x1 x2 x3 が得られた場合

確率なので総和が1

確率なので総和が1

s0 → s1 → s4 → s3 : 0.325

s0 → s5 → s6 → s3 : 0.35

Page 21: HMM, MEMM, CRF メモ

P (Y |X) =1

Z(X)exp

t,i

λifi(Yt−1, Yt,X, t) +�

t,j

µjgj(Yt,X, t)

Z(X)

X

状態遷移に関する素性

CRFの特徴

CRFのグラフィカルモデル(黒丸はモデルが生成する要素)

MEMMの良い点を取り込める識別モデル,複数の素性を取り込むことが可能

は規格化定数

状態に関する素性(実は分ける必要ない)

系列全体に対して学習

観測系列全体を考慮した素性を定義できる

HMMと同様の効率的なアルゴリズムが存在

ラベルバイアスを解消

Yt−1 Yt Yt+1

Page 22: HMM, MEMM, CRF メモ

log

��

t

P (Yt|Yt−1)P (Xt|Yt)

=�

t

{logP (Yt|Yt−1) + logP (Xt|Yt)}

=�

t

<s,s�>

[[Yt−1 = s�]][[Yt = s]] logP (s|s�) +�

<o,s>

[[Xt = o]][[Yt = s]] logP (o|s)

=�

<s,s�>

logP (s|s�)[[Yt−1 = s�]][[Yt = s]] +�

t,<o,s>

logP (o|s)[[Xt = o]][[Yt = s]]

P (Y |X) =1

P (X)exp

t,<o,s>

λ<o,s>f<o,s>(Yt−1, Yt,X, t) +�

t,<s,s�>

µ<s,s�>g<s,s�>(Yt,X, t)

o

exp(λ<o,s>) = 1�

s

exp(µ<s,s�>) = 1

HMMとCRFの関係

CRF風に書くと

ただし

P (X,Y ) = P (Y )P (X|Y ) =�

t

P (Yt|Yt−1)P (Xt|Xt)

λ<o,s> f<o,s>(Yt−1, Yt,X, t) g<s,s�>(Yt,X, t)µ<s,s�>

Page 23: HMM, MEMM, CRF メモ

yT = argmaxsm

δT (x, sm)

x sk

最尤状態系列の推定

を観測して t 番目の状態が である長さ k の状態系列について次の値を導入

1. 初期化(sS は状態集合Sに含まれない全系列共通の初期状態)

2. k = 1, ..., T – 1 について最大の確率と,その確率を与える状態を再帰的に計算

3. 最終確率の計算

4. t = T – 1, ..., 1 に対して最適状態系列を復元

Viterbi アルゴリズムの手順

← 最大値を与える状態を記憶

を求めたい!

とおく.

yt = ψk(x, yt+1)

δ1(x, sl) = h1(sS , sl,x)

δk+1(x, sl) = maxsm

[δk(x, sm) + hk+1(sm, sl,x)]

ψk(x, sl) = argmaxsm

[δk(x, sm) + hk+1(sm, sl,x)]

δk(x, sl) = maxy1···yk−1

�k−1�

t=1

ht(yt−1, yt,x) + hk(yk−1, sl,x)

y = argmaxy

P (Y |X) = argmaxy

t,i

λi(Yt−1, Yt,X, t) +�

t,j

µjgj(Yt,X, t)

ht(Yt−1, Yt,X) =�

t,i

λi(Yt−1, Yt,X, t) +�

t,j

µjgj(Yt,X, t)

Page 24: HMM, MEMM, CRF メモ

パラメータ学習(変数の定義)(|S| + 2) × (|S| + 2) の行列 を導入

各要素

|S| + 2 次元の前向きベクトル    を導入

|S| + 2 次元の後ろ向きベクトル    を導入

の各要素

の各要素

sS

sm

sE

sl

Mt(X)

Mt(sl, sm|X) = expht(sl, sm,X)

αt(X)

α0(Y |X) =

�1 if Y = sS0 otherwise

βT+1(Y |X) =

�1 if Y = sE0 otherwise

αt(X)T = αt−1(X)TMt(X)

βt(X)

βt(X) = Mt+1(X)βt+1(X)

sS sEMt(X)

αt(X)

βt(X)

Page 25: HMM, MEMM, CRF メモ

パラメータ学習

Cの値が大きいのでMEMMよりも収束が遅い

(x(1),y(1)), · · · , (x(n),y(n))

Generalized Iterative Scaling の場合1. 素性の総和が任意の学習データに関してCで一定とする

※ 一定にならない場合は以下のような素性関数を導入

2. 学習データ に対して素性関数の経験的期待値を算出

3. 現在のパラメータで素性関数の期待値を算出(x は学習データに現れたものだけ考慮)

4. パラメータを更新

5. 3, 4を収束するまで全パラメータについて繰り返す

C =�

t,i

fi(yt−1, yt,x, t) +�

t,j

gj(yt,x, t)

c(x,y) = C −�

t,i

fi(yt−1, yt,x, t)−�

t,j

gj(yt,x, t)

λnewi = λi +1

Clog

�E[fi]

E[fi]

E[fi] =1

n

n�

k=1

t

sl,sm

αt−1(sl|x(k),λ,µ)Mt(sl, sm|x(k),λ,µ)βt(sm|x(k),λ,µ)

Z(x(k)|λ,µ)fi(sl, sm,x(k), t)

Z(x) =

��

t

Mt(x)

sS ,sE

P (Yt−1 = sl, Yt = sm|x,λ,µ)E[fi] =1

n

n�

k=1

t

fi(y(k)t−1, y

(k)t ,x(k), t)

c(x(k),y(k)) ≥ 0 k = 1, · · · , n

Page 26: HMM, MEMM, CRF メモ

参考文献• 北 研二, 辻井 潤一 (著). 確率的言語モデル. 東京大学出版会, 1999.

• A. McCallum, D. Freitag, and F. Pereira. Maximum entropy Markov models for information extraction and segmentation. Proc. ICML, pp. 591-598, 2000.

• J. Lafferty, A. McCallum, and F. Pereira. Conditional random fields: probabilistic models for segmenting and labeling sequence data. Proc. ICML, pp. 282-289 , 2001.

• Charles Elkan. Log-Linear Models and Conditional Random Fields. Notes for a tutorial at CIKM, 2008.

• Hanna M. Wallach. Conditional Random Fields: An Introduction. Technical Report MS-CIS-04-21. Department of Computer and Information Science, University of Pennsylvania, 2004.

• 工藤 拓, 山本 薫, 松本 裕治. Conditional Random Fields を用 いた日本語形態素解析. 情報処理学会研究報告, pp. 89-96, 2004.

• http://www.dbl.k.hosei.ac.jp/~miurat/readings/Nov0706b.pdf• http://www.dbl.k.hosei.ac.jp/~miurat/readings/Nov0706a.pdf

Page 27: HMM, MEMM, CRF メモ
Page 28: HMM, MEMM, CRF メモ

メモなど

Page 29: HMM, MEMM, CRF メモ

Conditional Random Fields観測系列Xが与えられたときにマルコフ性を満たす(近傍のノードにしか影響を受けない)

Y1はY2とY3のみに影響を受ける

Y4はY5のみに影響を受ける

Y5はY4とY6のみに影響を受ける

Xを観測することで経路を遮断

cf. PRML8章

極大クリーク

Page 30: HMM, MEMM, CRF メモ

p(y|x) = 1

Z

C

ψC(yC |x) =1

Zexp

�−�

C

E(yC |x)�

chain-structed CRFs鎖状につながったグラフィカルモデル

Y1はY2のみに影響を受ける

Y2はY1とY3のみに影響を受ける極大クリーク

無向グラフの同時確率は以下のように表せる(PRML8章)

X

Y1 Y2 Y3 Y4 Y5 Y6

Page 31: HMM, MEMM, CRF メモ

E(yC |x) = −�

j

λjtj(yi−1, yi,x, i)−�

k

µksk(yi,x, i)

sk(yi−1, yi,x, i)

E(yC |x) = −�

j

λjfj(yi−1, yi,x, i)

エネルギー関数の定義

Eをどう決めるか?

y_i-1からy_iへの遷移素性

(極大クリークに関する素性)

y_iの出力素性

極大クリークとは関係なし

と表記すると2つの項をまとめて表記できる

素性はたくさんあるので足し合わせている!

p(y|x) = 1

Z

C

ψC(yC |x) =1

Zexp

�−�

C

E(yC |x)�

Page 32: HMM, MEMM, CRF メモ

エネルギー関数の定義2

i は yi がクリークCに属するように選択最大エントロピーモデルと同じ形

CRFは最大エントロピーモデルの素性を極大クリークに限った特殊形

E(yC |x) = −�

j

λjfj(yi−1, yi,x, i)

−�

C

E(yC |x) =�

C

j

λjfj(yi−1, yi,x, i)

=�

j

λjFj(y,x)

Fj(y|x) =�

C

λjfj(yi−1, yi,x, i)

p(y|x) = 1

Zexp

j

λjFj(y,x)