大規模 web テキスト処理のための 高速な機械学習アルゴリ...

Post on 06-Aug-2020

0 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

大規模 Web テキスト処理のための高速な機械学習アルゴリズム

吉永直樹東京大学 生産技術研究所

スケジュール

• 10:00 - 12:00 オンライン学習とカーネルトリック

• 12:00 - 13:00 ランチタイム

• 13:00 - 14:45 多項式カーネルに基づく効率的な学習・分類

• 14:45 - 15:00 コーヒーブレイク

• 15:00 - 16:30 発展: その他の話題

資料(最新版): http://www.tkl.iis.u-tokyo.ac.jp/~ynaga/alaginS/

自己紹介• 経歴• 東京大学大学院 情報理工学系研究科(情報理工学博士)

• JSPS 特別研究員 DC1/PD(東大/北陸先端大)

• 東京大学 生産技術研究所(2008.4~)

• 研究分野• 計算言語学(形式文法の等価性,語彙知識獲得@Sussex Univ.)

• Web からの知識獲得(属性/値,上位下位関係の獲得)

• 超大規模 Web テキストを対象とした頑健・高速な自然言語処理

研究室紹介 | 喜連川・豊田研究室• 超大規模ウェブマイニング,地球環境デジタルライブラリ等のデータ工学の課題をソフト/ハード両面から研究

• 膨大なデータを対象とした検索技術・データマイニング技術・可視化技術・データベース/ストレージ管理機構

ディスプレイ壁上で分析ツール群を統合したシステムを開発し大規模可視化を実現

合計160億URL:テキスト+画像等

超大規模ウェブアーカイブ

デモ: ブログでの話題追跡システム

動詞にかかる文節を表層格(格助詞)で分類することでイベントの付帯状況が分かる

男女別の書き込み数

2006年~100万feed/日

enabler: 数万文/秒の係り受け解析器J.DepP: http://www.tkl.iis.u-tokyo.ac.jp/~ynaga/jdepp/

デモ: ブログでの話題追跡システム

・・・

2006年~100万feed/日

enabler: 数万文/秒の係り受け解析器J.DepP: http://www.tkl.iis.u-tokyo.ac.jp/~ynaga/jdepp/

デモ: ブログでの話題追跡システム

・・・

男女別時系列出現頻度の可視化

Timeline

TimeSlices ノードを指定して絞り込み探索

三次元可視化に興味がある方は喜連川・豊田研究室までどうぞ

2006年~100万feed/日

enabler: 数万文/秒の係り受け解析器J.DepP: http://www.tkl.iis.u-tokyo.ac.jp/~ynaga/jdepp/

デモ: 情報収集するエディタ• Web から能動的にトピックに関する事実を収集して整理

背景• Web 上のテキストは爆発的に増加

• ブログ,twitter,SNS,掲示板,口コミサイト,Q/Aコミュニティ

• Wikipedia, Google N-gram Corpus, Microsoft N-gram Service

• +これらのテキストを処理できる頑健・高速な言語処理技術• twitter のリアルタイム評判分析

• 全ブログを対象とした話題追跡• 網羅的な世界知識を元にした Q/A,機械翻訳

• 言語学者のための例外的言語現象(例: 新語)の収集・整理

自然言語処理の基本的な流れはやぶさが日本に帰還する

はやぶさ名詞

が助詞

日本名詞

に助詞

帰還する動詞

精度: ~96+%

速度: 数万文/秒

形態素解析文書分類

情報検索

固有名分類評判分類

アプリケーション

自然言語処理の基本的な流れはやぶさが日本に帰還する

構文解析

はやぶさ名詞

が助詞

日本名詞

に助詞

帰還する動詞

はやぶさ が 日本 に 帰還する

精度: ~96+%

速度: 数万文/秒

精度: ~90+%

速度: 数百文/秒

文書要約

機械翻訳 質問応答

形態素解析文書分類

情報検索

固有名分類評判分類

知識獲得

アプリケーション

自然言語処理の基本的な流れはやぶさが日本に帰還する

構文解析

意味解析

はやぶさ名詞

が助詞

日本名詞

に助詞

帰還する動詞

はやぶさ が 日本 に 帰還する

帰還する(主語: はやぶさ,目的地: 日本)

精度: ~96+%

速度: 数万文/秒

精度: ~90+%

速度: 数百文/秒

精度: ~80+%

速度: 数十文/秒

文書要約

機械翻訳 質問応答

形態素解析文書分類

情報検索

固有名分類評判分類

知識獲得

アプリケーション

自然言語処理と機械学習• 多くの自然言語処理タスクは機械学習における分類問題として定式化可能

• 文書分類: 文書→トピック,著者性別など

• 知識獲得: 関係知識の候補→適切/不適切(フィルタとして利用)

• 品詞タグ付け: 単語→品詞

• 係り受け解析: 文節とその係り先候補文節→係り受けあり/なし

• 頑健で高速な自然言語処理を実現するためには• 分類器を高精度化(=学習の大規模化・精緻化)し,かつ• 分類器による分類を高速化する必要がある

一限目: シラバス• 自然言語処理と機械学習• 線形分類器• オンライン学習• (平均化)パーセプトロン• Passive Aggressive アルゴリズム

• カーネルを用いた非線形分類• カーネルと非線形変換• カーネルを用いたオンライン学習

線形分類器• 線形分類器:

• 入力を表現する素性ベクトル に対しラベル を出力

• 学習: 教師つきデータ から重みベクトル を推定

• 分類: 分離超平面からの距離( マージン; に比例)により分類

w

y ∈ {±1}

・x○or ×

D = {(xt, yt)}Tt=1

分類対象

x = (0, 0, 1, 0, 0, 0, 0, 1, 0)

dd が golf を含むか?

d が game を含むか?

素性抽出

素性ベクトル

y = sgn(wTx) =

�+1 (wTx ≥ 0)−1 (wTx < 0)

ラベル

wTx

x ∈ Rn

例)文書分類

線形分類器• 線形分類器:

• 入力を表現する素性ベクトル に対しラベル を出力

• 学習: 教師つきデータ から重みベクトル を推定

• 分類: 分離超平面からの距離( マージン; に比例)により分類

w

○×

×・

○ ○

x

x1

x2

x3

x5

x4

D = {(xt, yt)}Tt=1

分類対象 d

y = sgn(wTx) =

�+1 (wTx ≥ 0)−1 (wTx < 0)

○or ×

wTx

y ∈ {±1}x ∈ Rn

例)文書分類

線形分類器• 線形分類器:

• 入力を表現する素性ベクトル に対しラベル を出力

• 学習: 教師つきデータ から重みベクトル を推定

• 分類: 分離超平面からの距離( マージン; に比例)により分類

w

分離超平面wTx > 0 (y = +1)

wTx < 0 (y = −1)

○×

×・

○ ○

x

x1

x2

x3

x5

x4 wTx = 0

D = {(xt, yt)}Tt=1

分類対象 d

y = sgn(wTx) =

�+1 (wTx ≥ 0)−1 (wTx < 0)

○or ×

wTx

y ∈ {±1}x ∈ Rn

例)文書分類

線形分類器• 線形分類器:

• 入力を表現する素性ベクトル に対しラベル を出力

• 学習: 教師つきデータ から重みベクトル を推定

• 分類: 分離超平面からの距離( マージン; に比例)により分類

w

×

分離超平面wTx > 0 (y = +1)

wTx < 0 (y = −1)

○×

×

○ ○

x

x1

x2

x3

x5

x4 wTx = 0

D = {(xt, yt)}Tt=1

y ∈ {±1}

分類対象 d

y = sgn(wTx) =

�+1 (wTx ≥ 0)−1 (wTx < 0)

×

wTx

x ∈ Rn

例)文書分類

パーセプトロン(復習)• 誤り駆動のオンライン学習器• 訓練例を誤分類したらパラメタ更新• 線形分離可能なら有限回で収束 

○x1

wT1 x = 0

パーセプトロン

t = 1

w = �for t = 1 to T doif yt(wTxt) ≤ 0

w ← w + ytxt

return w

[Rosenblatt 1958]

パーセプトロン(復習)• 誤り駆動のオンライン学習器• 訓練例を誤分類したらパラメタ更新

• 線形分離可能なら有限回で収束 

○×

wT1 x = 0

wT2 x = 0

パラメタ更新後必ずしも正しく分類できるとは限らないが,誤分類されにくくなっている

yi(wTi xi) = yi(w

Ti−1xi) + x2

ix1

x2

≤ 0 > 0

パーセプトロンw = �for t = 1 to T doif yt(wTxt) ≤ 0

w ← w + ytxt

return w

t = 2

パーセプトロン(復習)• 誤り駆動のオンライン学習器• 訓練例を誤分類したらパラメタ更新

• 線形分離可能なら有限回で収束• 学習結果は入力順に大きく依存

○×

×

○ ○

wT1 x = 0

wT2 x = 0

x1

x2

x3

x5

x4

wT3 x = 0(wT

4 x = 0)

wT5 x = 0

パーセプトロンw = �for t = 1 to T doif yt(wTxt) ≤ 0

w ← w + ytxt

return w

t = 5

w0 = �for t = 1 to T doif yt(wT

t−1xt) ≤ 0wt ← wt−1 + ytxt

elsewt ← wt−1

return 1T+1

�t wt

wT5 x = 0

平均化パーセプトロン• 誤り駆動のオンライン学習器• 訓練例を誤分類したらパラメタ更新

• 線形分離可能なら有限回で収束• 学習結果は入力順に大きく依存• 重みベクトルの平均化により安定

重みベクトルの平均

○×

×

○ ○

wT1 x = 0

