素性の組み合わせを実現するPower Set Kernel とその
Download
Report
Transcript 素性の組み合わせを実現するPower Set Kernel とその
素性の組み合わせを実現する
Power Set Kernel とその高速化
奈良先端科学技術大学院大学
情報科学研究科
工藤 拓
松本 裕治
1
背景
SVM をはじめとする Kernel Method の
めざましい進展
自然言語処理も例外ではない
形態素解析
固有名詞抽出
構文解析
Kernel Method は万能なのか?
2
Kernel Method の問題点
有効な素性の分析が困難
素性空間が陰に表現される
有効な素性(事例の部分構造)は我々の知らない
一種の知識 (マイニング)
分類の計算量が大きい
Kernel Method に基づく固有名詞抽出器や構文
解析器は大規模テキストデータの解析に不向き
一文解析するのに 0.5 ~ 1 秒
GOAL: この2つの問題の克服
3
本発表の流れ
Kernel Method
Power Set Kernel
Power Set Kernel の高速化手法
PSKB (ベースライン)
PSKI
(提案手法 1)
PSKE (提案手法 2)
日本語係り受けタスクにおける実験
考察、今後の課題
4
本発表の流れ
Kernel Method
Power Set Kernel
Power Set Kernel の高速化手法
PSKB (ベースライン)
PSKI
(提案手法 1)
PSKE (提案手法 2)
日本語係り受けタスクにおける実験
考察、今後の課題
5
Kernel Method
L
f (x)
i
φ( x i ) φ( x ) b
i 1
N
φ( ) から
N
i 1
L
x i , x i. , b
K (x i , x) b
i
(一般に
H
N H )
への写像関数
事例間の内積を与える Kernel 関数のみ定義
陽に表現された素性ベクトルは不要
事例 x の構造に基づく Kernel の設計
(集合, ベクトル, 系列, 木, グラフ…)
6
Kernel Method の問題点
L
f (x)
φ( x i ) φ( x ) b
i
i 1
L
i
K (x i , x) b
i 1
分類に O(L・m) の計算量 (m は K(・,・)の計算量)
素性空間が陰に表現されてしまい, 有効な素性の
提示が困難
7
本発表の流れ
Kernel Method
Power Set Kernel
Power Set Kernel の高速化手法
PSKB (ベースライン)
PSKI (提案手法 1)
PSKE (提案手法 2)
日本語係り受けタスクにおける実験
考察、今後の課題
8
Power Set
集合のすべての部分集合の集まりをべき集
合(Power Set)とよぶ
集合 X の Power Set を P(X)と記す
例 X={a,b,c}
P(X)={φ,{a},{b},{c},{a,b},{a,c},
{b,c},{a,b,c}}
9
(Special) Power Set Kernel
集合の内積を与える Kernel
X, Z は集合
X の要素数を |X|と記す
K(X, Z) = | P(X) ∩ P(Z) |
例
X = {a,b,c}, Z={a,b,d}
P(X) = {φ,{a},{b},{c},{a,b},{a,c},{b,c},{a,b,c}}
P(Z) = {φ,{a},{b},{d},{a,b},{a,d},{b,d},{a,b,d}}
P(X)∩P(Z)={φ,{a},{b},{a,b}}
K(X,Z) = |P(X) ∩ P(Z)| = 4
10
Power Set Kernel (PSK)
min(| X |, | Z |)
K (X ,Z )
C
r
| { s | s ( P ( X ) P ( Z )), | s | r } |
r 0
Cr
*
(部分集合重み)
(例)
X = {a,b,c}, Z={a,b,d}, C0=2, C1=3, C2=1, C3=0
P(X) = {φ,{a},{b},{c},{a,b},{a,c},{b,c},{a,b,c}}
P(Z) = {φ,{a},{b},{d},{a,b},{a,d},{b,d},{a,b,d}}
P(X)∩P(Z)={φ,{a},{b},{a,b}}
K(X,Z) = 2・1+ 3・2 + 1・1 + 0・0 = 9
11
PSK の周辺定理
1. X,Zを任意の集合, d を正の整数とすると
き, K ( X , Z ) | X Z | d は PSK となる
2. X,Zを任意の集合, g を n階微分可能で
(n)
g
( 0 ) 0 となる関数とするとき,
かつ
K
( X , Z ) g (| X Z |)
はPSKとなる
3. すべての PSK K(X,Z) は, |X∩Z|の多
項式で表現できる
Cr が事前に分かる場合, PSK を設計できる
12
多項式Kernel
K ( X , Z ) | X Z | 1 d
d {0 ,1, 2 ..}
定理2を満たし, Power Set Kernel
例
d=2 のとき C0 = 1, C1=3, C2=2
d=3 のとき C0 = 1, C1=7, C2=12, C3 = 6
一般に d=k のとき
k
Cr
lr
r
rm
l
C l r C m ( 1)
m
k
m 0
13
RBF Kernel
K ( X , Z ) exp s (| X | | Z | 2 | X Z |) s
2
2
*
exp s | X | exp s | Z | exp 2 s | X Z |)
2
2
|X|=|Z|=定数 (要素数は一定) ならば
K ( X , Z ) exp 2 s | X Z |
定理2を満たし, Power Set Kernel
Cr
lr
r
l
rm
l
m l !
( 2 s ) r C m ( 1)
m 0
14
本発表の流れ
Kernel Method
Power Set Kernel
Power Set Kernel の高速化手法
PSKB (ベースライン)
PSKI (提案手法 1)
PSKE (提案手法 2)
日本語係り受けタスクにおける実験
考察、今後の課題
15
Power Set Kernel の高速化
PSKB
PSKI (Inverted representation)
通常の分類手法(ベースライン)
事例 の集合を転置した形で表現
PSKE (Expanded representation)
事例を Power Set の空間で分類
16
PSKB (ベースライン)
K(X,Z) = (|X∩Z|+1)
α
1
2
3
1
0.5
-2
3
X
{a, b, c}
{a, b, d}
{b, c, d}
3
K(X,Z)
3
分類したい事例
Z={a,c,e}
3
f(Z)=1・(2+1) + 0.5・(1+1) - 2 (1+1)
計算量は常に O(L・|Z|)
= 15
17
PSKI (Inverted Representation)
K(X,Z) = (|X∩Z|+1)
α
1
2
3
X
3
Inverted Representation
a
b
c
d
1 {a, b, c}
0.5 {a, b, d}
-2 {b, c, d}
3
{1,2}
・{1,2,3}
{1,3}
{2,3}
3
分類したい事例
Z=
{a, c, e}
3
f(Z)=1・(2+1) + 0.5・(1+1) - 2 (1+1)
= 15
計算量は, O(B・|Z|+L), 最悪 O(L・|Z|)
集合要素が疎な時に有効(自然言語処理など)
18
PSKE
(Expanded Representation) (1/2)
L
f (x)
i
φ( x i ) φ( x ) b
i 1
w φ( x ) b L
w
i
φ (x i )
i 1
φ( x ) は, 集合 X を, Power Set の
空間に部分集合重み付きで写像するような関数
w をあらかじめ計算しておき, 高次元空間空間
(Power Set 空間)での内積を直接計算
[磯崎 2002] と考え方は同じ
PSK における
19
PSKE
(Expanded Representation) (2/2)
K(X,Z) = (|X∩Z|+1)
3
C0=1, C1=7,
C2=12, C3=6
α
1
2
3
X
1 {a, b, c}
0.5 {a, b, d}
-2 {b, c, d}
展開
φ
{a}
{b}
{c}
{d}
{a,b}
{a,c}
{a,d}
{b,c}
{b,d}
{c,d}
{a,b,c}
{a,b,d}
{a,c,d}
{b,c,d}
C
1
7
12
6
w
Expansion Table
-0.5
10.5
-3.5
-7
-10.5
12
12
6
-12
P(Z)={{φ},{a},{c},
-18
{e},{a,c},{a,e},
-24
{c,e},{a,c,e}}
6
3
F(z)=-0.5+10.5-7+12
0
=15
-12
分類したい事例
Z={a,c,e}
計算量は O(|P(Z)|), 事例数に依存しない
事例数が大きいときに有効
d次の多項式 Kernel → d個の部分集合のみ
20
PSKEの実際
Expansion Table の作成
素性の d個の組み合わせを全展開するのは非
常に困難
[磯崎2002]は 2個の組み合わせだけに限定
|w|は, その部分集合の分類寄与度を与える.
|w|の小さい部分集合は考えない(近似)
データマイニングアルゴリズムの適用
Expansion Table の保持
そのままでは冗長なので TRIE を作成
21
マイニング問題としての定式化
|w|≧σ となるような部分集合を
もれなく 効率よく 列挙せよ
例
φ
{a}
{b}
{c}
{d}
{a,b}
{a,c}
{a,d}
{b,c}
{b,d}
{c,d}
{a,b,c}
{a,b,d}
{a,c,d}
{b,c,d}
C
1
7
12
6
w
-0.5
10.5
-3.5
-7
-10.5
12
12
6
-12
-18
-24
6
3
0
-12
C
σ=10
{a}
{d}
{a,b}
{a,c}
{b,c}
{b,d}
{c,d}
{b,c,d}
7
12
6
w
10.5
-10.5
12
12
-12
-18
-24
-12
22
部分集合のマイニング(1/3)
αは実数で, 単純な頻度とみなせない
正例(α≧0),負例(α<0)の事例に分けてそれぞれ独立に
マイニング
部分集合 p の重み w は (正例の頻度)-(負例の頻度)
正例,負例の数には偏りがある、σを正負例の数に応じて
線形分配し, 正負別々の最小サポート値を与える
サイズ r の部分集合の頻度は Cr 倍される
最悪の状況 Cmax=max(C0,C1,..,C|x|) を考え, 事例の頻
度を Cmax倍しておく
マイニング後, パターンp の頻度を C|p|/ Cmax 倍
23
部分集合のマイニング (3/3)
K(X,Z)= (|X∩Z|+1)
3
|Cmax・α|を
C0=1, C1=7,C2=12
C3=6, Cmax=12
σ=15
σ正例=10
σ負例=5
バスケットマイニング
(Apriori, PrefixSpan)
頻度とみなす
頻度
正例
1
2
X
12 {a, b, c}
6 {a, b, d}
Minsup=10
α
1
2
3
X
1 {a, b, c}
0.5 {a, b, d}
-2 {b, c, d}
負例
3
頻度
24
{φ} 18
{a} 18
{b} 18
{c} 12
{a,b} 18
{a,c} 12
{b,c} 12
{φ} 24
{b} 24
X
{c} 24
{d} 24
{b, c, d} {b,c} 24
{b,d} 24
{c,d} 24
Minsup=5 {b,c,d} 24
merge
{a} 10.5
{d} –10.5
{a,b} 12
{a,c} 12
{b,c} -12
{b,d} -18
{c,d} -24
{b,c,d} -12
w= (f正例-f負例)・
C|p|/Cmax
(例) {b} の重み
W=(18-24)*7/12=10.5
24
TRIEによる表現
C
{a}
7
{d}
{a,b}
{a,c} 12
{b,c}
{b,d}
{c,d}
{b,c,d} 6
root
w
10.5
-10.5
12
12
-12
-18
-24
-12
a10.5 b
b
12
c
c c d
12
-12
-18
d
d
-10.5
-24
d
-12
共通 Prefix の圧縮
TRIE の実装にはダブル配列を用いた
25
本発表の流れ
Kernel Method
Power Set Kernel
Power Set Kernel の高速化手法
PSKB (ベースライン)
PSKI (提案手法 1)
PSKE (提案手法 2)
日本語 わかち書き, 係り受けタスクにおける実験
考察, 今後の課題
26
実験
日本語 わかち書き/係り受け解析
3次の多項式 Kernel
マイニング→PrefixSpan [Peiら 2001]
事例数
事例数
SV数
素性サイズ
|Xj|の平均
わかち書き
265,413
57,672
11,643
11.73
係りうけ
110,355
34,996
28,157
17.63
* XEON 2.4GHz, Linux, C++ による実装
27
実験結果(わかち書き)
σ
解析時間
(秒/文)
正解率
(%)
部分集合数
(k個)
PSKB
-
0.8535
97.94
-
PSKI
-
0.4989
97.94
-
PSKE
0.1
0.0009
96.09
21
0.05
0.0014
97.36
84
0.01
0.0028
97.93
1,228
0.005
0.0033
97.95
2,327
0.001
0.0038
97.94
4,392
0.0005
0.0041
97.94
4,820
0.0001
0.0042
97.94
5,206
28
実験結果(係り受け解析)
σ
解析時間
(秒/文)
正解率
(%)
部分集合数
(k個)
PSKB
-
0.2848
89.29
-
PSKI
-
0.0811
89.29
-
PSKE
0.1
0.0013
82.02
7
0.05
0.0020
86.27
30
0.01
0.0050
88.91
739
0.005
0.0067
89.05
1,924
0.001
0.0092
89.26
6,686
0.0005
0.0097
89.29
8,262
0.0001
0.0101
89.29
9,846
29
考察
PSKI が 約 3-12倍,
PSKE が 約 30-280倍程度 高速
σ=0.0005のときの部分集合のサイズは 826万,
TRIEのサイズは 391MB (係り受け解析)
頻度によるフィルタリング
部分集合のそれぞれに対し、事例集合中の出現頻度が
ξ(=1,2,3..)以上の部分集合を残し, 残りを削除
頻出部分集合も マイニングアルゴリズムを用い効率よく
列挙する
σ=0.0005に固定し, ξを変化させる
30
頻度によるフィルタリング結果
(係り受け)
ξ
解析時間
(秒/文)
正解率
(%)
部分集合
数(k個)
TRIEのサ
イズ(MB)
PSKB
-
0.2848
89.29
-
-
PSKI
-
0.0810
89.29
-
-
PSKE
1
0.0097
82.29
8,262
391.1
2
0.0074
89.34
2,450
118.0
3
0.0069
89.31
1,360
66.4
4
0.0065
89.25
945
46.8
σ=0.005
フィルタリングにより、サイズを約1/3に
若干ながら精度向上→頻度の小さい例外的事例の排除
31
まとめ
Power Set Kernel の定式化と分析
Power Set Kernel の高速化
PSKI (事例集合を転置した形で表現)
PSKE (Power Set の空間で分類)
PSKI が 3-12倍程度、
PSKE が 30-280倍程度の高速化に成功
32
今後の課題
部分集合重み Cr の分析
Cr の適当な推定 → Crに即した Kernel
頻度によるフィルタリングの詳細な分析
他のデータセットでの実験
33
PSKEにおいて実際に抽出された
3つ組み素性
● {係り元-主辞-品詞細分類-普通名詞,
係り元-機能語-表層-と, 係り先-主辞-品詞細分類-普通名詞}
「普通名詞 と 普通名詞」並列構造
● {係り元-機能語-表層-を, 係り先-主辞-表層-中心,
係り先-機能語-表層-に}
「~を 中心に」 頻出言い回し,
普通名詞が「を格」をとる特殊なパターン
● {係り元-機能語-表層-から,
係り元-機能語-品詞-助詞,
係り先-機能語-表層-まで}
「~から ~まで」 頻出言い回し
34
おまけ
PSKI は拙作の 汎用 チャンカー YamCha
と, 係り受け解析プログラム CaboCha に
使われています
PSKE に基づくチャンカー, 係りうけ解析プ
ログラムの公開 (そのうち?)
35
部分集合重み Cr (1/2)
サイズr の部分集合(r個の組み合わせ素
性)をどれだけ重要視するか
決定木→ 深さ r の枝の精度
r=0
root
r=1
a
r=2
b c d
r=3
b
c
過汎化
d
最適な深さ r が存在
Crは 凸関数
Cr
……
過学習
0
1
2
3 4
36
r
部分集合重み Cr (2/2)
多項式
d
K(X,Z)=(|X∩Z|+1)
Quasi-RBF
K(X,Z)=exp (2s|X∩Z|)
Cr
r
Cr
s大
s小
r
多項式 Kernel は、凸関数のCrを持つ
ピーク時が d によって決定付けられる
RBF は、単調減少(増加)の場合しかない
集合を素性とする場合, RBF より 多項式 Kernel の
37
ほうが実験結果がよいことの説明