Accumulate-Discount algorithm for Linear-Chain CRFs

34
可可可可可可 Linear-Chain CRF 可 可可可可可可可 可可可可 可可可可可可 可可可可可可可 可可可可可可 可可 () 2可 可可可可 1

Transcript of Accumulate-Discount algorithm for Linear-Chain CRFs

Page 1: Accumulate-Discount algorithm for Linear-Chain CRFs

可変オーダーLinear-Chain CRF の

効率的な計算法

京都大学 情報学研究科知能情報学専攻(黒橋研究室) 修士 2 年

真鍋宏史

1

Page 2: Accumulate-Discount algorithm for Linear-Chain CRFs

発表の流れ• 研究の背景• 関連研究• 提案手法の概要• Linear-Chain CRF• 可変オーダー Linear-Chain CRF• 提案手法

– 期待値計算– デコード

• 考察2

Page 3: Accumulate-Discount algorithm for Linear-Chain CRFs

研究の背景

• 系列ラベリング:品詞タグ付け、チャンキング…

• MEMM– 最大エントロピー法を分岐ごとに適用– 計算が単純・高次に適用しやすい– 英語の POS-Tagging で利用

• Linear-Chain CRF– 最大エントロピー法を系列全体に適用– 一般的には bigram 素性まで– 次数を 1 上げるごとに、計算量がラベル数倍3

Page 4: Accumulate-Discount algorithm for Linear-Chain CRFs

関連研究 :Semi Markov CRF(1)

• Semi-Markov CRF

4

(出所) "Semi-Markov Conditional Random Fields を用いた固有表現抽出に関する研究 2006 年 福岡 健太

Page 5: Accumulate-Discount algorithm for Linear-Chain CRFs

関連研究 :Semi Markov CRF(2)

• Sarawagi et al., 2004– ノードの長さを可変長に– チャンクを対象とするものに対して有効

(チャンキング・固有表現抽出等)– 計算量は Linear-Chain CRF 以上

• 次数を上げることは同様に困難

5

Page 6: Accumulate-Discount algorithm for Linear-Chain CRFs

関連研究 :Sparse Higher Order CRFs

• Qian et al, 2009– 可変オーダー– Zs:t = Zs × Zs+1 ×… × Zt の形で表されるラベル列の

集合に対して素性関数を設定– どのような問題で効率的に計算可能か示され

ていない (Ye at al., 2009 で指摘 )

6

Page 7: Accumulate-Discount algorithm for Linear-Chain CRFs

関連研究 :CRFs with High-Order Features

• Ye at al, 2009– Linear-Chain CRF で高次の素性を扱う– 本研究と同じモデル(後述)– 線形時間での training/inference– それほど効率的ではない