wT2 x = 0

x1

x2

x3

x5

x4

wT3 x = 0(wT

4 x = 0)�1

N+1

�i wi

�Tx = 0

平均化パーセプトロン

t = 5

[Freund+ 1998]

w0 = �,wa = �for t = 1 to T doif yt(wT

t−1xt) ≤ 0wt ← wt−1 + ytxt

wa ← wa + tytxt

elsewt ← wt−1

return wT − 1T+1wa

平均化パーセプトロン• 誤り駆動のオンライン学習器• 訓練例を誤分類したらパラメタ更新

• 線形分離可能なら有限回で収束• 学習結果は入力順に大きく依存• 重みベクトルの平均化により安定

平均化パーセプトロン

オーバーヘッドは軽微

wT −1

T + 1wa = wT −

1

T + 1

T�

i=1

i(wi − wi−1)

= wN −1

T + 1((w1 − w0) + 2(w2 − w1) + . . . + T(wT − wT−1)

= wT −1

T + 1(−w0 − w1 − w2 − w3 − . . . − wT−1 + TwT )

=1

T + 1

i

wi

[Freund+ 1998]

PA (Passive Aggressive) アルゴリズム• マージンに基づくオンライン学習器• 訓練例を十分なマージンで正しく分類できなければパラメタ更新 

PA

○×

wT1 x = 0 wT

2 x = 0

パラメタ更新後は必ず正しく分類x1

x2

w = �for t = 1 to T doif yt(wTxt) ≤ 1

τ = 1−yt(wT xt)�xt�2

w ← w + ytτxt

return ww = argminw �∈Rn

1

2�w � − w�

s.t. 1 − yt(w�Txt) = 0

[Crammer+ 2006]

w = �for t = 1 to T doif yt(wTxt) ≤ 1

τ = min�

C, 1−yt(wT xt)�xt�2

w ← w + ytτxt

return w

PA-I アルゴリズム• マージンに基づくオンライン学習器• 訓練例を十分なマージンで正しく分類できなければパラメタ更新

• 制約を緩めることでノイズに対処

○×

wT1 x = 0

x1

x2

PA-I

×wT

2 x = 0

xnoise

wT3 x = 0

w = argminw �∈Rn

1

2�w � − w�+ Cξ

s.t. 1 − yt(w�Txt) ≤ ξ(ξ ≥ 0)

[Crammer+ 2006]

PA-I アルゴリズム• マージンに基づくオンライン学習器• 訓練例を十分なマージンで正しく分類できなければパラメタ更新

• 制約を緩めることでノイズに対処• により速度と精度を調整

• を小さくする→慎重な更新(高精度) 

○×

wT1 x = 0

x1

x2

×wT

2 x = 0

xnoisewT

3 x = 0

C

PA-I

C(> 0)

w = �for t = 1 to T doif yt(wTxt) ≤ 1

τ = min�

C, 1−yt(wT xt)�xt�2

w ← w + ytτxt

return w

[Crammer+ 2006]

線形分類から非線形分類へ• 線形分類できない場合はどうすれば良いか?• 素性ベクトルを非線形変換 し,高次素性空間で線形分離

○○

×

×○ ○

×

×

○非線形写像

Rn RH

φ : Rn �→ RH

線形分離不可

φ(x1)

φ(x3)

φ(x4)

φ(x2)

φ(x5)

wTφ(x) = 0

x1

x2

x3

x5

x4

線形分離可

x �→ φ(x)

線形分類から非線形分類へ• 線形分類できない場合はどうすれば良いか?• 素性ベクトルを非線形変換 し,高次素性空間で線形分離

○○

×

×○ ○

×

Rn RH

非線形写像φ : Rn �→ RH

φ(x1)

φ(x3)

φ(x4)

φ(x2)

wTφ(x) = 0

x1

x2

x3

x5

x4

×φ(x5)

x �→ φ(x)

線形分離可線形分離不可非線形分離可

線形分類から非線形分類へ• 線形分類できない場合はどうすれば良いか?• 素性ベクトルを非線形変換 し,高次素性空間で線形分離

φ : R2 �→ R3

0

1

0 1

x2

x1

x1 x2 y0 0 −10 1 +11 0 +11 1 −1

x1 x2 x1x2 y0 0 0 −10 1 0 +11 0 0 +11 1 1 −1

(0, 0)

(0, 1)

(1, 0)

(1, 1)

(1, 1, 1)

(1, 0, 0)

(0, 0, 0)0

1 0

10

1

x1x2

x1

x2

x1x2

(0, 1, 0)

φ((x1, x2)) = {x1, x2, x1x2} 組合せ素性

x �→ φ(x)

例:

線形分類から非線形分類へ• 線形分類できない場合はどうすれば良いか?• 素性ベクトルを非線形変換 し,高次素性空間で線形分離

(0, 0)

(0, 1)

(1, 0)

(1, 1)

x1 x2 y0 0 −10 1 +11 0 +11 1 −1

x1 x2 x1x2 y0 0 0 −10 1 0 +11 0 0 +11 1 1 −1

(1, 1, 1)

(0, 1, 0)

(1, 0, 0)

(0, 0, 0)0

1

0 1

x2

x1

φ((x1, x2)) = {x1, x2, x1x2} 組合せ素性

φ : R2 �→ R3

0

1 0

10

1

x1x2

x1

x2

x1x2

−1

8+

x1

2+

x2

2− x1x2 = 0

分離超平面:

例:

x �→ φ(x)

線形分類から非線形分類へ• 線形分類できない場合はどうすれば良いか?• 素性ベクトルを非線形変換 し,高次素性空間で線形分離

• 問題点: 次元数を増やす→分類時の空間・時間計算量が増える

例: 次元の素性空間で, 次以下の素性の組合せを考えると 

n d

非線形変換後の高次素性空間の次元数

φ((x1, x2)) = {x1, x2, x1x2} 組合せ素性

x �→ φ(x)

例:

�di=1 nCi

n(n+1)2 (d = 2) n3+5n

6 (d = 3)n = 10 55 175n = 100 5050 166750n = 1000 500500 166667500n = 10000 50005000 166666675000

カーネルを用いた非線形分類 (1/2)

• 素性の重み→訓練例の重み(分離超平面の別解釈)

×

分離超平面

○×

×・

○ ○

x

x1

x2

x3

x4 wTx = 0

x5

w =�

i

αixi と表現できるなら

= k(xi,x)

このような関数 があれば入力を非線形変換せずマージン計算可

カーネルトリック

wTφ(x) = (�

i

αiφ(xi))Tφ(x) =

i

αiφ(xi)Tφ(x)

wTx = (�

i

αixi)Tx =

i

αixTi x

k

y = sgn(�

i αik(xi,x))

様々なカーネルと非線形変換• 多項式カーネル:

素性ベクトルを で非線形変換した素性ベクトル間の内積に相当

• Gaussian RBF カーネル:

φ2

`

φ2 : (x1, x2) �→ (1,√

2x1,√

2x2, x21, x2

2,√

2x1x2)

kd(x,z) = (xTz + 1)d =d�

i=0

dCi(xTz)i

k2(x,z) = (x1z1 + x2z2 + 1)2

= x12z1

2 + x22z2

2 + 1 + 2x1z1x2z2 + 2x1z1 + 2x2z2

= (1,√

2x1,√

2x2, x21, x2

2,√

2x1x2)T (1,√

2z1,√

2z2, z21, z2

2,√

2z1z2)

kσ2(x,z) = exp(−�x − z�2

σ2)

無限次元の素性ベクトルへの非線形変換に相当どのようなカーネル関数なら非線形変換と対応づけられるか?

kσ(x,z) = exp(−�x�2 − �z�2 + 2xTz

σ2)

= exp(−�x�2 + �z�2

σ2)

∞�

n=0

1

n!

�2

σ2

�n

(xTz)n

Mercer の定理• 全ての(半)正定値カーネル(Mercer カーネル)は,別の素性空間への写像を経由した内積とみなせる

• (半)正定値カーネルとは,以下の二つの条件を満たすカーネル• 対称性:

• 正定値性:

• Mercer カーネルだと何が嬉しいか?

• Mercer カーネルに基づく分類器=非線形変換+線形分類器

k(xi,xj) = k(xi,xj)n�

i,j=1

k(xi,xj)cicj ≥ 0 ∀ci, cj ∈ R

α = �for t = 1 to T doif yt(

�j<t αjk(xj,xt)) ≤ 0

αt ← αt + yt

return α, ST = {xj ∈ D |αj �= 0}

カーネルパーセプトロン• パーセプトロンでは,パラメタが訓練例の重みの線形和でかけるので,自明にカーネル化可能

• 注意点: 過適合しやすくなるため平均化は必須パーセプトロン+非線形変換 カーネルパーセプトロン

サポートベクタ

w = �for t = 1 to T doif yt(wTφ(xt)) ≤ 0

w ← w + ytφ(xt)return w

学習

[Freund+ 1998]

α = �for t = 1 to T doif yt(

�j<t αjk(xj,xt)) ≤ 0

αt ← αt + yt

return α, ST = {xj ∈ D |αj �= 0}

カーネルパーセプトロン• パーセプトロンでは,パラメタが訓練例の重みの線形和でかけるので,自明にカーネル化可能

• 注意点: 過適合しやすくなるため平均化は必須パーセプトロン+非線形変換 カーネルパーセプトロン

w = �for t = 1 to T doif yt(wTφ(xt)) ≤ 0

w ← w + ytφ(xt)return w

学習

分類 y = sgn��

xi∈STαik(xi,x)

O(dim(φ(x)))

O(T2 · dim(x))

O(T · dim(x))

素性数が少ない→非線形変換; 訓練例数が少ない→カーネル

y = sgn(wTφ(x))

[Freund+ 1998]

O(T · dim(φ(x)))

平均化カーネルパーセプトロン• パーセプトロンでは,パラメタが訓練例の重みの線形和でかけるので,自明にカーネル化可能

• 注意点: 過適合しやすくなるため平均化は必須平均化パーセプトロン+非線形変換 平均化カーネルパーセプトロン

w = �,wa = �for t = 1 to T doif yt(wTφ(xt)) ≤ 0

w ← w + ytφ(xt)wa ← wa + tytφ(xt)

return w − 1T+1wa

α = �,αa = �for t = 1 to T doif yi(

�j<t αtk(xj,xt)) ≤ 0

αt ← αt + yt

αat ← αat + tyt

return

�α − 1

T+1αa,

ST = {xj ∈ D |αj �= 0}

ここまでのまとめ• 多くの自然言語処理タスクは機械学習における分類問題として定式化可能

• 線形分類器のオンライン学習• (平均化)パーセプトロン• Passive Aggressive アルゴリズム

• 非線形分類を実現する二つの方法• 素性ベクトルの非線形変換(例: 組合せ素性)

• 非線形カーネル(例: 多項式カーネル)

lunch time

二限目: シラバス• 言語データにおける素性空間• 疎ベクトル• 組合せ素性と多項式カーネルの双対性

• 多項式カーネルに基づく分類の高速化• カーネル展開/カーネル分割• 素性列トライ

• 多項式カーネルに基づく学習の高速化• オンライン学習+カーネル分割• オンライン学習+素性単位のカーネル分割

言語データにおける素性空間• 高次元• 語彙素性間の組合せを考慮すれば簡単に次元数は爆発

• 疎かつ冗長(素性の出現分布に Zipf 則が成り立つ)

• 高頻度で観測される素性はごく少数(非零の次元は1/100-1/1000)

• 素性の値が特殊• 多様な排他的素性(例: 品詞が名詞,活用が連用形)

• 文書分類など一部のタスクをのぞき二値素性 xi = {0,+1}

以下の議論では二値素性を仮定

言語データにおける素性空間(例)• 日本語係り受け解析

記憶 が 戻り , 帰った

名詞 助詞 動詞 特殊 動詞品詞

品詞細分類

活用

普通名詞 格助詞 * 読点 *

* * 連用形 * タ型

←係り元←係り先候補←文節間情報

記憶

文節間距離=1

(0, 1, 0, ..., 0, 1, 0, ...., 0, 1, 0..................., 0, 1, 0, ..., 0, 1, 0, ...0, 1, 0, .........)0, 0, 1, 0, ......, 0, 1, 0, ............., 0, 1, 0, ....0, 0, 1, 0, ....., 0, 1, 0, ..., 0, 1, 0...,, 0, 1, 0, ...0, 1, 0, ....)

名詞 普通名詞 が 助詞 格助詞

読点特殊,

文節間読点=なし

連用形動詞戻り

疎ベクトル: 効率的なベクトル表現• 疎ベクトル: 非零の次元の(index, value)のみ格納したベクトル

• 二値素性の場合には,index を保持するだけで良い

例: 1000次元ベクトル(非零の次元: 3)

内積計算のコストは次元数に比例

密ベクトル: 疎ベクトル:

100万次元の素性ベクトル100個の間の内積計算

自然言語データではこの辺り

内積計算のコストは非零の次元(発火素性)数にのみ依存

{

((1, 1), (4, 1), (999, 1))(1, 0, 0, 1, 0, . . . , 0, 1, 0)

非零の次元 密ベクトル 疎ベクトルの割合 Time Mem Time Mem

1.0 23.31s 763.9MiB 46.39s 1527.6MiB0.1 23.30s 763.9MiB 4.64s 153.8MiB

0.01 23.57s 763.9MiB 0.45s 16.1MiB0.001 23.59s 763.9MiB 0.04s 2.3MiB

(1, 4, 999)

素性の組合せ• 素性の組合せをどのように考慮するか?• 非線形変換→明示的に組合せ素性を列挙• 次多項式カーネル(二値素性)

次以下の素性の(重みつき)組合せを全て考慮

 

d

d

k2(x,z) = (x1z1 + x2z2 + 1)2

= x12z1

2 + x22z2

2 + 1 + 2x1z1x2z2 + 2x1z1 + 2x2z2

= 3x1z1 + 3x2z2 + 1 + 2x1z1x2z2(∵ x2i = xi, z

2i = zi)

= (1,√

3x1,√

3x2,√

2x1x2)T (1,√

3z1,√

3z2,√

2z1z2)

素性の組合せ• 素性の組合せをどのように考慮するか?• 非線形変換→明示的に組合せ素性を列挙• 次多項式カーネル(二値素性)

次以下の素性の(重みつき)組合せを全て考慮

素性数 のとき,非線形変換後の次元数は|F | = n |φd(F)| =d�

i=0

nCi

d

k3(x,z) = (x1z1 + x2z2 + x3z3 + 1)3

= (1,√

7x1,√

7x2,√

7x3,√

12x1x2,√

12x1x3,√

12x2x3,√

6x1x2x3)T ·(1,√

7z1,√

7z2,√

7z3,√

12z1z2,√

12z1z3,√

12z2z3,√

6z1z2z3)

k2(x,z) = (x1z1 + x2z2 + 1)2

= x12z1

2 + x22z2

2 + 1 + 2x1z1x2z2 + 2x1z1 + 2x2z2

= 3x1z1 + 3x2z2 + 1 + 2x1z1x2z2(∵ x2i = xi, z

2i = zi)

= (1,√

3x1,√

3x2,√

2x1x2)T (1,√

3z1,√

3z2,√

2z1z2)

d

多項式カーネル v.s. 非線形変換• カーネルに基づく分類 v.s. 非線形変換+線形分類

|S |x入力素性ベクトル と 個のサポートベクタとの内積計算

入力素性ベクトル 中の 次以下の組合せ素性数

x

d

d�

i=0

|x|Ci ∈ O(|x|d)

注: 低頻度な語彙素性の組合せはほとんど観測されない}

��

多項式カーネル 非線形写像+線形分類分類式 y = sgn

��xi∈S αi(xT

i x + 1)d�

y = sgn�wTφd(x)

空間計算量 O( ¯|xi||S |) O(|F |d)時間計算量 O(|x||S |) O(|φd(x)|)

係り受け解析 上位下位関係抽出|F |有効素性数 64, 493 306, 036|F |2 (d = 2) 3, 093, 768 6, 688, 886|F |3 (d = 3) 58, 361, 669 64, 249, 234

|x|平均発火素性数 27.6 15.4|φ2(x)|(d = 2) 396.1 136.9|φ3(x)|(d = 3) 3558.3 798.7

|S | ∼ 90, 000 ∼ 60, 000

Kernel Expansion(カーネル展開)• 低次の(多項式)カーネルで学習した分類器を,高次元素性空間上での線形分類器に変換

• 問題点: がメモリに載らないほど大きい場合はどうする?

• 近似カーネル展開: 重みの絶対値の小さい次元(素性)を捨てる

• カーネル分割: 素性ベクトルの一部だけ非線形変換する

x1 x2 α 1√

3x1

√3x2

√2x1x2

x1 0 0 −2 1 0 0 0 φ2(x1)

x2 0 1 +4 1 0√

3 0 φ2(x2)

x3 1 1 −3 1√

3√

3√

2 φ2(x3)

−1 −3√

3√

3 −3√

2 w

w

xi∈Sαikd(xi,x) =

�αiφd(xi)

Tφd(x) =��

αiφd(xi)�T

φd(x) = wTφd(x)

[Isozaki+ 2002]

近似カーネル展開• 重みの絶対値が小さい組合せ素性を捨てる• STEP1: を重み の正負で に分ける

• STEP2: 低次の組合せ素性から順に素性の重み と,その組合せを含む高次の組合せ素性の重みの上限と下限を求める

• STEP3: のときは重みを捨てる.また, または のとき STEP2 に戻り,より高次の組合せ素性の重みを計算

0x1

x1x2

S+,S−xi ∈ S αi

ω+

ω−

ω−

ω+

w

φ2(xi) = (1,√

3x1, . . . ,√

3xn,√

2x1x2, . . .√

2xn−1xn)

σ+ ≤ ω+

ω− ≤ σ−σ− < w < σ+

σ− σ+

σ · |S+|

|S |

√3

xi∈S+,x1∈xi

αi

σ(> 0) :閾値−σ · |S−|

|S |

w =√

3�

xi∈S,x1∈xi

αi

w =√

2�

xi∈S,x1,x2∈xi

αi

√3

xi∈S−,x1∈xi

αi

[Kudo+ 2003]

w =�

xi∈S αiφd(xi)

Kernel Splitting(カーネル分割)• サポートベクタ中に高頻度で含まれる素性 の組合せのみ陽に考慮する高速分類手法

• 仮定: 素性の出現について Zipf 則が成り立つ

f ∈ FC

例) 係り受け解析の分類器のサポートベクタ(非零の次元を頻度順に並べたもの)

上位1000素性で非零の次元の93.8%をカバー

|S | = 59171, |F | = 35571

{f ∈ F | freq(f) > r · |S |}

x1 = {1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 15, 19, 20, 22, 23, 28, 32, 51, 58, 73, 80, 87, 777, 1151, 1327, 23859}x2 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 19, 20, 22, 26, 30, 54, 70, 79, 85, 141, 157, 924, 925, 7824, 7825}. . .x59171 = {1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 15, 16, 17, 18, 20, 22, 27, 29, 43, 45, 53, 71, 79, 1691, 3070}

[Goldberg+ 2008]

Kernel Splitting(カーネル分割)• サポートベクタ中に高頻度で含まれる素性 の組合せのみ陽に考慮する高速分類手法

• 仮定: 素性の出現について Zipf 則が成り立つ

f ∈ FC

xC = x ∩ FC�

xi∈Sαikd(xi,x) =

xi∈Sαikd(xi,xC) +

xi∈Sαi{kd(xi,x) − kd(xi,xC)}

高頻度素性のみを含む素性ベクトル

{f ∈ F | freq(f) > r · |S |}

[Goldberg+ 2008]

Kernel Splitting(カーネル分割)• サポートベクタ中に高頻度で含まれる素性 の組合せのみ陽に考慮する高速分類手法

• 仮定: 素性の出現について Zipf 則が成り立つ

f ∈ FC

に含まれる高頻度の素性のみ陽に組合せを展開

xC = x ∩ FC

高頻度素性のみを含む素性ベクトル

xC

wC =�

xi∈Sαiφd(xi ∩ FC)

{f ∈ F | freq(f) > r · |S |}

省メモリな非線形変換( )|wC|� |w|

xi∈Sαikd(xi,x) =

xi∈Sαikd(xi,xC) +

xi∈Sαi{kd(xi,x) − kd(xi,xC)}

= wTCφd(xC) +

xi∈SR

αi{(xTi x + 1)d − (xT

i xC + 1)d}

[Goldberg+ 2008]

xTi x = xT

i xC

xC = x ∩ FC

Kernel Splitting(カーネル分割)• サポートベクタ中に高頻度で含まれる素性 の組合せのみ陽に考慮する高速分類手法

• 仮定: 素性の出現について Zipf 則が成り立つ

f ∈ FC

中の低頻度の素性を含むサポートベクタのみ考慮xR = x \ xC

のとき 0

xC = x ∩ FC

高頻度素性のみを含む素性ベクトル

{f ∈ F | freq(f) > r · |S |}

省メモリな非線形変換( )+高速なカーネル計算(    )  |SR|� |S ||wC|� |w|

xi∈Sαikd(xi,x) =

xi∈Sαikd(xi,xC) +

xi∈Sαi{kd(xi,x) − kd(xi,xC)}

= wTCφd(xC) +

xi∈SR

αi{(xTi x + 1)d − (xT

i xC + 1)d}

[Goldberg+ 2008]

xC = x ∩ FC

Kernel Splitting(カーネル分割)• サポートベクタ中に高頻度で含まれる素性 の組合せのみ陽に考慮する高速分類手法

• 仮定: 素性の出現について Zipf 則が成り立つ

f ∈ FC

xC = x ∩ FC

高頻度素性のみを含む素性ベクトル

{f ∈ F | freq(f) > r · |S |}

省メモリな非線形変換( )+高速なカーネル計算(    )  |SR|� |S ||wC|� |w|

xi∈Sαikd(xi,x) =

xi∈Sαikd(xi,xC) +

xi∈Sαi{kd(xi,x) − kd(xi,xC)}

= wTCφd(xC) +

xi∈SR

αi{(xTi x + 1)d − (xT

i xC + 1)d}

[Goldberg+ 2008]

xC = x ∩ FC

Kernel Splitting(カーネル分割)• サポートベクタ中に高頻度で含まれる素性 の組合せのみ陽に考慮する高速分類手法

• 仮定: 素性の出現について Zipf 則が成り立つ

f ∈ FC

xC = x ∩ FC

高頻度素性のみを含む素性ベクトル

{f ∈ F | freq(f) > r · |S |}

O(|xC|d)

省メモリな非線形変換( )+高速なカーネル計算(    )  |SR|� |S ||wC|� |w|

xi∈Sαikd(xi,x) =

xi∈Sαikd(xi,xC) +

xi∈Sαi{kd(xi,x) − kd(xi,xC)}

= wTCφd(xC) +

xi∈SR

αi{(xTi x + 1)d − (xT

i xC + 1)d}

O(|xC||SR|)

[Goldberg+ 2008]

素性列トライ• 自然言語処理では素性の出現に偏り→素性ベクトルが冗長• 少数の典型的な素性ベクトル(基本分類問題)が存在

• アイデア: 基本分類問題の解(マージン)を事前計算し利用

×

×

××

○ ○○○ ○○○○○

○○○××× ×

×××

×××

形容詞→名詞

副詞→名詞

形容詞→名詞文節間距離: 2

副詞→名詞文節間読点:有

係り受け解析の事例空間

入力を基本分類問題に当てはめて解く

x1 = {1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 15, 19, 20, 22, 23, 28, 32, 51, 58, 73, 80, 87, 777, 1151, 1327, 23859}x2 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 19, 20, 22, 26, 30, 54, 70, 79, 85, 141, 157, 924, 925, 7824, 7825}. . .x59171 = {1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 15, 16, 17, 18, 20, 22, 27, 29, 43, 45, 53, 71, 79, 1691, 3070}

[Yoshinaga+ 2009]

• 少数の基本分類問題(部分素性ベクトル)のマージンを予め計算し,分類時に部分結果として利用入力)

素性列トライに基づく高速分類

w1

w2

w3

w4

w1,2 w1,3w1,4

w2,3w2,4

w3,4

重みベクトル 通常のマージン計算wTφ2(x)

= w1 + w2 + w1,2

+w3 + w2,3 + w1,3

+w4 + w3,4 + w2,4 + w1,4

チェックする素性数

10

x = {f1, f2, f3, f4}, φ2(x) = {f1, f2, f3, f4, f1,2, f1,3, f1,4, f2,3, f2,4, f3,4}

[Yoshinaga+ 2009]

• 少数の基本分類問題(部分素性ベクトル)のマージンを予め計算し,分類時に部分結果として利用入力)

素性列トライに基づく高速分類

w1

w2

w3

w4

w1,2 w1,3w1,4

w2,3w2,4

w3,4

重みベクトル 通常のマージン計算 +部分結果  を利用wTφ2(x)

= w1 + w2 + w1,2

+w3 + w2,3 + w1,3

+w4 + w3,4 + w2,4 + w1,4

チェックする素性数

10 9 ( 2 + 7 )>基本素性のみチェック

W{1,2}

wTφ2(x)

= W{1,2}

+w3 + w2,3 + w1,3

+w4 + w3,4 + w2,4 + w1,4

x = {f1, f2, f3, f4}, φ2(x) = {f1, f2, f3, f4, f1,2, f1,3, f1,4, f2,3, f2,4, f3,4}

W{1,2} = wTφ2(x �)

(x � = {f1, f2})

[Yoshinaga+ 2009]

• 少数の基本分類問題(部分素性ベクトル)のマージンを予め計算し,分類時に部分結果として利用入力)

素性列トライに基づく高速分類

w1

w2

w3

w4

w1,2 w1,3w1,4

w2,3w2,4

w3,4

重みベクトル 通常のマージン計算 +部分結果  を利用W{1,2,3}

wTφ2(x)

= w1 + w2 + w1,2

+w3 + w2,3 + w1,3

+w4 + w3,4 + w2,4 + w1,4

wTφ2(x)

= W{1,2,3}

+w4 + w3,4 + w2,4 + w1,4

チェックする素性数

W{1,2,3} = wTφ2(x �)

(x � = {f1, f2, f3})

10 7 ( 3 + 4 )>基本素性のみチェック

x = {f1, f2, f3, f4}, φ2(x) = {f1, f2, f3, f4, f1,2, f1,3, f1,4, f2,3, f2,4, f3,4}

[Yoshinaga+ 2009]

• 少数の基本分類問題(部分素性ベクトル)のマージンを予め計算し,分類時に部分結果として利用入力)

• 重みを保持する素性ベクトル(基本分類問題)をどう選ぶか?• 入力(素性ベクトル)に最も近い基本問題をどう見つけるか?

素性列トライに基づく高速分類

w1

w2

w3

w4

w1,2 w1,3w1,4

w2,3w2,4

w3,4

重みベクトル 通常のマージン計算 +部分結果  を利用wTφ2(x)

= w1 + w2 + w1,2

+w3 + w2,3 + w1,3

+w4 + w3,4 + w2,4 + w1,4

チェックする素性数

10 4 ( 4 + 0 )>基本素性のみチェック

x = {f1, f2, f3, f4}, φ2(x) = {f1, f2, f3, f4, f1,2, f1,3, f1,4, f2,3, f2,4, f3,4}

W{1,2,3,4}

wTφ2(x)

= W{1,2,3,4}

W{1,2,3,4} = wTφ2(x �)

(x � = {f1, f2, f3, f4})

課題

組合せ素性を考慮しない分類器と計算量が同じ

[Yoshinaga+ 2009]

• 実データを解析して頻出部分ベクトルを列挙• 素性を頻度順に並べ素性列としてトライ(素性列トライ)に格納• 素性列トライの各ノードには部分素性ベクトルの重みを格納

• 分類時は,入力の素性ベクトルから順に高頻度の素性を取り出し,トライから類似基本問題を探索

素性列トライに基づく高速分類

{f1, f2}{f1, f3, f4}

{f1, f3, f5}{f2, f6}

{f1, f3} f1

f2

f2

f3

f4 f5

f6

素性ベクトルroot

素性列トライ

頻度

実データ

W{1,3}

W{1,3,5}

[Yoshinaga+ 2009]

実験 (1/2): カーネル展開/分割• 日本語係り受け解析の分類器を高速化• 分類器: 三次の多項式カーネル(SVM)

• サポートベクタ数: 68529

• 有効素性数: 38919

• TinySVM での分類時間: 16.67 ms./classify

近似カーネル展開 カーネル分割σ Acc. Time w

(%) [ms./classify] [MiB]0 90.93 0.0294 142.2

0.001 90.92 0.0296 64.60.002 90.91 0.0282 13.90.003 90.83 0.0267 4.2

r(FC) Time wC

[ms./classify] [MiB]0 (38919) 0.0294 142.210−4(4544) 0.0278 53.010−3 (529) 0.0269 11.210−2 (164) 0.0479 2.3

実験 (2/2): 素性列トライ• 日本語係り受け解析の分類器を高速化• 訓練データ( 例数: 296776)から素性列トライを構築( 基本問題数(トライ中の部分ベクトルの総数): ~1M)

近似カーネル展開+素性列トライ カーネル分割+素性列トライσ Acc. Time w

(%) [ms./classify] [MiB]0 90.93 0.0109 142.2+10.9

0.001 90.92 0.0101 64.6+10.90.002 90.91 0.0079 13.9+10.90.003 90.83 0.0063 4.2+10.9

r(FC) Time wC

(%) [ms./classify] [MiB]1 (38919) 0.0109 142.2+10.910−4(4544) 0.0095 53.0+10.910−3 (529) 0.0087 11.2+10.910−2 (164) 0.0200 2.3+10.9

係り受け解析器の速度: >10000文/秒

実験 (2/2): 素性列トライ• 日本語係り受け解析の分類器を高速化• 訓練データ( 例数: 296776)から素性列トライを構築( 基本問題数(トライ中の部分ベクトルの総数): ~1M)

近似カーネル展開+素性列トライ カーネル分割+素性列トライσ Acc. Time w

(%) [ms./classify] [MiB]0 90.93 0.0109 142.2+10.9

0.001 90.92 0.0101 64.6+10.90.002 90.91 0.0079 13.9+10.90.003 90.83 0.0063 4.2+10.9

r(FC) Time wC

(%) [ms./classify] [MiB]1 (38919) 0.0109 142.2+10.910−4(4544) 0.0095 53.0+10.910−3 (529) 0.0087 11.2+10.910−2 (164) 0.0200 2.3+10.9

σ Acc. Time w(%) [ms./classify] [MiB]

0 90.93 0.0142 142.2+0.30.001 90.92 0.0133 64.6+0.30.002 90.91 0.0110 13.9+0.30.003 90.83 0.0091 4.2+0.3

r(FC) Time wC

(%) [ms./classify] [MiB]1 (38919) 0.0142 142.2+0.310−4(4544) 0.0125 53.0+0.310−3 (529) 0.0117 11.2+0.310−2 (164) 0.0283 2.3+0.3

基本問題数を1/32にした場合

学習への応用: カーネル分割• オンライン学習では,分類(マージン計算)の高速化=学習の高速化

パーセプトロン+非線形変換 カーネルパーセプトロンw = �for t = 1 to T doif yt(wTφ(xt)) ≤ 0

w ← w + ytφ(xt)return w

α = �for t = 1 to T doif yt(

�j<t αjk(xj,xt)) ≤ 0

αt ← αt + yt

return α, S = {xj ∈ D |αj �= 0}

[Yoshinaga+ 2010]

学習への応用: カーネル分割• マージンの計算にカーネル分割を利用

←この式をカーネル分割に置換

カーネルパーセプトロンα = �

for t = 1 to T do

m =�

j<t αjk(xj,xt)

if ytm ≤ 0αt ← αt + yt

return α, ST = {xj ∈ D |αj �= 0}

[Yoshinaga+ 2010]

学習への応用: カーネル分割• マージンの計算にカーネル分割を利用

カーネルパーセプトロンα = �

for t = 1 to T doxC = xt ∩ FC

m = wCφd(xC)+

�xj∈SR

αj{k(xj,xt) − k(xj,xC)}

if ytm ≤ 0αt ← αt + yt

return α, ST = {xj ∈ D |αj �= 0}

Q. 1: なしで をどう決めるか?Q. 2: の更新はどうする?

FC

wC

ST

カーネル分割

[Yoshinaga+ 2010]

• マージンの計算にカーネル分割を利用• 訓練例から高頻度の素性をマイニング• 訓練例の重みと対応するように組合せ素性の重みを逐次更新

学習への応用: カーネル分割

カーネルパーセプトロン+カーネル分割α = �FC = {f |rank(f) ≤ N},wC = �for t = 1 to T do

xC = xt ∩ FC

m = wCφd(xC)+

�xj∈SR

αj{k(xj,xt) − k(xj,xC)}

if ytm ≤ 0αt ← αt + yt

wC ← wC + ytφd(xC)return α, ST = {xj ∈ D |αj �= 0}

カーネル分割

A. 1 訓練例中の頻出上位 N 素性を陽に 組み合せを展開する素性とする

A.2 陽に展開した組合せ素性 の重みを逐次更新

[Yoshinaga+ 2010]

パラメタ N をどう決める?• カーネル分割は空間・時間計算量のトレードオフを制御

• 高次の組合せ素性を考える場合は N を小さくすべき

• 訓練例数を増やす場合には N は大きくすべき

xC ← xt ∩ FC

m ← wCφd(xC) +�

xj∈SRαj{kd(xj,xt) − kd(xj,xC)}

O(|xC|d + |SR||xC|)時間計算量:

注)パラメタ N の値によらず,基本的に同一の分類器が得られる(丸め誤差の影響を除く)

Kernel Slicing: 素性単位のカーネル分割 (1/3)

• 自然言語処理では素性出現に偏り→素性ベクトルが冗長• 学習では,類似した訓練例(素性ベクトル)のマージンを,僅かに変更されたパラメタで繰り返し計算

訓練例 パラメタ

部分マージンを再利用すれば考慮するサポートベクタ数を大幅に削減可

発火素性(頻度順)

t

t − 1

t − 2

{s ∈ St|f25 ∈ s}{xt−1} {xt−2}

mt = + − + mt−

. . .

xt−1 = �f1, f3, f7, f19� �St−2,αt−2�

xt = �f1, f3, f9, f21� + �xt−1,αt−1�

xt+1 = �f1, f3, f7, f25� + �xt,αt�

. . .

[Yoshinaga+ 2010]

α = �for t = 1 to T doif yt(

�j<t αjk(xj,xt)) ≤ 0

αt ← αt + yt

return α, ST = {xj ∈ D |αj �= 0}

Kernel Slicing: 素性単位のカーネル分割 (2/3)

• Kernel slicing: 訓練例(素性ベクトル) 中の発火素性を高頻度なものから順に考慮し,部分マージン を構成的に計算

xt

mjt

例)

素性をひとつ追加した際のマージンの変化mt = m0

t +

|xt|�

j=1

mjt

xi∈St−1

αi(kd(xi,xjt) − kd(xi,x

j−1t ))

xt = {f1, f3, f5}

x0t = {}

x1t = {f1}

x2t = {f1, f3}

x3t = {f1, f3, f5}

[Yoshinaga+ 2010]

Kernel Slicing: 素性単位のカーネル分割 (2/2)

• Kernel slicing: 訓練例(素性ベクトル) 中の発火素性を高頻度なものから順に考慮し,部分マージン を構成的に計算

• 素性列トライを用いて部分マージンを管理・更新

f1

f2

f2

f3

f4 f5

f6

root素性列トライ

頻度

低m2t �

について, で 計算された部分マージ

m1t �

で追加されたサポートベクタ

mjt

例)

素性をひとつ追加した際のマージンの変化mt = m0

t +

|xt|�

j=1

mjt

xi∈St−1

αi(kd(xi,xjt) − kd(xi,x

j−1t ))

mjt = mj

t � +�

xi∈Sj

αi{kd(xi,xjt) − kd(xi,x

j−1t )}

Sj = {x ∈ St \ St � |fj ∈ x}t � ∼ t

t �(< t)xjtxt = {f1, f3, f5}

m3t ��

[Yoshinaga+ 2010]

xt

Kernel Slicing: 素性単位のカーネル分割 (2/2)

• Kernel slicing: 訓練例(素性ベクトル) 中の発火素性を高頻度なものから順に考慮し,部分マージン を構成的に計算

• 素性列トライを用いて部分マージンを管理・更新

xt

mjt

例)

f2

f2

f3

f4 f5

f6

root素性列トライ

頻度

低m2t �

素性をひとつ追加した際のマージンの変化mt = m0

t +

|xt|�

j=1

mjt

xi∈St−1

αi(kd(xi,xjt) − kd(xi,x

j−1t ))

について, で 計算された部分マージ

で追加されたサポートベクタSj = {x ∈ St \ St � |fj ∈ x}

t � ∼ t

t �(< t)xjt

f1

m1t �

mjt = mj

t � +�

xi∈Sj

αi{kd(xi,xjt) − kd(xi,x

j−1t )}

取得

xt = {f1, f3, f5}

m3t ��

[Yoshinaga+ 2010]

mjt = mj

t � +�

xi∈Sj

αi{kd(xi,xjt) − kd(xi,x

j−1t )}

Kernel Slicing: 素性単位のカーネル分割 (2/2)

• Kernel slicing: 訓練例(素性ベクトル) 中の発火素性を高頻度なものから順に考慮し,部分マージン を構成的に計算

• 素性列トライを用いて部分マージンを管理・更新

xt

mjt

例)

f1

f2

f2

f3

f4 f5

f6

root素性列トライ

頻度

低m2t �

素性をひとつ追加した際のマージンの変化mt = m0

t +

|xt|�

j=1

mjt

xi∈St−1

αi(kd(xi,xjt) − kd(xi,x

j−1t ))

について, で 計算された部分マージ

で追加されたサポートベクタSj = {x ∈ St \ St � |fj ∈ x}

t � ∼ t

t �(< t)xjt

m1t

更新

xt = {f1, f3, f5}

m3t ��

[Yoshinaga+ 2010]

Kernel Slicing: 素性単位のカーネル分割 (2/2)

• Kernel slicing: 訓練例(素性ベクトル) 中の発火素性を高頻度なものから順に考慮し,部分マージン を構成的に計算

• 素性列トライを用いて部分マージンを管理・更新

短い素性列に対する部分マージンは頻繁に更新長い素性列に対する部分マージンはそもそも計算が軽い

xt

mjt

例)

f1

f2

f2

f3

f4 f5

f6

root素性列トライ

頻度

素性をひとつ追加した際のマージンの変化mt = m0

t +

|xt|�

j=1

mjt

xi∈St−1

αi(kd(xi,xjt) − kd(xi,x

j−1t ))

について, で 計算された部分マージ

で追加されたサポートベクタ

mjt = mj

t � +�

xi∈Sj

αi{kd(xi,xjt) − kd(xi,x

j−1t )}

Sj = {x ∈ St \ St � |fj ∈ x}t � ∼ t

t �(< t)xjtxt = {f1, f3, f5}

m1t

m2t

m3t

[Yoshinaga+ 2010]

実験• Kernel slicing を PA-I における学習に利用

• 比較手法• SVM (TinySVM; http://chasen.org/~taku/software/TinySVM/)

• 正則化付き対数線形モデル( 確率的勾配降下法)[Tsuruoka+ 2009]

• 日本語係り受け解析と上位下位関係抽出タスクで評価• 訓練データ詳細

x50x130

x210x900

data set 係り受け 上位下位解析 関係抽出

T (# examples) 296,776 201,664Ave. of |x| 27.6 15.4Ave. of |φ3(x)| 3558.3 798.7|F | (# features) 64,493 306,036|F3| (# conj. features) 58,361,669 64,249,234

�1

実験結果 | 係り受け解析• Kernel slicing に基づく PA-I が最速

• 精度: PA-I と SVM は同等, 正則化を用いると少し精度が下がる

• 訓練例の冗長性から splitting→slicing 時のオーバーヘッドは軽微

1/6

x30カーネル

非線形変換

{

{

method acc. time memory

svm (batch) 90.93% 25912s 243MBpa-i | kernel 90.90% 8704s 83MBpa-i | splitting 90.90% 351s 149MBpa-i | slicing 90.89% 262s 175MBpa-i | linear 90.90% 465s 993MB�1-llm (sgd) 90.76% 4057s 21499MB

�1

実験結果 | 上位下位関係抽出• Kernel slicing に基づく PA-I が最速

• 精度: PA-I と SVM は同等, 正則化を用いると少し精度が下がる

• 訓練例の冗長性から splitting→slicing 時のオーバーヘッドは軽微

1/6

x70{

{

method acc. time memory

svm (batch) 93.09% 17354s 140MBpa-i | kernel 93.14% 1074s 49MBpa-i | splitting 93.10% 68s 108MBpa-i | slicing 93.05% 17s 131MBpa-i | linear 93.11% 103s 751MB�1-llm (sgd) 92.86% 779s 14089MB

カーネル

非線形変換

�1

Splitting vs. Slicing | パラメタ N

• パラメタ N と訓練時間の関係

• Kernel splitting: パラメタ N の影響大

• Kernel slicing: パラメタ N の影響小

パラメタ N は固定値で ok(注: 精度は丸め誤差を除いて変わらず)

splittingsplitting

slicingslicing

~1000MB~750MB

~130MB~180MB 0

20406080100120140160

100 1000 10000 100000

Trainingtime[s]

N (logscale)

0200400600800100012001400

100 1000 10000 100000

Trainingtime[s]

N (logscale)

係り受け解析N=250 (fixed)

上位下位関係抽出N=125 (fixed)

Splitting vs. Slicing | 訓練例数 T

• 訓練例数と学習時間の関係• Kernel splitting: パラメタ N を固定すると次第に鈍化

• Kernel slicing: ほぼ線形

部分マージンの再利用→パラメタ N に依存しないスケーラブルな学習

kernel kernel

splitting splitting

slicing0

50

100

150

200

0 50000 100000 150000 200000

Trainingtime[s]

T : # of examples

slicing

係り受け解析N=250 (fixed)

上位下位関係抽出N=125 (fixed)

0

100

200

300

400

500

600

0 100000 200000 300000

Trainingtime[s]

T : # of examples

ここまでのまとめ• 言語データの疎な素性空間を利用することで分類を高速化• 疎ベクトル: 分類器の空間・時間計算量を大幅に削減

• カーネル展開/分割: 非線形変換を用いて多項式カーネルを高速化

• 素性列トライ: 基本分類問題によりさらに高速化

• オンライン学習では分類の高速化=学習の高速化• オンライン学習+カーネル分割• オンライン学習+素性列単位のカーネル分割

• 分類専用の分類器,学習器はそれぞれ以下で実装を公開• pecco: http://www.tkl.iis.u-tokyo.ac.jp/~ynaga/pecco/

• opal: http://www.tkl.iis.u-tokyo.ac.jp/~ynaga/opal/

coffee break

その他の話題

3限目: シラバス• さらに大規模な学習・分類を目指して• メモリ節約型オンライン学習: Projectoron, Bugeted Passive Aggressive

• 乱択アルゴリズム: Random Feature Mixing, Hash Kernel

• 並列分散化: Parameter Mixing, Feature Sharding

• 構造分類の高速化: Staggered Decoding, Structure Compilation

一部論文からの図の引用があります

メモリ節約型オンライン学習• 動機: オンライン学習でカーネルを用いると,訓練例の一部を保持する必要があるため消費メモリが増える

• 目標: 予め指定したサポートベクタの上限数を超えない範囲で,より精度の高い分類器を得る

Projectron [Orabona+ 2008]

• サポートベクタに追加する訓練例が,その時点のサポートベクタの線形結合で近似できるときには追加しない

φ(x3)

φ(x1)

φ(x2)

P(φ(x3))P(φ(xt))

α = �for t = 1 to T doif yt

�j<t αjk(xj,xt) ≤ 0

d� = argmind

���φ(xt) −�

j<t djφ(xj)���

if���φ(xt) −

�j<t d�

j φ(xj)��� < η

α ← α + d�

elseαt ← yi

return α,ST = {xj ∈ D |αj �= 0}

α = �for t = 1 to T doif yt

�j<t αjk(xj,xt) ≤ 0

d� = argmind

���φ(xt) −�

j<t djφ(xj)���

if���φ(xt) −

�j<t d�

j φ(xj)��� < η

α ← α + d�

elseαt ← yi

return α,ST = {xj ∈ D |αj �= 0}

Projectron [Orabona+ 2008]

• サポートベクタに追加する訓練例が,その時点のサポートベクタの線形結合で近似できるときには追加しない

P(φ(xt))

φ(x3)

φ(x1)

φ(x2)

P(φ(x3))

O(|St−1|2)

O(|St−1||xt|)

アルゴリズム 誤分類率 (%) サポートベクタ数Perceptron 19.58± 0.09 15432.0± 69.62PA-I 15.27± 0.05 30131.4± 21.07Projectron 19.63± 0.08 3496.4± 18.39Projectron++ 18.27± 0.06 3187.0± 13.64

画像認識タスク

Bugeted Passive Aggressive [Wang+ 2010]

• PA-I で重みベクトルを更新する際,サポートベクタの数が与えられた上限値 を越えないよう制約を追加

を取り除きxr

中の線形和で置き換え

B

w = argminw �∈Rn

1

2�w � − w�+ Cξ

s.t. 1 − yt(w�Tφ(xt)) ≤ ξ(ξ ≥ 0),

w � = w − αrφ(xr) +�

xj∈Vβjφ(xj)

V ⊆ S + xt − xr

Bugeted Passive Aggressive [Wang+ 2010]

• PA-I で重みベクトルを更新する際,サポートベクタの数が与えられた上限値 を越えないよう制約を追加

を取り除きxr

中の線形和で置き換え

一番冗長なサポート

ベクタ を取り除くxr

[Wang+ 2010]

B

w = argminw �∈Rn

1

2�w � − w�+ Cξ

s.t. 1 − yt(w�Tφ(xt)) ≤ ξ(ξ ≥ 0),

w � = w − αrφ(xr) +�

xj∈Vβjφ(xj)

V ⊆ S + xt − xr

V =

{xt} (O(B)){xt} ∪NN(xr)(O(B)){xt} ∪ St−1 \ xr (O(B3))

• 分類器の素性関数の実装に必要なメモリを削減する手法• 文字列→ID:

• 重みベクトル:

Random Feature Mixing [Ganchev+ 2008]

h(s)golf

game

Woods

例)文書分類

ハッシュ表

golf 2

game 3

Woods 5

x

>

n�

i=1

length(si) + 4n bytes

4n bytes

011010

ハッシュ関数

• 分類器の素性関数の実装に必要なメモリを削減する手法• 文字列→ID:

• 重みベクトル:

Random Feature Mixing [Ganchev+ 2008]

x

>

n�

i=1

length(si) + 4n bytes

4n bytes

011000

h(s)ハッシュ関数

OR素性に相当

例)文書分類

golf

game

Woods

どれぐらい衝突するか?( : 素性数; : 重みの数)n m

乱拓化

(n, m) 衝突する 重み辺りの素性の割合 平均素性数

(1.0M, 0.5M) 86.5% 2.31(1.0M, 1.0M) 63.1% 1.58(1.0M, 5.0M) 18.3% 1.10

• 分類器の素性関数の実装に必要なメモリを削減する手法• 文字列→ID:

• 重みベクトル:

Random Feature Mixing [Ganchev+ 2008]

例)文書分類

>

n�

i=1

length(si) + 4n bytes

4n bytes

SVM+Random Feature Mixing で学習した場合の相対精度

m/n

高頻度/重要な素性(少数)同士はほとんど重複しない!

libarow: http://code.google.com/p/libarow/

どれぐらい衝突するか?( : 素性数; : 重みの数)n m

[Ganchev+ 2008](n, m) 衝突する 重み辺りの

素性の割合 平均素性数(1.0M, 0.5M) 86.5% 2.31(1.0M, 1.0M) 63.1% 1.58(1.0M, 5.0M) 18.3% 1.10(10K, 1.0M) 0.01% 1.006

Hash Kernel [Weinberger+ 2009]

• 非線形変換後の高次素性ベクトルをハッシュ関数で低次素性空間に縮退し,縮退した空間上で内積を計算

• 期待値:

• 分散:

k(x,z) = φ(x)Tφ(x)

乱拓化k̄(x,z) = φ̄(x)T φ̄(x) (φ̄j(x) =

i:h(i)=j

ξ(i)φi(x))

Eφ̄[φ̄(x)T φ̄(z)] = Eh[Eξ[�

i,j

ξ(i)ξ(j)φi(x)φj(z)δh(i),h(j)]]

= φ(x)Tφ(z)

Eφ̄[(φ̄(x)T φ̄(z))2] − Eφ̄[φ̄(x)T φ̄(z)]2

=1

m

i �=j

φi(x)2φj(z)2 +�

i �=j

φi(x)φi(z)φj(x)φj(z)

ξ : N �→ {±1}

h : N �→ {1, . . . ,m}

�φ(x)� = �φ(z)� = 1 O( 1m )のとき

Hash Kernel [Weinberger+ 2009]

• 非線形変換後の高次素性ベクトルをハッシュ関数で低次素性空間に縮退し,縮退した空間上で内積を計算  k(x,z) = φ(x)Tφ(x)

乱拓化k̄(x,z) = φ̄(x)T φ̄(x) (φ̄j(x) =

i:h(i)=j

ξ(i)φi(x))

ξ : N �→ {±1}

h : N �→ {1, . . . ,m}

スパム分類

226 features244 personalized features

Vowpal Wabbit: http://hunch.net/~vw/

[Weinberger+ 2009]

機械学習と並列化• 並列分散計算環境で学習を高速化したい• MapReduce を用いて(遅い)バッチ学習を並列化 [NIPS 2006; 他]

• というわけで,並列分散化すべきはオンライン学習• Example Sharding: データを分割してそれぞれ学習

• Feature Sharding: 素性空間を分割してそれぞれ学習

• Parameter Sharding: ハイパーパラメタのチューニングを並列化

Parallelizing slow algorithms seems uncompelling. Parallelizing many algorithms also seems uncompelling, because the effort required to parallelize is substantial. -- John Langford; http://hunch.net/?p=627

素性抽出も並列化するのを忘れずに

Iterative Parameter Mixing [McDonald+ 2010]

• 学習データを分割して並列に学習し,パラメタを線形結合• Parameter mixing: 学習後に線形結合

○×

×

○ ○

x1

x2

x3

x5

x4 w2x = 0 (D2 = D \D1)

w1x = 0 (D1 = {(x1,+1)(x3,−1)})

D = D1 � . . . �Dn

prallel for i = 1 to n dowi = Perceptron(Di, iter)

return w =�

i µiwi

10 Shards

[McDonald+ 2010]

Iterative Parameter Mixing [McDonald+ 2010]

• 学習データを分割して並列に学習し,パラメタを線形結合• Parameter mixing: 学習後に線形結合

• Iterative parameter mixing: 一通り訓練例を見る度にパラメタを同期

D = D1 � . . . �Dn

prallel for i = 1 to n dowi = Perceptron(Di, iter)

return w =�

i µiwi

10 Shards

D = D1 � . . . �Dn

w = �for j = 1 to iter doprallel for i = 1 to n do

wi = Perceptron1(Di,w)w =

�i µiwi

return w訓練時の誤分類数に大きな

差がなければ で良いµi = 1n

他のデータの重みベクトル(分離平面)の情報が入る

[McDonald+ 2010]

Feature Sharding [Langford 2010]

• オンライン学習では学習自体は十分速く,データを読む際の IO がむしろボトルネック

• そこで素性空間を分割して並列に学習

• 分割した素性間に独立性が仮定できれば自明にうまくいく

• 独立性が仮定できなくても,出力をまとめる学習器で非線形性を考慮できれば全訓練例を用いた学習より高精度が得られることも

P(x1|y)P(x2|y) = P(x1, x2|y)

F = F1 � . . . � Fn

prallel for i = 1 to n doDi = {(xi ∩ Fi, yi) | (xi, yi) ∈ D}wi = Perceptron(Di, iter)

D � = ({wT1 xt, . . . ,wT

nxt}, yt)Tt=0

w = Perceptron(D �, iter)return w

ここ聴きとり自信なし[Langford 2009]

}

Staggered Decoding [Kaji+ 2010] (1/2)

• 系列ラベリングではラベル数の多項式オーダで復号化が鈍化• 動的計画法:

A

B

A

B

A

B

A

B

A

B

A

B

C

D

C

D

C

D

A

B

A

B

C

D

N = 4, L = 2 N = 4, L = 4

x2x1 x3 x4

A

x2x1 x3 x4

4倍低速

O(NL2)

y = {A,A,B,A} y = {B,A,C, B}

y� = argmaxy

�Nn=1 log p(xn|yn) log p(yn |yn−1)

Staggered Decoding [Kaji+ 2010] (2/2)

• 複数のラベルをまとめたラティス(縮退ラティス)上で最尤系列を動的計画法で探索  

A

Z

A

Z

A

Z

A

Z

x2x1 x3 x4

縮退ラベル

活性ラベル

縮退ラティス N = 4, L = 4

A

B

A

B

C

D

C

D

C

D

A

B

A

B

C

D

A

x2x1 x3 x4

A

B

A

B

C

D

C

D

C

D

A

B

A

B

C

D

A

x2x1 x3 x4

Staggered Decoding [Kaji+ 2010] (2/2)

• 複数のラベルをまとめたラティス(縮退ラティス)上で最尤系列を動的計画法で探索

• 最尤系列が活性ラベルのみを含む→探索終了• 最尤系列が縮退ラベルを含む→活性ラベルを増やして再探索• 各ノードを通る最尤系列のスコアが活性ラベルのノードのみから構成される最尤系列のスコアより小さければそのノードは枝刈り

A

Z

A

Z

A

Z

A

Z

x2x1 x3 x4

縮退ラベル

活性ラベル

縮退ラティス N = 4, L = 4

log p(xi|Z) = maxX={B,C,D} log p(xi|X)log p(A|Z) = maxX={B,C,D} log p(A|X)log p(Z|A) = maxX={B,C,D} log p(Z|A)log p(Z|Z) = maxX,X �={B,C,D} log p(A|X)

score(y = {A,A,A,A}) > score(y = {Z,Z, A,A})

Staggered Decoding [Kaji+ 2010] (2/2)

• 複数のラベルをまとめたラティス(縮退ラティス)上で最尤系列を動的計画法で探索

• 最尤系列が活性ラベルのみを含む→探索終了• 最尤系列が縮退ラベルを含む→活性ラベルを増やして再探索• 各ノードを通る最尤系列のスコアが活性ラベルのノードのみから構成される最尤系列のスコアより小さければそのノードは枝刈り

A

Z

A A

Z

A

x2x1 x3 x4

縮退ラベル

活性ラベル

縮退ラティス

Z

N = 4, L = 4

A

B

A

B

C

D

C

D

C

D

A

B

A

B

C

D

A

x2x1 x3 x4

Staggered Decoding [Kaji+ 2010] (2/2)

• 複数のラベルをまとめたラティス(縮退ラティス)上で最尤系列を動的計画法で探索

• 最尤系列が活性ラベルのみを含む→探索終了• 最尤系列が縮退ラベルを含む→活性ラベルを増やして再探索• 各ノードを通る最尤系列のスコアが活性ラベルのノードのみから構成される最尤系列のスコアより小さければそのノードは枝刈り

A A A A

x2x1 x3 x4

縮退ラベル

活性ラベル

縮退ラティス

B

Z’ Z’

B

Z’

B

N = 4, L = 4

A

B

A

B

C

D

C

D

C

D

A

B

A

B

C

D

A

x2x1 x3 x4

Staggered Decoding [Kaji+ 2010] (2/2)

• 複数のラベルをまとめたラティス(縮退ラティス)上で最尤系列を動的計画法で探索

• 最尤系列が活性ラベルのみを含む→探索終了• 最尤系列が縮退ラベルを含む→活性ラベルを増やして再探索• 各ノードを通る最尤系列のスコアが活性ラベルのノードのみから構成される最尤系列のスコアより小さければそのノードは枝刈り

A A A A

x2x1 x3 x4

縮退ラベル

活性ラベル

縮退ラティス

B

Z’

B B

N = 4, L = 4

A

B

A

B

C

D

C

D

C

D

A

B

A

B

C

D

A

x2x1 x3 x4

Staggered Decoding [Kaji+ 2010] (2/2)

• 複数のラベルをまとめたラティス(縮退ラティス)上で最尤系列を動的計画法で探索

• 最尤系列が活性ラベルのみを含む→探索終了• 最尤系列が縮退ラベルを含む→活性ラベルを増やして再探索• 各ノードを通る最尤系列のスコアが活性ラベルのノードのみから構成される最尤系列のスコアより小さければそのノードは枝刈り

A A A A

x2x1 x3 x4

活性ラベル

縮退ラティス

B B B

C

D

N = 4, L = 4

A

B

A

B

C

D

C

D

C

D

A

B

A

B

C

D

A

x2x1 x3 x4

なるべく早くスコアの高いパスが得られる よう活性ラベルは尤度 が高い順に考慮p(y)

Staggered Decoding [Kaji+ 2010] (2/2)

• 複数のラベルをまとめたラティス(縮退ラティス)上で最尤系列を動的計画法で探索

• 最尤系列が活性ラベルのみを含む→探索終了• 最尤系列が縮退ラベルを含む→活性ラベルを増やして再探索• 各ノードを通る最尤系列のスコアが活性ラベルのノードのみから構成される最尤系列のスコアより小さければそのノードは枝刈り

A A A A

x2x1 x3 x4

活性ラベル

縮退ラティス

B B B

C

D

N = 4, L = 4

最適解を保証N = 4, L = 4

A

B

A

B

C

D

C

D

C

D

A

B

A

B

C

D

A

x2x1 x3 x4

Staggered Decoding [Kaji+ 2010] (2/2)

• 複数のラベルをまとめたラティス(縮退ラティス)上で最尤系列を動的計画法で探索

A A A A

x2x1 x3 x4

活性ラベル

縮退ラティス

B B B

C

D

N = 4, L = 4

L = 45 L = 319

A

B

A

B

C

D

C

D

C

D

A

B

A

B

C

D

A

x2x1 x3 x4

HMP: http://www.tkl.iis.u-tokyo.ac.jp/~kaji/staggered/

品詞タグ付与 品詞タグ付与×基本句同定

Viterbi 4000 77Staggered 16000 1600

復号化速度 [文数/秒] 訓練時間品詞タグ付与 品詞タグ付与

×基本句同定Viterbi 100sec. 20min.Staggered 37sec. 1.5min.

Structure Compilation [Liang+ 2008]

• 構造分類をより単純なモデルで高精度で行いたい例) 系列ラベリング問題(品詞タグ付け)

O(NL2) O(NL)x1 x2 x3 x4

y1 y2 y3 y4

x1 x2 x3 x4

y1 y2 y3 y4

Conditional Random Fields Independent Logistic Regression

Structure Compilation [Liang+ 2008]

• 構造分類をより単純なモデルで高精度で行いたい例) 系列ラベリング問題(品詞タグ付け)

O(NL2) O(NL)x1 x2 x3 x4

y1 y2 y3 y4

x1 x2 x3 x4

y1 y2 y3 y4

Conditional Random Fields Independent Logistic Regression

訓練例(2000文)

95.0% 品詞タグ 91.7%

75.3% 固有表現 69.1%

Structure Compilation [Liang+ 2008]

• 構造分類をより単純なモデルで高精度で行いたい例) 系列ラベリング問題(品詞タグ付け)

O(NL)x1 x2 x3 x4

y1 y2 y3 y4

x1 x2 x3 x4

y1 y2 y3 y4

訓練例(2000文)

95.0% 品詞タグ 94.4%

75.3% 固有表現 66.2%

O(NL2)

近似誤差は減る(精度の上限

は上がる)が推定誤差は増大

素性を精緻化

Conditional Random Fields Independent Logistic Regression

Structure Compilation [Liang+ 2008]

• 構造分類をより単純なモデルで高精度で行いたい例) 系列ラベリング問題(品詞タグ付け)

O(NL2) O(NL)x1 x2 x3 x4

y1 y2 y3 y4

訓練例(2000文)

95.0% 品詞タグ

75.3% 固有表現

ラベルなしデータ(200000文)

x1 x2 x3 x4

y1 y2 y3 y4

Conditional Random Fields Independent Logistic Regression

Structure Compilation [Liang+ 2008]

• 構造分類をより単純なモデルで高精度で行いたい例) 系列ラベリング問題(品詞タグ付け)

O(NL2) O(NL)x1 x2 x3 x4

y1 y2 y3 y4

訓練例(2000文)

訓練例(200000文)

ラベルなしデータ(200000文)

95.0% 品詞タグ

75.3% 固有表現

x1 x2 x3 x4

y1 y2 y3 y4

Conditional Random Fields Independent Logistic Regression

Structure Compilation [Liang+ 2008]

• 構造分類をより単純なモデルで高精度で行いたい例) 系列ラベリング問題(品詞タグ付け)

O(NL2) O(NL)x1 x2 x3 x4

y1 y2 y3 y4

訓練例(2000文)

95.0% 品詞タグ 95.0%

75.3% 固有表現 72.7%

ラベルなしデータ(200000文)

x1 x2 x3 x4

y1 y2 y3 y4

訓練例数が増えたことで 推定誤差が減少

Conditional Random Fields Independent Logistic Regression

訓練例(200000文)

Structure Compilation [Liang+ 2008]

• 構造分類をより単純なモデルで高精度で行いたい例) 系列ラベリング問題(品詞タグ付け)

O(NL2)x1 x2 x3 x4

y1 y2 y3 y4

訓練例(2000文)

95.0% 品詞タグ 95.0%

75.3% 固有表現 72.7%

訓練例(200000文)

ラベルなしデータ(200000文)

x1 x2 x3 x4

y1 y2 y3 y4

速度を落とさず高精度化を達成

O(NL)

Conditional Random Fields Independent Logistic Regression

論文リスト(一限目)

• Rosenblatt 1958: F. Rosenblatt. The perceptron: A probabilistic model for information storage and organization in the brain. Psychological Review, v65, No. 6.http://www.ling.upenn.edu/courses/Fall_2007/cogs501/Rosenblatt1958.pdf

• Freund+ 1999: Y. Freund and R. E. Schapire. 1999. Large margin classification using the perceptron algorithm. In Machine Learning 37(3),http://www.cs.ucsd.edu/~yfreund/papers/LargeMarginsUsingPerceptron.pdf

• Daume III 2006: H. Daume III. Practical Structured Learning Techniques for Natural Language Processing. PhD thesis.http://hal3.name/docs/daume06thesis.pdf

• Crammer+ 2006: K. Crammer, O. Dekel, J. Keshet, S. Shalev-Shwartz, Y. Singer. Online Passive-Aggressive Algorithms. JMLR 7(Mar).http://jmlr.csail.mit.edu/papers/v7/crammer06a.html

論文リスト(二限目)• Isozaki+ 2002: H. Isozaki, H. Kazawa. Efficient support vector

classifiers for named entity recognition. Proc. COLING.http://acl.ldc.upenn.edu/C/C02/C02-1054.pdf

• Kudo+ 2003: T. Kudo and Y. Matsumoto. Fast methods for kernel-based text analysis. Proc. ACL.http://www.aclweb.org/anthology/P/P03/P03-1004.pdf

• Goldberg+ 2008: Y. Goldberg and M. Elhadad. splitSVM: Fast, Space-Efficient, non-Heuristic, Polynomial Kernel Computation for NLP Applications. Proc. ACL.http://www.aclweb.org/anthology/P/P08/P08-2060.pdf

• Yoshinaga+ 2009: N. Yoshinaga and M. Kitsuregawa. Polynomial to Linear: Efficient Classification with Conjunctive Features. Proc. EMNLP.http://www.aclweb.org/anthology-new/D/D09/D09-1160.pdf

• Yoshinaga+ 2010: N. Yoshinaga and M. Kitsuregawa. Kernel Slicing: Scalable Online Training with Conjunctive Features. Proc. COLING.http://www.aclweb.org/anthology/C/C10/C10-1140.pdf

論文リスト(二限目)

• Tsuruoka 2009: Y. Tsuruoka, J. Tsujii, and S. Ananiadou. Stochastic gradient descent training for L1-regularized log-linear models with cumulative penalty. Proc. ACL.http://www.aclweb.org/anthology/P/P09/P09-1054.pdf

論文リスト(三限目)• Orabona+ 2009: Bounded Kernel-Based Online Learning. JMLR 10

(Nov)

http://jmlr.csail.mit.edu/papers/v10/orabona09a.html

• Wang+ 2010: Online Passive-Aggressive on a Budget. Proc. AISTATS. http://jmlr.csail.mit.edu/proceedings/papers/v9/wang10b/wang10b.pdf

• Ganchev+ 2008: Small Statistical Models by Random Feature Mixing. ACL workshop on Mobile NLP. http://www.cs.jhu.edu/~mdredze/publications/mobile_nlp_feature_mixing.pdf

• Weinberger 2009: Feature Hashing for Large Scale Multitask Learning. Proc. ICML. http://www.cs.mcgill.ca/~icml2009/papers/407.pdf

論文リスト(三限目)• McDonald+ 2010: Distributed Training Strategies for the

Structured Perceptron. Proc. NAACL. http://www.aclweb.org/anthology/N/N10/N10-1069.pdf

• Langford 2010: A Method for Parallel Online Learning. MMDS.http://www.stanford.edu/group/mmds/slides2010/Langford.pdf

• Langford 2009: J. Langford. Parallel Online Learning. NIPS workshop (talk).http://videolectures.net/nipsworkshops09_langford_pol/

• Kaji+ 2010: Efficient Staggered Decoding for Sequential Labeling. Proc. ACL.http://www.aclweb.org/anthology/P/P10/P10-1050.pdf

• Liang+ 2008: Structure Compilation: Trading Structure for for features. Proc. ICML.http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.142.5385&rep=rep1&type=pdf

おつかれさまでした

top related