HPYLM
VPYLM
Probabilistic language models
確率的言語モデル
 言語を扱う様々な場面で利用される
 音声認識
 手書き文字認識
 機械翻訳
 誤り訂正
 文に対する確率分布をモデル化
 条件付き確率の積で表す
N-gram モデル
 単語の条件付き確率は N-1 個前までの
単語だけで計算できると仮定する
スムージングの必要性
 N に対してパラメータ数はべき乗で増える
 直接訓練コーパスに対して尤度を最大化
 過学習してしまう
 N を増やすと単語履歴を丸暗記する
 過学習を避け真の条件付き確率を推定するには
スムージングが必要
Hierarchical Pitman-Yor
Language Models [Teh, 2006]
 ベイズアプローチから提案された適切なス
ムージングを導入した確率的言語モデル
 これまで最も良いとされてきた Interpolated
Kneser-Ney は HPYLM の近似となっている
Interpolated Kneser-Ney
長い文脈に続く w の出現回数をディスカウントして,
短い文脈の w の確率で補完する
の値は交差検定で求める.
この部分を で変化させたり等の工夫がされてきた.
Pitman-Yor Prosess
relevant to language modeling
 確率空間 X 上の確率分布の確率分布
 3つのパラメータ
 Chinese restaurant process の枠組みで
見ると言語モデルに合致する
もまた確率空間 X 上の確率分布
Chinese Restaurant Process -1-
 CRP はレストランに来るお客の座席配置の確率分布を決める
Table1
最初のお客は1つ目のテーブルに座って料理1を食べる.
以降は...
Tablei
Tablek
に比例する確率でテーブルiに座り料理wiを食べる
に比例する確率で新しいテーブルkに座り料理wkを食べる
お客の列
※別のテーブルで同じ料理を提供していることもある : 客のいるテーブル数
Chinese Restaurant Process -2-
 新しいお客が料理 w を食べる確率は
 料理 w を単語と見なすと unigram 言語モデル
: 今レストランにいるお客の総数
: 全語彙 V の一様分布 1/V
: 料理 w を食べている客の数
: 料理 w を提供しているテーブルの数
Hierarchical Pitman-Yor
Language Models
 文脈が与えられた時の単語の確率分布を得たい
(ただし先頭の1語は取り除く)
1つ文脈を落とした時の単語の確率分布
基底測度は再起的に計算される
: 全語彙 V の一様分布 1/V
T1 T2 TK
…
各階層のレストランの座席
配置からその文脈での条件
付き確率が求まる
1つ文脈を落とした(1つ上の階層の)確率で補完
学習アルゴリズム
FOR i = 1 to N
FOR t = 1 to T
READ {Context:u, word: wt}
IF i > 0 THEN
remove_customer(u, wt)
ENDIF
add_customer(u, wt)
ENDFOR
ENDFOR
 add_customer(u, w)
(cuwk - d|u|)に比例する確率: cuwk++
(θ|u|+d|u|tu.)Pπ(u)(w)に比例する確率:
cuwk
new=1, tuw++
add_customer(π(u), w)
 remove_customer(u, w)
cuwkに比例する確率: cuwk--
IF cuwk = 0 THEN
tuw--
remove_customer(π(u), w)
ENDIF
※dとθはカスタマの配置状態からサンプリングで推定できる
Variable Pitman-Yor Language
Models[持橋,2006]
 HPYLM ではn-gramオーダーが常に固定
 Suffix Tree の深さ n-1 に必ずカスタマーが登録される
 n が大きくなった時にノード数が膨大になってしまう
 言語の意味のある固まり
 n は常に一定ではない
 e.g.
“The United States of America”(n=5)
“longer than”(n=2)
 HPYLM を可変長 n-gram 言語モデルへ拡張
 従来の可変長 n-gram は最大 n-gram を作ってからカットオフ
 単語が生成された際の n を隠れ変数としてベイズ推定
 文脈によってオーダーの異なる n-gram 言語モデルを提案
可変長階層 Pitman-Yor 過程
 Suffix Tree を根から辿る時に各ノードiで停止する確率を導入
 共通のベータ事前分布から生成される
 停止確率の分布から隠れ変数 n をサンプリングする
事例 t の n-gram オーダーを除外した全事例の n-gram オーダー
事例 t の配置を除外した全事例の Suffix Tree 上の座席配置
オーダー n のサンプリング
 ベイズの定理から式を変形
 ベータ事後分布の期待値で停止確率と通過確率を代用
ノード i にカスタマが停止した回数
ノード i をカスタマが通過した回数
オーダーをntと固定した時の単語の生起確率(HPYLMと同様)
ノードiで停止する期待値
学習アルゴリズム
FOR i = 1 to N
FOR t = 1 to T
READ {Context:u, word: wt, nt}
IF i > 0 THEN
remove_customer(u, wt, nt)
ENDIF
// オーダーとレストランを決定
nt = sample_order(u, wt)
add_customer(u, wt, nt)
ENDFOR
ENDFOR
 add_customer(u, w, n)
IF n == |u| THEN a++
ELSE b++ ENDIF
cuwk - d|u|)に比例する確率: cuwk++
(θ|u|+d|u|tu.)Pπ(u)(w)に比例する確率:
cuwk
new=1, tuw++
add_customer(π(u), w, n)
 remove_customer(u, w, n)
IF n == |u| THEN a--
ELSE b-- ENDIF
remove_order(u, w, n)
cuwkに比例する確率: cuwk--
IF cuwk = 0 THEN
tuw--
remove_customer(π(u), w, n)
ENDIF
評価実験
1. 実験データ
 毎日新聞コーパス2000年度版(mai2000a.txt)
 訓練データ800K文から500K文(ランダムサンプリング)
 テストデータ10K文サンプリング
 訓練データとは重複なし
2. 評価尺度
 テストセットパープレキシティ
 学習時のメモリ使用量
 ノード数
 学習時間
3. 評価設定
 HPYLM/VPYLM 共に単語 n-gram で評価
テストセットパープレキシティ
 パープキシティ=平均分岐数
(幾何平均)
訓練データで学習した言語モデルを用いてテストセットの生起確率を計算する
確率が高い=本来生成されるべき文章に高い確率が割り振られる
テストセットパープレキシティが小さい
結果 -テストセットパープレキシティ-
n HPYLM VPYLM
3 60.46 51.75
5 52.38 41.03
結果 -Suffix Tree のノード数
n HPYLM VPYLM
3 1,462,246 437,883
5 12,615,924 2,057,413
10 - 5,730,076
結果 -メモリ使用量-
n HPYLM VPYLM
3 3.88GB 3.41GB
5 9.49GB 4.40GB
10 - -
n=10の VPYLM のメモリ使用量は測っていないが,
ノード数が n=5 の HPYLM と VPYLM の間なので,
n = 5 の HPYLM 以下にはなる
結果 -処理時間(100イテレーション)-
n HPYLM VPYLM
3 3h03m53s 3h53m30s
5 10h49m04s 7h12m59s
10 - 17h0850s
1イテレーション毎にPPLの計算を行っているため,
その時間も含まれている
パープレキシティのカーブ
20
40
60
80
100
120
140
160
0 10 20 30 40 50 60 70 80 90 100
"hpylm.n3.mai2000a.rst"
"hpylm.n5.mai2000a.rst"
"vpylm.n3.mai2000a.rst"
"vpylm.n5.mai2000a.rst"
"vpylm.n10.mai2000a.rst"
iteration
perplexity

Pylm public