O(M3K4X) for one iteration of training(M: # of distinct label patterns of feature functions, K: Maximum order, X: |x|)

7

Page 8: Accumulate-Discount algorithm for Linear-Chain CRFs

提案手法の概要

• アクティブな素性を持つパスに限定することで可変オーダーの Linear-Chain CRF に対する期待値を効率的に計算– 「累積・差分アルゴリズム」

最悪計算量: O(NKX)(N: 一つの位置でアクティブになる素性数の平均、 K: 素性の平均オーダー )

8

Page 9: Accumulate-Discount algorithm for Linear-Chain CRFs

Linear-Chain CRF(1)

• 最大エントロピーモデルの一種• MEMM :遷移ごとの最大エントロピー

CRF :可能な系列すべての最大エントロピー

• 可能な系列→指数的DP (前向き・後ろ向きアルゴリズム)で期待値計算

9

Page 10: Accumulate-Discount algorithm for Linear-Chain CRFs

Linear-Chain CRF(2)

• Forward-backward Score を計算→ Edge の期待値を計算(Normalization factor: Forward score で )

A

A

B

B

[BOS] [EOS]

3

0.5

3

42

4

2

1

F:3

F:0.5

F:10

F:14

F:34=Z B :1

B :2

B :1

B :10

B :8

F:1 B :34=Z

(3×4×1)/34

10

Page 11: Accumulate-Discount algorithm for Linear-Chain CRFs

高次 Linear-Chain CRF

• Linear-Chain CRF は一般には 1 次• これを単純に高次に拡張→計算量の問題

– Feature 数が指数的に増加– パス数も指数的に増加

11

Page 12: Accumulate-Discount algorithm for Linear-Chain CRFs

計算量の問題:素性数 (1)

• 例えば、 3 次の場合 :– ある feature function : f (x, yi-3, yi-2, yi-1, yi)

• X について条件を設定( ex: 大文字で始まる)

• X についての条件がなければ、純粋な遷移素性(transition feature)

– すべてのラベルの組み合わせについて素性関数を生成

12

Page 13: Accumulate-Discount algorithm for Linear-Chain CRFs

計算量の問題:素性数 (2)

• ラベル L:[L1, L2] 、 f(xi) を x に関する関数とすると f1(xi, yi-3, yi-2, yi-1, yi)=1 if yi-3 = L1 and yi-2 = L1 and yi-1 = L1 and yi = L1 and f(xi) f2(xi, yi-3, yi-2, yi-1, yi)=1 if yi-3 = L2 and yi-2 = L1 and yi-1 = L1 and yi = L1 and f(xi) f3(xi, yi-3, yi-2, yi-1, yi)=1 if yi-3 = L1 and yi-2 = L2 and yi-1 = L1 and yi = L1 and f(xi) f4(xi, yi-3, yi-2, yi-1, yi)=1 if yi-3 = L2 and yi-2 = L2 and yi-1 = L1 and yi = L1 and f(xi)… ( 2^4 通り)→次数に対して指数的に増加 13

Page 14: Accumulate-Discount algorithm for Linear-Chain CRFs

計算量の問題:パス数 (1)

• 前向き・後ろ向きアルゴリズム– 動的計画法– 1 次の Linear-Chain CRF の場合で Θ(L2)[L: ラベ

ル数 ]• 次数が上がるとラベル数倍

– すべての可能なラベルの組み合わせについて計算

14

Page 15: Accumulate-Discount algorithm for Linear-Chain CRFs

計算量の問題:パス数 (2)• 3 次の場合:

15

L1L1L1

L2L1L1

L1L2L1

L2L2L1

L1L1L2

L2L1L2

L1L2L2

L2L2L2

L1L1L1

L2L1L1

L1L2L1

L2L2L1

L1L1L2

L2L1L2

L1L2L2

L2L2L2

L1L1L1

L2L1L1

L1L2L1

L2L2L1

L1L1L2

L2L1L2

L1L2L2

L2L2L2

L1L1L1

L2L1L1

L1L2L1

L2L2L1

L1L1L2

L2L1L2

L1L2L2

L2L2L2

23 通りのノード、 24 通りのパス(指数的)

Page 16: Accumulate-Discount algorithm for Linear-Chain CRFs

本研究で採用する方式

• Feature function のオーダーを限定せず、混在を許す– CRFs with High-Order Features (Ye et al, 2009)

• 訓練データ中で アクティブになる feature に限定 (sparse feature set) :– 訓練データ中に出現するパターン数は訓練デー

タのサイズに限定される(オーダーが増えても exponentially には増加しない)

16

Page 17: Accumulate-Discount algorithm for Linear-Chain CRFs

Sparse Feature Set

• FlexCRF(Phan et al. 2005) 、 CRFSuite(Okazaki, 2007) で実装 (optional in CRFSuite)– Training data 中でアクティブになった feature

のみを使用– Feature 数を大幅に減らすことが可能– 計算量 : 半分以下

Model size: 15% 程度Tagging accuracy:96.06%(dense) vs. 96.00%(sparse)(CRFSuite, CoNLL 2000 chunking shared task)

17

Page 18: Accumulate-Discount algorithm for Linear-Chain CRFs

本研究でのFeature function の生成方法

• Sparse feature set を高次に適用• すべての f(x, y) のパターンを生成するの

ではなく、 訓練データ中で出現するラベル列に対してのみ素性関数を生成する– f(x, y)→ b(x) ・ L(y)– b(x) でそれぞれの位置に対する「属性

(attributes) 」を与え、訓練データ中でその属性に先行するラベル列を記録、足切り(出現回数・頻度等)を行った上で L(y) を選び、組み合わせて f(x, y) を作る

18

Page 19: Accumulate-Discount algorithm for Linear-Chain CRFs

Feature function の生成(例)

• b1(xt) = 1 if xt begins with upper case• 訓練データ :

... nonexective/JJ director/NN Nov./NNP ...

... chairman/NN of/IN Consolidated/NNP ...

... that/WDT makes/VBZ Kent/NNP ...↓f1(xt, yt) = 1 if b1(xt) and yt = NNPf2(xt, yt) = 1 if b1(xt) and yt = NNP and yt-1 = NNf3(xt, yt) = 1 if b1(xt) and yt = NNP and yt-1 = IN... 19

Page 20: Accumulate-Discount algorithm for Linear-Chain CRFs

累積・差分アルゴリズム

• 本研究のメイン• 前向き・後ろ向きアルゴリズムでは、す

べての可能な組み合わせを考える

• 出現した並びのみを考える→特別なアルゴリズムが必要

20

Page 21: Accumulate-Discount algorithm for Linear-Chain CRFs

基本アイデア (1)

• パスごとに次数が違う

21

A

B

C

D

E

A

B

BA

DB

( BA ・ DB 以外は 0 次)

A+B+C+D+E - B + BA

A

A+B+C+D+E - D + DB

Bここが共通:使い回す

Page 22: Accumulate-Discount algorithm for Linear-Chain CRFs

基本アイデア (2)

• 一般的な前向き・後ろ向きアルゴリズム–状態素性はノード、遷移素性はエッジ

• 本研究での表現–状態・遷移素性ともにノードのように扱う

動機:累計・差分による計算のため– 次の位置で必要となるラベル列に対して

スコアをまとめる(「チェックポイント」)

22

Page 23: Accumulate-Discount algorithm for Linear-Chain CRFs

基本アイデア (3)

• 単純な一次マルコフ過程

23

A

B

A

B

A

B

AA

BA

A

AB

BB

B

AA

BA

A

AB

BB

B

・次の位置で使うもの 残してまとめる・今の位置での スコアを合計(累積)

Page 24: Accumulate-Discount algorithm for Linear-Chain CRFs

基本アイデア (4)

• 二次マルコフの表現

24

AAA

BAA

AA

AAB

BAB

AB

ABA

BBA

BA

AAA…

AAA

BAA

AA

AAB

BAB

AB

ABA

BBA

BA

AAA…

AAA

BAA

AA

AAB

BAB

AB

ABA

BBA

BA

AAA…

...AAABAB

...BAABAB

...ABABAB

...BBABAB

...AABBAB

...BABBAB

...ABBBAB

...BBBBAB

Page 25: Accumulate-Discount algorithm for Linear-Chain CRFs

基本アイデア (5)

25

• 一次と二次が混在する場合

AA

BAA

A

BA

CA

AB

B

BB

CB

ACB

...AAAB

...BAAB

...CAAB

...ABAB

...BBAB

...CBAB

...ACAB

...BCAB

...CCAB

...ABAA

...BBAA

...CBAA

...AAAA

...BAAA

...CAAA

...ABAA

...BBAA

...CBAA

...ACAA

...BCAA

...CCAA

前位置で ?A

前位置で ?BA

前位置で ?A -前位置で ?BA

前位置で累積現位置で差分

Page 26: Accumulate-Discount algorithm for Linear-Chain CRFs

基本アイデア (6)

• 前位置で累計、現位置で差分

26

AA (-BAA)

BAA

?A

BA

CA

AB

?B

BB

CB (-ACB)

ACB

?B

?A

?BA

?C

?AC

累積

差分

累積

Page 27: Accumulate-Discount algorithm for Linear-Chain CRFs

基本アイデア (6)

• 長いものの分を短いものから差し引く

27

AA (-BAA)

BAA

?A

BA

CA

AB

?B

BB

CB (-ACB)

ACB

?B

?A

?BA

?C

?AC

累積

差分

累積

Page 28: Accumulate-Discount algorithm for Linear-Chain CRFs

基本アイデア (7)

• 後ろ向きの場合

28

?AA

?BAA

A

?BA

?CA

?AB

B

?BB

?CB

?ACB

B

A

BA(-A)

C

AC (-C)

差分

累積

Page 29: Accumulate-Discount algorithm for Linear-Chain CRFs

基本アイデア (8)

• 「最長接尾辞となるパス」を探し加減算

29

ABA

AAA

BA

A

ABA

AAA

BA(-ABA)

A(-AAA-BA)

BB

BAB

B

φ

BB

BAB

B(-BAB-BB)

φ(-A-B)

Page 30: Accumulate-Discount algorithm for Linear-Chain CRFs

基本アイデア (9)

• それぞれのパスのスコア=前向き(差分) × 後ろ向き(累積)=差分スコア

• 正規化係数で割ると、差分期待値に• 長いパスの差分期待値を短いパスに加え

30

AA (-BAA)

BAAAA

Page 31: Accumulate-Discount algorithm for Linear-Chain CRFs

累積・差分アルゴリズム:まとめ

• 動的計画法により、チェックポイント各パスへの前向き・後ろ向きスコアを計算

• 累積スコアの差分を取っていくことで、パスの数に対して線形オーダーで計算可能

• TODO:帰納法により定式化

31

Page 32: Accumulate-Discount algorithm for Linear-Chain CRFs

デコード

• 同様にパスとチェックポイントを作る• チェックポイントでは、それを含むパスの

最大スコアを記録する• パスでは、対応する前のチェックポイント

と、それを含むより長いチェックポイントの中で使用済みでないものから最大スコアを求め、パスの指数重みをかけてスコアを求める(使用済みフラグは、現在位置のラベルが変わるたびにクリア) 32

Page 33: Accumulate-Discount algorithm for Linear-Chain CRFs

実装

• パス・チェックポイントを使ったアルゴリズムは複雑、低水準言語での実装に向かない

• Python での実装を予定• 期待値計算に必要なのは加算・減算・乗

算のみ・全イテレーションで同じ順序– Python から C のソースを出力→コンパイル・

実行するという手法を検討

33

Page 34: Accumulate-Discount algorithm for Linear-Chain CRFs

考察

• 計算量は O(NKX) – 実際の応用では定数項の部分も重要

• 実装によって大きな差がある• 単純なアルゴリズムのほうが高速化しやすい• 高次の素性が「効いてくる」タスクでないと優位性を得ることが難しい

– N= トレーニングデータ中でアクティブになる素性関数の数に左右される

• スパースでないラベル列(品詞 trigram 等)を使うと計算量が大きくなる

34