Upload
nhi
View
47
Download
0
Embed Size (px)
DESCRIPTION
数理 言語情報論 第 11 回. 2009 年 12 月 16 日. 数理言語情報学研究室 講師 二宮 崇. 今日の講義の予定. 単一化アルゴリズム HPSG のフルパージング 生成モデルと識別モデル 教科書 北研二 ( 著 ) 辻井潤一 ( 編 ) 言語と計算 4 確率的言語モデル 東大出版会 C. D. Manning & Hinrich Schütze “FOUNDATIONS OF STATISTICAL NATURAL LANGUAGE PROCESSING” MIT Press, 1999 - PowerPoint PPT Presentation
Citation preview
1
数理言語情報論 第 11 回
数理言語情報学研究室 講師 二宮 崇
2009 年 12 月 16 日
2
今日の講義の予定
単一化アルゴリズム HPSG のフルパージング 生成モデルと識別モデル 教科書
北研二 ( 著 ) 辻井潤一 ( 編 ) 言語と計算 4 確率的言語モデル 東大出版会
C. D. Manning & Hinrich Schütze “FOUNDATIONS OF STATISTICAL NATURAL LANGUAGE PROCESSING” MIT Press, 1999
Christopher M. Bishop “PATTERN RECOGNITION AND MACHINE LEARNING” Springer, 2006
3
型付素性構造の単一化アルゴリズム
データ構造型テーブルヒープポインタ
アルゴリズムUnify(F, G)
破壊的単一化アルゴリズムF, G: ポインタ出力 : F, G のポインタは同じデータを指し、その
データが F, G の単一化の結果
4
型テーブル:型定義
(復習)型階層
⊥
特殊
一般
図形
丸
円
円筒
長方形
四角
菱形
正方形
bool
plusminus
head
subst
verbadj
perp
func
( ボトム )
5
型テーブル : 型の包摂関係
⊥
特殊
一般
t1
t2
t3
t6
t5
t4
t7
t8
t9
t10t11
( ボトム )
t12
t13
t4より特殊な型t4 ⊏ t5t4 ⊏ t6t4 ⊏ t7t4 ⊏ t8t4 ⊏ t12t4 ⊏ t13
t9より特殊な型t9 ⊏ t10t9 ⊏ t11t9 ⊏ t12t9 ⊏ t13
t4 ⊔ t9=t12型単一化の結果 : 共通の特殊な型のうち最も一般な型
6
型テーブル
型定義は単一化実行前に与えられていると仮定 静的に全ての型の組み合わせに対する単一化を計算
t ⊔u=u ⊔tなので、表の半分だけ計算すれば良い スパースになるケースが多いのでハッシュで実装することが多い
⊥ t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t13
⊥ ⊥ t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t13
t1 t1 t2 t3 t4 t5 t6 t7 t8 t12 t12 - t12 t13
t2 t2 t3 t6 t6 t6 - - - - - - -
t3 t3 t6 t6 t6 - - - - - - -
t4 t4 t5 t6 t7 t8 t12 t12 - t12 t13
t5 t5 t6 t8 t8 t13 t13 - t13 t13
t6 t6 - - - - - - -
t7 t7 t8 t12 t12 - t12 t13
t8 t8 t13 t13 - t13 t13
t9 t9 t10 t11 t12 t13
t10 t10 - t12 t13
t11 t11 - -
t12 t12 t13
t13 t13
7
ヒープとセル
ヒープセルの列
セルタグとデータ
のペア
アドレス タグ データ0x00000000 VAR a
0x00000001 STR e
0x00000002 VAR a
0x00000003 INT 15
0x00000004 FLO 0.335
0x00000005 STR f
0x00000006 PTR 0x00000003
0x00000007 STG “Taro”
... ... ...
8
ヒープとヒープポインタ
ヒープには使用領域と未使用領域の二つがある新しいデータは未使用
領域に追加されるヒープポインタ
未使用領域の先頭アドレス(=使用領域の末尾アドレス+1)を格納した変数
used
unused
0x000000000x00000001.....
0xffffffff
ヒープポインタ
9
タグの種類
重要なタグVAR: 枝をまだ持っていないノード。データ
部は整数の型 ID 。STR: 枝を持つノード。データ部は整数の型
ID 。PTR: ポインタ。データ部はアドレス。
特殊なデータのためのタグINT: 整数 (integer)FLO: 浮動小数STG: 文字列
10
ヒープ上の素性構造
10
アドレス タグ データ0x00010000 STR d
0x00010001 VAR e
0x00010002 VAR a
0x00010003 STR d
0x00010004 PTR 0x00010000
0x00010005 PTR 0x00010000
0x00010006
0x00010007
... ... ...
d
d
G:
F:
e a
G:
F
F:
F
11
VAR
もしかしたら今後、枝 ( 素性 ) を持つようになるかもしれないけど今は持っていないノード
データ部にはノードの型の ID ( 整数値 )を格納
枝を持つようになったら、ポインタで上書きして、ポインタの先に新しい枝つきのデータを作成
アドレス タグ データ.... ... ...
0x00010001 VAR e
... ... ...
アドレス タグ データ.... ... ...
0x00010001 PTR 0x0020002e
... ... ...
0x0020002e STR e
0x0020002f VAR gHP
12
STR
枝 (素性 )つきノード データ部にはノードの型の ID(整数 )
後続するアドレスのセルにはそのノードが持つ素性の値が入る 素性の順番はSTR タグを持ったノードの型と素性によって静的に
決定しておく Index(f, t)=1, 2, 3,...,nt
例えば、素性に IDをつけて、型 tがもつ素性集合のうち IDの昇順に並べる、など。型 tが素性 fを持たない時は0を返すようにすると便利
新しくSTR タグのデータをつくるときは、その素性値にはデフォルト値として、appropriateな型を格納する Approp(f, t)
アドレス タグ データ.... ... ...
0x00010001 STR e
0x00010002 VAR g
0x00010003 PTR 0x0001023f
.... ... ...
13
PTR
実データを指すポインタ ポインタはチェーンになっていても構わない
手続き型言語でよくあるポインタのポインタといった複雑な構造ではないので注意!
アドレス タグ データ.... ... ...
0x00010001 PTR 0x00010005
0x00010002 STR f
0x00010003 VAR g
0x00010004 PTR 0x00010006
0x00010005 PTR 0x00010004
0x00010006 PTR 0x00010007
0x00010007 VAR h
.... ... ...
矢印が指すアドレスの素性構造は全部同じ(0x00010007 のデータ )
14
Deref
ポインタを辿って実データのアドレスを得る操作
Deref( p ) ## アドレス p while(Heap[p].tag = PTR ) ## タグが PTR p := Heap[p].data ## p をアドレス p の
セルのデータで置き換えるreturn p 0x00010001 PTR 0x00010005
0x00010002 STR f
0x00010003 VAR g
0x00010004 PTR 0x00010006
0x00010005 PTR 0x00010004
0x00010006 PTR 0x00010007
0x00010007 VAR h
Deref(0x00010001)= 0x00010007
15
ポインタに対する考え方
同じノードを指すポインタの集合
cat
nounnom CASE:
CAT:
valencenil
nil
COMPS:
SPR:
VALENCE:
local
CAT: local
HOGE:
foo
16
ポインタに対する考え方
どこから指されているのか気にせず実データの書き換えを簡単に行える
cat
CAT:
local
gooLOCAL:
cat
CAT:
gooLOCAL:
local
dee
DEE:
今ここを書き変えたい
17
単一化アルゴリズム (1/8)
Unify(p, q): アドレス p とアドレス q の素性構造を単一化
tpp
F:
G: H:
tq q
G:
H:I:
もし p=q なら終了
18
単一化アルゴリズム (2/8)
Unify(p, q): アドレス p とアドレス q の素性構造を単一化
tpp
F:
G: H:
tq q
G:
H:I:
tr
r
新しいノードを生成ノードの型 tr は tr = tp ⊔ tq
19
単一化アルゴリズム (3/8)
Unify(p, q): アドレス p とアドレス q の素性構造を単一化
p
F:G: H:
q
G:H:
I:
tr
r
p と q を r を指すポインタに書換
20
単一化アルゴリズム (4/8)
Unify(p, q): アドレス p とアドレス q の素性構造を単一化
p
F:G: H:
q
G:H:
I:
tr
r
新しいノードの型 tr が持つ素性に対する枝を作る
F:G: H: I: J:
21
単一化アルゴリズム (5/8)
Unify(p, q): アドレス p とアドレス q の素性構造を単一化
p
F:G: H:
q
G:H:
I:
tr
r
共通でない素性には単純にポインタをはる
F:G: H: I: J:
22
単一化アルゴリズム (6/8)
Unify(p, q): アドレス p とアドレス q の素性構造を単一化
p
G: H:
q
G:H:
tr
r
tp にも tq にもない新しい素性 J: にはAppropriate な型 (tr と素性 J: に対して定義されるデフォルトの型)のノードを生成
F:G: H: I: J:
23
単一化アルゴリズム (7/8)
Unify(p, q): アドレス p とアドレス q の素性構造を単一化
p
G: H:
q
G:H:
tr
r
共通の素性 G: H: に対しては、とりあえず、 p かq のどちらかの素性 G:H: が指すノードに対し、ポインタを貼る
F:G: H: I: J:
24
単一化アルゴリズム (8/8)
Unify(p, q): アドレス p とアドレス q の素性構造を単一化
p
G: H:
q
G:H:
tr
r
Unify(p’, q’) と Unify(p’’, q’’) を再帰呼び出し
F:G: H: I: J:
p’
p’’ q’
q’’
25
単一化アルゴリズム : まとめ
Unify(p, q) # pとqはヒープ上のアドレス p := Deref(p); q := Deref(q); if( p = q ) return true; r := HP; HP := HP + 1; tagp := Heap[p].tag; tp := Heap[p].data; tagq: = Heap[q].tag; tq := Heap[q].data; tr :=Type-Unify(tp, tq); if (tr is not defined ) return false; Heap[p].tag := PTR; Heap[p].data := r; Heap[q].tag := PTR; Heap[q].data := r; Heap[r].tag := STR; Heap[r].data := tr; HP := HP + |Features(tr)|; foreach f ∈ Features(tr) if( f ∈ Features(tp) ∧ tagp = STR ) Heap[r + index(f, tr)].tag := PTR; Heap[r + index(f, tr)].data := p + index(f, tp) else if( f ∈ Features(tq) ∧ tagq = STR ) Heap[r + index(f, tr)].tag := PTR; Heap[r + index(f, tr)].data := q + index(f, tq) else Heap[r + index(f, tr)].tag := VAR; Heap[r + index(f, tr)].data := Approp(f, tr) foreach f ∈ (Features(tp) ∩ Features(tq)) if( ¬Unify(p + index(f, tp), q + index(f, tq)) ) return false; return true;
26
単一化アルゴリズムの特徴
素性構造にサイクルがあっても ok必ず終了する
Unify が再帰呼び出しされる度に実体ノード(ポインタ以外のノード)が一つずつ減る
appropriate な型のノードが生成される時のみ VAR ノードが増えるが、このノードを無視すれば、各ステップでノードが一つずつ減る
VAR ノードを無視しても良い大雑把な説明 アルゴリズムを改良して、タグの組み合わせで処理を分類すると、各ス
テップで STR ノードの数が増えないようにすることができる VAR と VAR→VAR (STR ノード数は減らない ) VAR と STR→STR (STR ノード数は減らない ) STR と STR→STR( STR ノード数がひとつ減る )
各STR ノードが持つことができる VAR ノードは全ての型に対する最大素性数で抑えられるため、実ノード数を STR ノード数 × 最大素性数と考えれば、この数は各ステップごとに一つずつ減るので、必ず終了する
27
単一化の例 (1)
F:
G:
F: a
F: cH: a
⊔F:
G:
F: aG: b
G:
I: aJ: b
=
F:
G:
F: aG: b
F: c
G:
H: a
I: aJ: b
異なる型の場合は、型単一化を行う。型単一化に失敗すると、全体の単一化も失敗
28
単一化の例 (1)
Unify(p, q)
p
F:
F:
G:
q
a
F: H:
c a
F:
F:
G:
a
I: J:
b
G:
ba
G:
29
単一化の例 (1)
Unify(p, q)
p
F:
F:
G:
q
a
F: H:
c a
F:
F:
G:
a
I: J:
b
G:
ba
G:
30
単一化の例 (1)
Unify(p, q)
p
F:
F:
G:
q
a
F: H:
c a
F:
a
I: J:
b
G:
ba
G:
31
単一化の例 (1)
Unify(p, q)
p
F: G:
q
F: H:
c
a
F:
a
I: J:
b
G:
b a
G:
32
単一化の例 (2)
F:
G:
F: a
F: cH: a
⊔ F:
G:
F: aG: b =
F:
G:
F: dG: bH:a
1
1
1
1
(a⊔c=d とする )
33
単一化の例 (2)
Unify(p, q)
p
F:
F:
G:
q
a
F: H:
c a
F:
F:
G:
a
G:
b
34
単一化の例 (2)
Unify(p, q)
p
F:
F:
G:
q
a
F: H:
c a
F:
F:
G:
a
G:
b
35
単一化の例 (2)
Unify(p, q)
p
F:
G:
q
a
F: H:
c a
F:
G:
a
G:
b
F:
36
単一化の例 (2)
Unify(p, q)
p
G:
q
F: H:
c a
G:
G:
b
F:
F:
a
37
単一化の例 (2)
Unify(p, q)
pq
F: H:
c a
G:
G:
b
F:
F:
a
38
単一化の例 (2)
Unify(p, q)
pq
F:
H:
c
a
G:
G:
b
F:
F:
a
39
単一化の例 (2)
Unify(p, q)
pq
H:
a
G:
G:
b
F:
F:
d
40
HPSG のスキーマの単一化
synsem:dtrs:
right-dtr:left-dtr:
スキーマ(=句構造規則)
41
HPSG のスキーマの単一化
synsem:dtrs:
right-dtr:left-dtr:
スキーマ(=句構造規則)
right daughter
left daughter
単一化 単一化
ここが新しい親になる
42
Reduce Sign
synsem:dtrs:
right-dtr:left-dtr:
ここが新しい親になる
子供の部分はいらないので切ってしまう
43
Reduce Sign
子供 (daughters) の部分をカット子供がまるまる残っていると、構文木のルー
トノードに全ての展開された構文木集合が格納されてしまう(簡単に数百億以上の構文木になってしまう)
そこで、子供の部分をカットして CKY チャートに格納してやればよい
44
CKY アルゴリズム
CFG の CKY アルゴリズムとの違い非終端記号のかわりに素性構造が格納される子供をカットする操作 (reduce sign) が必要単一化は破壊的操作なので、実行前にコピーをして元の素
性構造を残しておくルール規則の適用
CFG: 非終端記号X, Y に対し、 G(X, Y) は親の非終端記号集合を返す
HPSG: 素性構造 X, Y に対し、 G(X, Y) は親の素性構造集合を返す
ファクタリングCFG: 等価な非終端記号HPSG: 等価な素性構造 (X = Y iff X ⊑Y and X ⊒ Y)
デコーディングの時も同様⊑⊏⊒⊔⊐
45
CKY法 for HPSG
for j = 1 to n Sj-1,j := L(wj) ## L は単語wに対する素性構造の集合を返す関数for l = 2 to n for i = 0 to n – l j := i + l; for k = i+1 to j - 1 forall X∈Si,k
forall Y∈Sk,j
forall b ∈ BS # BS はバイナリースキーマの集合
X’ := copy(X); Y’ := copy(Y); b’ := copy(b) Si,j := Si,j ∪ Reduce(b’(X’, Y’)) Si,j := Si,j ∪ U(Si,j) ## U はユーナリールールの適用手続き
46
等価性チェックとコピー
構造共有があるため素性構造の等価性チェックやコピーはそんなに簡単ではない破壊的でない操作
すでに辿ったセルのアドレスをハッシュにいれておいて構造共有をチェック
破壊的操作+バックトラックすでに辿ったセル上にマーキングタグと対応する相手側のアドレスを書き込む
変更履歴をたどることによって元のデータに戻す(バックトラック)
47
不完全ながら高速な等価性チェック
セルの列とセルの列を単純な for ループで簡単にチェックコピーする際に、ポインタの作り方や部分構
造の作り方を工夫すれば、等価な素性構造はまったく同じセルの列になる
ただし、 VAR タグを展開していない場合とVAR タグが展開されて STR になっている場合では正しいチェックができないので注意
48
HPSG の確率モデル?
PCFG は各書換規則に対応するパラメータを用意すれば良かった
HPSG では??
S
SUBJ VP1
NP が OBJ1 V
香織 読んだをNP
S NP
電子メールSUBJ V
NP が
恵
送った
構文木 t
P(t) = θS → SUBJ VP1 × θSUBJ → NP が × θNP → 香織 × θVP1 → OBJ1 V × θOBJ1 → NP を × θNP → S NP × θS → SUBJ V × θSUBJ → NP が × θNP → 恵 × θV → 送った × θNP → 電子メール × θV → 読んだ
he gives her a present
NP[acc]NP[acc]NP[nom][3rd, sing]
PHON: <gives>
VAL:
SUBJ: < >COMPS: < , >SPR: <>
PHON: <gives, her>
VAL:
SUBJ:< >COMPS:< >SPR:<>
22 3
1
PHON: <gives, her, a present>
VAL:
SUBJ: < >COMPS: <>SPR:<>
3
1
3
PHON: <he, gives, her, a present>
VAL:
SUBJ: <>COMPS: <>SPR: <>
1
1
50
生成モデルから識別モデルへ
生成モデルCFG による生成のステップ(書換規則の適用
A → B C )の確率を p(B C| A) とするp(B C |A)=θA→B C とおき、これらパラメータの集
合を θ とおくCFG による生成の過程の確率を、独立な事象
の (条件付き ) 確率の積とする全ての文 s と構文木 t に対する同時確率 p(s,
t) を計算できる
51
生成モデルの改良の先に
構文木の分岐の外の情報を条件部に導入マルコフ文法
M→L...H...R の確率
素性(特徴)という考え方条件部をどんどんリッチにして線形補間をとれ
ばよいのでは?→構文木のノード x の確率p(x)=p(x|x周辺の状況 )
),|)(),...,(),(),(),...,(( 11111111 hMrRrRhHlLlLp mmnn
52
生成モデルの問題点独立性の仮定
PCFG では、各構文木ノードは独立な (条件付き)試行により生成されていると仮定している
例えば、 (S (NP John) (VP eats (NP apples))) という構文木は、以下の独立な(条件付き)事象に分解されている
S から NP VP を生成 NP から John を生成 VP から eats NP を生成 NP から apples を生成
結果、上記の NP の文脈 (S→NP VP) から導出された NPか (VP→eats NP) から導出された NP かわからなくなっている→主語の NP なのか目的語の NP なのかわからない。
生成モデルの問題点
53
生成モデルの問題点
生成モデル
しかし、
であるから p (s;θ) が計算できてしまう分、冗長なモデルになっている。間接的に分類問題を解いている。
独立性を仮定した事象に分解しないと同時確率を計算することができない
);,(maxarg);|(maxarg~ tspstpttt
);();|();,( spstptsp
54
識別モデル
識別モデル直接
を解く独立な事象を仮定しない「条件部の確率」をモデルにいれない
);|(maxarg~ stptt
生成モデルと識別モデル( イメージ )
生成モデル 識別モデル
GOOD
BAD
56
生成モデルと識別モデル(イメージ2)
生成モデル 絵を描いて全体像の比較
識別モデル それぞれの特徴を比較
鼻の位置 耳の形 体の大きさ 舌の表面
57
識別するための訓練
教師付学習良い例と悪い例を与えて、どこに注目すれば
より良く識別出来るのか学習good examples
bad examples
識別モデル
)|( stp s = “A blue eye girl with white hair and skin walked”
t1 t2 t3 t4
文法 G により s から導出出来る全ての構文木集合
…
p(t3|s) は t1,t2,t3,..,tn から t3 を選択する確率
tn
素性ベクトル( 特徴ベクトル )
(0,0,1,0) (1,0,1,0) (1,1,1,0) (0,0,1,1) (1,0,0,0)
生成モデルと識別モデル
生成モデル 識別モデル
),( 1yxp
),( 2yxp
1.0
)|( 1 xyp
)|( 2 xyp
60
どちらが優秀なのか?
Tom Minka (2005) Discriminative models, not discriminative training, MSR-TR-2005-144, 1 p.
x を入力 ( 文 ) 、 y を出力 ( 構文木 ) としたときのパラメータ推定
生成モデル
識別モデル
一般モデル
);();|();,( ypyxpyxp
);|( xyp
);();|(),;,( xpxypyxp
θ = θ’
61
まとめ
単一化アルゴリズムHPSG フルパージング生成モデルと識別モデル次回は、 1/13(水 ) 16:30~ ロジスティッ
ク回帰と確率的 HPSG と CRF講義資料
http://www.r.dl.itc.u-tokyo.ac.jp/~ninomi/mistH21w/cl/
62
レポート課題
課題(いずれかのうち一つ) 言語学、パージングもしくは機械学習に関する論文を一つ以上読んで内容をまとめ、考察を加えよ。ただし、論文は次の国際会議から選ぶこととする。
NLP系の国際会議 : ACL, NAACL, EACL, COLING, EMNLP機械学習系の国際会議 : ICML, NIPS, COLT, UAI, AIStats人工知能系の国際会議 : IJCAI, AAAI データマイニング系の国際会議 : KDD, SDM, ICDM
授業内容でよくわからなかった箇所を教科書やスライドを頼りに例題を作りつつ内容をまとめ、考察せよ
例 : CCGやHPSG で簡単な文法を紙の上に書き、紙の上で構文解析 例 : 正規分布の混合分布に対する EM の導出 例 : エントロピー最大化によるパラメータ推定とパラメトリック形式の最尤法によるパラメータ推定が一致することを確認
授業内容に関連する内容を発展させた内容を調査もしくは考察 例 : 最大エントロピー法のスムージングのための正規分布の事前分布 例 : 準ニュートン法について調べる
63
レポート課題
A4 で 4 ページ以上日本語か英語締切 : 2010 年 2 月 17 日 (水曜 )提出先
工学部 6号館 1F 計数教務室レポートには所属、学籍番号、名前を記入