Download pdf - Gamglm

Transcript
Page 1: Gamglm

ガンマ一般化線形回帰モデル

デンソーアイティーラボラトリ

内海慶 [email protected]

Page 2: Gamglm

今日の話

独立な少数のサンプルから,サンプルの最大値を求めたい

極値分布とかをまじめに求める話

文字列の一部を見て,単語の最大長を推定する(今日の話)

紹介するのはサンプルの極値がガンマ分布に従うと仮定した手法

ツールは公開されている

gamglm(http://www.chasen.org/~daiti-m/dist/gamglm/)

Page 3: Gamglm

単語の長さの分布

0

0.1

0.2

0.3

0.4

0.5

0.6

1 5 9 13 17 21 25 29 33 37 41 45 49 53 57 61 65 69 73 77 81 85 89

日本語

中国語

タイ語

どこかにピークがあって指数的に減衰する

ガンマ分布

Page 4: Gamglm

単語の長さはガンマ分布

x:単語の長さ

a,b: ガンマ分布のパラメータ

こいつを回帰してやれば良い

実際には同一言語内でも,観測文字列毎に単語の長さは変化する

接尾辞が「株式会社」なら単語の最大文字列長は20とかになりそう

接尾辞が「が」や「を」,「に」なら単語の最大文字列長はだいたい1になる

Page 5: Gamglm

ちなみに

日本で一番長い株式会社の名前は137文字

株式会社あなたの幸せが私の幸せ世の為人の為人類幸福繋がり創造即ち我らの使命なり今まさに変革の時ここに熱き魂と愛と情鉄の勇気と利他の精神を持つ者が結集せり日々感謝喜び笑顔繋がりを確かな一歩とし地球の永続を約束する公益の志溢れる我らの足跡に歴史の花が咲くいざゆかん浪漫輝く航海へ

Page 6: Gamglm

接尾辞毎にパラメータを変えたい

f: 接尾辞の特徴ベクトル

w,v: a,bを回帰するパラメータ

Page 7: Gamglm

パラメータ推定

訓練データの対数尤度を最大化したい

勾配法で解くと局所解にハマる

特徴の間に相関がある(勾配自体にも相関がある)

パラメータが殆ど0という結果になった

※いまいちこの辺分かってないので説明できません

MCMCでパラメータを推定する

Page 8: Gamglm

MCMC

w, vを初期化

1. w, v どちらかの feature index を1つ選ぶ

w[id] ← w[id] + η*u; //

パラメータ変更前と変更後の尤度計算(Lik_1,Lik_2)

if (bernoulli(Lik2 - Lik1) { return accept; }else {return revert; }

1に戻る

尤度計算の式

Page 9: Gamglm

予測の方法

ガンマ分布の累積分布関数の値が閾値を超える文字列長を最大文字列長として出力する

累積分布関数はGSLに実装がある

gsl_cdf.hにある gsl_cdf_gamma_Pが使える

a, b の値は観測された接尾辞から回帰する

予測プログラム

for (int i = 1; i < max_length; ++i){

if (gamma_cdf(i, a, 1./b) > p) return i;

}

Page 10: Gamglm

実験

特徴量

特徴 概要

w_i 位置 t - iの文字 (0 <= i <= 1)

t_i 位置 t - iの文字種 (0 <= i <= 4)

type 位置 t の文字種が直前で何文字続くか

c 位置 t から最大8文字前までで文字種の変化した回数

Page 11: Gamglm

使用データ

日本語,中国語,タイ語

日本語:BCCWJ PN 1万文(ニュース記事)

中国語:SIGHAN bakeoff 2005 MSR 1万文(科学記事)

タイ語:InterBEST 2009 novel 1万文

Page 12: Gamglm

予測精度(累積分布関数の閾値0.95)

単語の長さ 日本語 中国語 タイ語

1 1.000 1.000 1.000

2 1.000 0.999 1.000

3 1.000 0.962 0.972

4 0.460 0.590 0.950

5 0.018 0.281 0.940

6 0.000 0.300 0.817

7 0.000 0.000 0.593

8 0.000 0.000 0.195

9 0.000 0.000 0.0645

10 0.000 0.000 0.250

予測した最大長に正しい単語の長さが含まれる場合を正解とする

Page 13: Gamglm

まとめ

大半が短い語なので,短い単語の長さはほぼ間違いなく求められた

低頻度の長い単語になると誤りが多い

タイ語は長い単語の頻度がそれなりにあるので,その分精度が出ている

指数的に頻度が減衰するような極値を求めたい場合に使えそうな手法なので,興味ある人は使ってみてください

ちなみに公開されているツールには学習器はgammaのa,bを回帰するので,単語長の予測とかは別途自分で書く必要がある