SlideShare a Scribd company logo
1 of 62
Download to read offline
理理論論はどうでもいいから作ってみた
い⼈人のためのNPYLM
デンソーアイティーラボラトリ
@uchumik
⾃自⼰己紹介
¤  @uchumik
¤  DSIRNLPでの発表は2回⽬目
¤  初めてはDSIRNLP02でのLT
¤  ラグナロクオンラインのAIを機械学習でやろうという話
¤  Lua⾔言語でランキング学習とロジスティック回帰の実装をして,
それをROのAIに組み込んで⾒見見たよという⼀一発ネタ
¤  今回はちゃんと時間をもらって⼈人の役に⽴立立つ話をする...つもり
みんな⼤大好き形態素解析
¤  皆さんMeCabは使っていますか?
¤  ひょっとしたらChaSen,Jumanを使っているかもしれません.
¤  最近だとKyTeaを使っている⼈人もいるでしょう.
¤  Web業界の⼈人なら,ヤフー形態素解析APIの⼈人もいるかもしれない.
通常,形態素解析器を作るには学習コーパスが必要となります.
これは例例えば,単語境界,品詞,読み,等の情報が付与された⽂文書集合を
指します.
皆さんが楽しく利利⽤用している裏裏側には…
マネージャー
Yesマン
アノテーター
そしてやってくる辞書の保守
そんなアノテーターの強い味⽅方
¤  それが教師無し形態素解析!
¤  単語境界の情報の無い⽂文章のみから最適な単語分割を推定してしまう
¤  コーパスを⼿手で作るにしても(少なくとも)最初のたたき台にはなる
分かち書きが必要な(ほぼ全ての)
⾔言語に対応可能
読めなくても(たぶん)⼤大丈夫!
Nested Pitman-Yor Langauge Model
[Daichi Mochihashi, ACL2009]
¤  今⽇日紹介する教師無し形態素解析⼿手法
¤  2009年年に発表された個⼈人的にだいぶ衝撃を受けた論論⽂文
¤  理理解するためにはベイズ⾔言語モデル(HPYLM,VPYLM)等の知
識識がいるうえ,実装難度度が⾼高い...と個⼈人的に思っている
¤  作りたい,でも良良く分からない,Tehの論論⽂文は無理理・読みたくな
いという⼈人もきっといるはず
¤  そんな⼈人たちのための資料料がこれです.
¤  アノテーターは前振りなのでもう忘れてくれてかまいません
¤  が,エンジニアが楽しく実装すると,未知の分野の形態素解析を
作る時にアノテーターの負担も軽くできるかもしれない.
今⽇日のお話
¤  NPYLM
¤  ngramモデル
¤  単語分割のサンプリング
¤  分かち書きの作り⽅方
¤  サンプリング
¤  ラティス構築
¤  前向き確率率率の計算
¤  NPYLMの学習の流流れ
¤  スムージング
¤  CRP
¤  PYP
¤  階層PYP
¤  HPYLM
¤  VPYLM
NPYLMってそもそも何してるの?
¤  Nested Pitman-Yor Language Model
¤  つまるところ⾔言語モデルを学習する⼿手法
¤  単語ngramと⽂文字ngramをテキストから同時に学習する
ngram ⾔言語モデル
¤  ⽂文 s = {a b c d e},単語集合 {a, b, c, d, e}
¤  P(s) を以下で表す
¤  ngram モデルは,単語の確率率率は直前のn単語にのみ依存する
と近似したもの
¤  e.g. n=2(bigram model)
P(s) = P(a)P(b|a)P(c|a, b)P(d|a, b, c)P(e|a, b, c, d)
P(s) =
lY
i
P(wi|w1, . . . , wi 1)
⇡
lY
i
P(wi|wi 1)
単語のngramモデルを
  単語ngramモデル
⽂文字の場合を
  ⽂文字ngramモデル
と⾔言う
条件付き確率率率
¤  尤も単純には以下の式でP(w_i|w_{i-1})は与えられる
¤  訓練データのbigramに最⼤大の確率率率を与える(最尤推定)
¤  テキストのみから単語ngram確率率率を推定しようとすると,単
語分割がされていないのでできない
¤  そこで,今のパラメータを使って単語分割を獲得して,単語
ngram確率率率も推定してしまおうというのがNPYLMの特徴
¤  単語分割のための⼿手法ではなく⾔言語モデルの学習⼿手法であり,単
語分割は単語ngramの学習のための過程
P(wi|wi 1) =
c(wi 1wi)
P
wi
c(wi 1wi)
分かち書きの作り⽅方
¤  単語の最⼤大⻑⾧長を2⽂文字とした時に可能な分かち書きの表現
⽂文字列列:1杯で3度度の⾹香り
B
1
1杯
杯
杯で
で
で3
3
3度度
度度
度度の
の
の⾹香
⾹香
⾹香り
り
E
⾹香り
り
E
α[り]P(E|り)
α[⾹香り]P(E|⾹香り)
に従って1つ前の単語をサンプルする
これをBに到達するまで繰り返す
α[・]:前向き確率率率(その単語に到達するまでの経路路の)確率率率の総和
サンプルする?
⾹香り
り
E に従って1つ前の単語をサンプルする
仮に,
α[り]P(E|り)=0.2
α[⾹香り]P(E|⾹香り)=0.8
とする
↑1.0=0.2+0.8
0 1
サンプリングの⼿手続き
1.  0〜~1.0の間で乱数rを⽣生成
2.  Σt[i]がrを超えた時のiに対応する単語を選ぶ
確率率率を⾜足し合わせたテーブルtを作る
α[り]P(E|り)
α[⾹香り]P(E|⾹香り)
ラティスを組む
¤  プログラムを書く時には,次のように⾏行行列列で表現する
0 1 2 3 4 5 6 7
1
2
8 9 単語候補の終了了位置
⽂文字列列:1杯で3度度の⾹香り(8⽂文字)
単語候補の⻑⾧長さ
“⾹香り”は⻑⾧長さが2なので,
⾃自分の終了了位置-⻑⾧長さ(8-2)の位置で
終了了する各ノードと接続可能
前向き確率率率の計算
¤  各ノード毎にαを割り当てる
0 1 2 3 4 5 6 7
1
2
8 9 単語候補の終了了位置
⽂文字列列:1杯で3度度の⾹香り(8⽂文字)
単語候補の⻑⾧長さ
α[t][k]= P( t−k+1
t
c | t−k−j+1
t−k
c )α[t − k][ j]
j
∑ 終了了位置t, ⻑⾧長さk の単語への到達確率率率
α[8][2]=P(⾹香り|度度の)α[6][2]+P(⾹香り|の)α[6][1]
⼩小ネタ
¤  紹介した前向き確率率率の計算をForward-filteringと呼ぶ
¤  ⽂文末Eから後ろ向きに単語を⽂文頭Bまでサンプリングする処理理
を,Backward-samplingと呼ぶ
NPYLMのパラメータ学習の流流れ
1.  初期化
¤  コーパスの各⽂文を1単語と⾒見見なして単語ngramモデル,⽂文字ngramモデル
を更更新
2.  コーパスから1⽂文を取り出す
3.  取り出した⽂文に含まれる単語ngramをモデルのパラメータから削除
¤  確率率率的に⽂文字ngramも削除される
4.  今のパラメータを使って⽂文を分かち書きする
5.  分かち書き結果を使ってNPYLMのパラメータを更更新する
作れそうな気がしてきたでしょう?
意外と簡単じゃんと思えてきたでしょう?
P(wi|wi 1)
の推定はどうやるのか.
後は,具体的に
だけ分かれば作れそう
この辺から⾟辛くなります
HPYLM, VPYLM の話が出てきます
NPYLMの構成
¤  2つの⾔言語モデルのNestedになっている
¤  単語ngram → HPYLM: Hierarchical Pitman-Yor Language Model
¤  ⽂文字ngram → VPYLM: Variable-order Pitman-Yor Language Model
¤  スムージングについて知る必要がある
¤  何故Nestedが必要になっているのか?
¤  何故階層Pitman-Yor過程を事前分布に使うのか?
スムージング
¤  訓練データに出てこなかったngramの確率率率は,最尤推定では
0になってしまう(ゼロ頻度度問題)
¤  訓練データに含まれない⽂文が与えられた時に,その⽂文の確率率率
がゼロになってしまう
P(私 は 本 を 読む)=0P(は | 私) =
c(私, は)
w c(私, w)
=
0
1
P(本 | は)P(を | 本)P(読む | を) の確率率率が⾼高くても0になる
上記の⽂文に0では無い適切切な確率率率を与えたい! そこでスムージング
適切切な確率率率とは何か
¤  単語の出現頻度度の分布はどのような形をしているのか?
¤  分布の形が分かっているのなら,それに従うように確率率率を与えれ
ば良良い.
単語の頻度度分布
¤  べき乗則に従う
¤  次数が上がるとより急峻な形になる
ngramの分布
(両対数グラフ)
尤度度
単語ID
bigram:⽂文脈”武⽥田”が与えられた時の分布
trigram:”武⽥田  軍”が⽂文脈
4-gram:”武⽥田  軍  別働隊” が⽂文脈
単語の出現確率率率はべき乗則に従い,
⽂文脈が⻑⾧長くなると後に続く単語の
バリエーションは少なくなる.
現実に沿うようにスムージングをしたい.
Chinese Restaurant Process
3
+ c
2
+ c
1
+ c + c
新しいテーブルに
客が着席する確率率率
P(w| ) =
cw
+ c
+
+ c
G0(w)
CRP
⾔言語モデルのスムージングに利利⽤用
未知の単語にも確率率率を与えられる
基底測度度から単語が⽣生成される確率率率
¤  訓練データに出てこない単語にも確率率率を与えたい
¤  とりあえずCRPとはこういうもんだと納得すると幸せになれる
Pitman-Yor Process
¤  ディスカウントパラメータdが追加されたCRP(Chinese
Restaurant Process)
¤  dを0にすればCRPと⼀一致
¤  べき乗則に従う単語の事前分布を作れる
1 d
+ c
2 d
+ c
3 d
+ c
+ 3d
+ c
3d=
既存のテーブル数
×
ディスカウント数
新しいテーブルに
客が着く確率率率
階層Pitman-Yor Process
¤ PYPを階層化するってどういうことなのか?
階層化の考え⽅方
¤  ngramを扱うために階層的な⽣生成過程を仮定
G0 =
1
V
最初は⼀一様分布
unigram は G_0から
⽣生成される
bigram は unigram から
⽣生成される
trigram は  bigram から
⽣生成される
G1
G2
P(家 |context) =
c家 |context
d
+ c.
+
+ 3d
+ c.
G2(家)
階層化PYPによるスムージング
¤  単語ngramの確率率率
G1
G2
G0 =
1
V
1 d
+ c
2 d
+ c
3 d
+ c
+ 3d
+ c
新しいテーブルに客(頻度度)が着席する確率率率
=基底測度(親の文脈)から単語が⽣生成される確率率率
⽂文脈におけるテーブルの数=親の⽂文脈から単語が⽣生成された回数(この例例では3個)
家という料料理理を出しているテーブルは1個=c(家)のディスカウントは1*d
階層PYPによるスムージング
何が変わったのか
¤  新しいテーブルに客が着く確率率率
→ 親の⽂文脈からngramが⽣生成される確率率率という考え⽅方になっている
親の⽂文脈=基底測度度
G_0に到達するまで再帰的にスムージングされる
P(w|context) =
cw dtw
✓ + c.
+
✓ + dt.
✓ + c.
P(w|⇡(context)) πは1つ短くした⽂文脈
HPYLMにおける予測確率率率
何故Nested?
¤  G_0 = 1/V とすると,データに出てこない単語は全て等確率率率
¤  ⽂文字ngram⾔言語モデルがあれば単語らしさが計算可能
¤  → 単語 HPYLM の G_0 に⽂文字 HPYLM の予測確率率率を使おう
¤  初めて観測した単語にも適切切な確率率率を与えられる
ここから学習の話になります
HPYLMで予測するためには
¤  各⽂文脈毎にテーブルと客の配置が決まっている必要がある
¤  → HPYLMの学習(ハイパーパラメータはひとまず置いとく)
¤  ⽂文脈⽊木を使って⽂文脈毎のテーブルと客の配置を管理理する
彼⼥女女 家
Context Tree
Context Tree
ε
彼
が の ⽝犬
の
レストラン
⽝犬
服
家
テーブル
料料理理
(単語)
客(頻度度)
私 友達
⽊木の各ノードがレストラン
観測されたngramに
対応するレストランに
客を追加する
“彼⼥女女  の  家”という
trigram は3回観測
されていることになる
ちょっと待て,親のお店に客が来ない
¤  n=3としてHPYLMの⽂文脈⽊木に観測したtrigramを追加していくと親
のレストランは常に閑古⿃鳥になる
¤  階層的なスムージングができないじゃんと思うかもしれない
確率率率的にスムージングのための客を親に再帰的に送る
家
レストラン
⽝犬
服
家
テーブル
料料理理
(単語)
客(頻度度)
“彼⼥女女  の”に対応するレストラン
c家 k
d : に比例する確率で k 番目の家のテーブルに着席
( + dt.)P (u)(家) に比例する確率で新しいテーブルに着席
“彼女 の 家” というtrigramを観測した時
→ 新しいテーブルが⽣生成された時に,
親レストランにもコピー客を送る
HPYLMの学習
¤  ⽂文脈⽊木の構築と,各レストランの適切切な客の配置を決定する
¤  学習アルゴリズム
¤  Text = {w_1, w_2, …, W_T}
¤  for i = 1 to Convergence
¤  for t = 1 to T
¤  read {context:u_t, word:w_t} ※ u_t = w_{i-1},…,w_{i-n+1}
¤  if i > 0 then
¤  remove_customer(u_t,w_t)
¤  add_customer(u_t,w_t)
¤  add_customer: ⽂文脈u_tに対応するレストランにw_tを追加
¤  remove_customer: ⽂文脈u_tに対応するレストランからw_tを削除
⽂文脈⽊木のデータ構造
⼊入⼒力力⽂文: 単語はあらかじめIDにしておく
※しておかないと遅くて死ぬ
w_tcontext:u_t
typedef vector<int> tables;
class node
{
map<int,node*> restaurants; // ⽂文脈⽊木
map<int,tables> arrangement; // 客の配置
int T; // テーブル数
int C; // 客の数
node *p; // 親
};
root
5: 0
単語5をサーブしている
テーブルのリスト
※これまでの説明と違う形になっているが,
単語ID毎でテーブルの管理理を分けないと遅くて死ぬ
AddCustomer
¤  addCust(context u, word w)
¤  1つ前の単語3に対応する⽂文脈をrootから探す
¤  無いので単語3に対応するノードを作る
¤  単語3の前に単語1が来る⽂文脈を探す
¤  無いので単語3の下に単語1のノードを作る
root
⼊入⼒力力⽂文:
w_tcontext:u_t
Context Tree
root root
AddCustomer
¤  addCust(context u, word w)
¤  wをサーブしてるテーブルリストを得る(無ければ作る)
¤  単語w,テーブルのインデックスをk,テーブルkに着いている客をc_{wk}として,
を⾏行行う
                                                                      
root
(cwk  -‐‑‒  d|u|)に⽐比例例する確率率率:  cwk++
(θ|u|+d|u|t.)Pπ(u)(w)に⽐比例例する確率率率:  
cwk
new=1,  tw++,add_̲customer(π(u),  w)
root
5: 0
root
5: 0
コピー客
AddCustomer
¤  addCust(context u, word w)
  uに対応するレストランを探す
  (無ければ作る)
  レストランのwをサーブしてるテーブルリストを得る
  (無ければ作る)
  単語w,テーブルのインデックスをk,テーブルkに着いている客をc_{wk}とする
root
5: 0
⼊入⼒力力⽂文:
w_tcontext:u_t
(cwk  -‐‑‒  d|u|)に⽐比例例する確率率率:  cwk++
(θ|u|+d|u|t.)Pπ(u)(w)に⽐比例例する確率率率:  
cwk
new=1,  tw++,add_̲customer(π(u),  w)
RemoveCustomer
⼊入⼒力力⽂文:
w_tcontext:u_t
root
5: 0
¤  remCust(context u, word w)
¤  ⽂文脈uのレストランを探す
¤  wをサーブするテーブルkから,cwkに
⽐比例例する確率率率で客を減らす
¤  テーブルから客がいなくなった場合
¤  テーブルを無くし,親からコピー客を削除
1 0: 2
1: 1
客の数に
⽐比例例する
確率率率で客
を減らす
root
5: 0 1
root
5: 0
remCust(π(u),w)
これでNPYLMは作れる!
¤  基底測度度G_0に⽂文字ngramのHPYLMを使えば全ては終わり!
…と思うじゃん?
⽂文字ngram⾔言語モデル
¤  単語ngramはせいぜい2〜~3gramで良良い
¤  NPYLMでは3つより前の単語を⾒見見ると計算量量的に厳しい
¤  ⽂文字ngramはカタカナの単語等だと⼤大きくnを取る必要がある
¤  意味のある⽂文字の並びをなるべくカバーしたい
¤  極端な話,あり得る単語の⻑⾧長さ全てをカバーする程度度のnにしたい
→ 無限  ngram
¤  HPYLMだと,必ず⽂文脈⽊木の末端に客が⼊入るため,nを⼤大きくすると
メモリを使い尽くす
Variable-order PYLM
¤  ngram の n もまた確率率率変数にしてしまって,データから n も
サンプリングしてしまう
¤  データに合わせて最適な  ngram が作れる
¤  → 可変⻑⾧長  ngram モデル
⽂文脈を辿る際に停⽌止確率率率を導⼊入
q_i: 停⽌止確率率率
1-q_i: 通過確率率率
客はどのレストランに⾏行行くか
root root root
q_0
1-q_0
q_1*(1-q_0)
root root
q_2(1-q_0)(1-q_1)
rootで客が停⽌止(追加)
rootを通過
(⽂文脈ができる)
3で客が停⽌止(追加)
客が l 次に
到達(追加)
P(n = l|context) = ql
l 1
i=0
(1 qi)
深さ l に客が到達
する時の確率率率
停⽌止確率率率
¤  共通のベータ事前分布から⽣生成されていると仮定
qi ⇠ Be(↵, )
Be( , ) =
( + )
( ( ) + ( ))q 1
E[q] =
( + )
(期待値)
⽂文脈の各ノードに通過/停⽌止回数を⼊入れる
typedef vector<int> tables;
class node
{
map<int,node*> restaurants; // ⽂文脈⽊木
map<int,tables> arrangement; // 客の配置
int T; // テーブル数
int C; // 客の数
node *p; // 親
int a; //停⽌止回数
int b; // 通過回数
}; ai :
bi :
ノード  i にカスタマが停⽌止した回数
ノード  i をカスタマが通過した回数
E[qi] =
ai + ↵
ai + bi + ↵ +
ノードiで停⽌止する期待値
ノード毎に停⽌止回数と通過回数を
⼊入れる事で,ノード毎に停⽌止確率率率
を計算できる
オーダーnのサンプリング
停⽌止する⽂文脈の深さ 確率率率
0 0次の⽂文脈|u|=0でwが⽣生成される確率率率*0次で停⽌止する確率率率
1 1次の⽂文脈|u|=1でwが⽣生成される確率率率*1次で停⽌止する確率率率
2 2次の⽂文脈|u|=2でwが⽣生成される確率率率*2次で停⽌止する確率率率
単語wと⽂文脈uが観測された時,その単語は⽂文脈のどの深さから⽣生成されたんだろう?
⽂文脈の深さを固定
した時の予測確率率率
P(n = l|¬
) =
al +
al + bl + +
l 1
i=0
bi +
ai + bi + +
¬
: wt, ntを除去した VPYLM のパラメータ
深さ l の⽂文脈に到達す
る事前確率率率
P(w|u, ¬
, n) =
¬
cw dn
¬
tw
n + ¬c·
+
n + dn
¬
t·
n + ¬c·
P(w| (u))
VPYLMの学習
¤  ⽂文脈⽊木の構築と,各レストランの適切切な客の配置を決定する
¤  学習アルゴリズム
¤  Text = {w_1, w_2, …, W_T, n_1, n_2, …, n_T}
¤  for i = 1 to Convergence
¤  for t = 1 to T
¤  read {context:u_t, word:w_t, order:n_t}
¤  if i > 0 then
¤  remove_customer(u_t,w_t,n_t)
¤  n_t = sample_order(u_t,w_t)
¤  add_customer(u_t,w_t,n_t)
sample_order(u_t, w_t)
¤  オーダーのサンプリングテーブルを以下の式で作る
¬ :remove_cusomerを呼んだ後のVPYLMのパラメータと思っておけば良良い
P(n = l|¬
) =
al +
al + bl + +
l 1
i=0
bi +
ai + bi + +
0 1 2
z = Σ t[i]
サンプリングの⼿手続き
1.  0〜~zの間で乱数rを⽣生成
2.  Σt[i]がrを超えた時のiに対応する次数を選ぶ
P(n|w, ¬
) P(w|u, ¬
) P(n = l|¬
)
P(w|u, ¬
, n) =
¬
cw dn
¬
tw
n + ¬c·
+
n + dn
¬
t·
n + ¬c·
P(w| (u))
AddCustomer
¤  addCust(context u, word w, order n_t)
¤  深さn_tに到達するまで,以下を⾏行行う
¤  1つ前の単語に対応する⽂文脈をrootから探す
¤  無い場合,1つ前の単語に対応するノードを作る
⼊入⼒力力⽂文:
w_tcontext:u_t
root
Context Tree
root
n_t=1 の例例
AddCustomer
¤  addCust(context u, word w, order n_t)
¤  深さn_tに到達するまで,以下を⾏行行う
¤  1つ前の単語に対応するノードの通過回数bをインクリメント
¤  深さn_tのノードの停⽌止回数aをインクリメント
⼊入⼒力力⽂文:
w_tcontext:u_t
root
Context Tree
root
n_t=1 の例例
b_0++
a_1++
AddCustomer
¤  addCust(context u, word w, order n_t)
¤  wをサーブしてるテーブルリストを得る(無ければ作る)
¤  単語w,テーブルのインデックスをk,テーブルkに着いている客をc_{wk}として,
を⾏行行う
                                                                      root
(cwk  -‐‑‒  d|u|)に⽐比例例する確率率率:  cwk++
(θ|u|+d|u|t.)Pπ(u)(w)に⽐比例例する確率率率:  
cwk
new=1,  tw++,add_̲customer(π(u),  w,  n_̲t-‐‑‒1)
root
5: 0
root
5: 0
コピー客
RemoveCustomer
⼊入⼒力力⽂文:
w_tcontext:u_t
root
5: 0
¤  remCust(context u, word w, order n_t)
¤  ⽂文脈u,深さn_tのレストランを探す
¤  通過した⽂文脈の通過回数bをデクリメント
¤  深さn_tの⽂文脈の停⽌止回数aをデクリメント
¤  wをサーブするテーブルkから,cwkに
⽐比例例する確率率率で客を減らす
¤  テーブルから客がいなくなった場合
¤  テーブルを無くし,親からコピー客を削除
1
0: 2
1: 1
客の数に
⽐比例例する
確率率率で客
を減らす
root root
remCust(π(u),w, n_t-1)
5: 0 1 5: 0
予測確率率率の計算
¤  ⽂文脈uと単語wを受け取る
¤  オーダーnの積分消去
1.  n について確率率率  を計算する
2.  オーダーを n とした時の  ngram 確率率率を計算する
3.  1,2を掛け合わせた物を全てのnについて⾜足し合わせる
P(n|context) =
al +
al + bn + +
l 1
i=0
bi +
ai + bi + +
P(w|context, n) =
cw dntw
n + c·
n + dnt·
n + c·
P(w| (context), n 1)
×
特徴
¤  データから⽂文脈に応じた適切切なオーダーが選ばれる
¤  メモリ効率率率が⾮非常に良良い
¤  最初に⾼高次ngramモデルを作ってからカットオフするよりも⾼高精度度
⼩小ネタ2
¤  1単語/⽂文字についての情報をパラメータから除去し,再推定した結果
で⾔言語モデルのパラメータを更更新していくHPYLM/VPYLMの学習⽅方法
→ GibbsSampling
¤  パラメータは各単語毎にサンプルされた⽂文脈⽊木の中での客の配置
¤  ある事例例の影響を除いた他のサンプル全てを使った条件付き確率率率
から,再度度⽂文脈⽊木の中での配置をサンプルしている
さて,これで武器は揃った
¤  ⻑⾧長い道のりだったけど,NPYLMはこれでやっと作れます
¤  ※ハイパーパラメータ d, θ の推定や,ポアソン分布を使った基底測度度の
補正は今回は省省略略しました.
¤  NPYLMのポイント
¤  単語HPYLMの unigram の基底測度度として,⽂文字VPYLMを⽤用いる
¤  今の⾔言語モデルを⽤用いて⽂文の単語分割を⾏行行い,単語,⽂文字ngram を更更新
(再掲)NPYLMのパラメータ学習の流流れ
1.  初期化
¤  コーパスの各⽂文を1単語と⾒見見なして単語ngramモデル,⽂文字ngramモデルを更更新
(addCustomer)
2.  コーパスから1⽂文を取り出す
3.  取り出した⽂文に含まれる単語ngramをモデルのパラメータから削除
¤  確率率率的に⽂文字ngramも削除される
(removeCustomer)
4.  今のパラメータを使って⽂文を分かち書きする
(forward-filtering/backward-sampling)
5.  分かち書き結果を使ってNPYLMのパラメータを更更新する(addCustomer)
⼩小ネタ3
¤  HPYLM/VPYLMの学習と違って1単語毎でパラメータを更更新せず,
まとめて複数単語をサンプリングしている
¤  サンプリング時にはパラメータΘを固定してまとめてサンプリング
¤  → ⽂文をサンプルする間は確率率率分布は変わらない
¤  → Blocked Gibbs Sampling
今⽇日の話は以上です
¤  ⾯面⽩白そうと思ったら皆さん作ってみてください.
¤  ちなみにNPYLMは特許が取られているため,公開される場合
には注意が必要です.

More Related Content

What's hot

TensorFlowで逆強化学習
TensorFlowで逆強化学習TensorFlowで逆強化学習
TensorFlowで逆強化学習Mitsuhisa Ohta
 
強化学習と逆強化学習を組み合わせた模倣学習
強化学習と逆強化学習を組み合わせた模倣学習強化学習と逆強化学習を組み合わせた模倣学習
強化学習と逆強化学習を組み合わせた模倣学習Eiji Uchibe
 
[DL輪読会]近年のオフライン強化学習のまとめ —Offline Reinforcement Learning: Tutorial, Review, an...
[DL輪読会]近年のオフライン強化学習のまとめ —Offline Reinforcement Learning: Tutorial, Review, an...[DL輪読会]近年のオフライン強化学習のまとめ —Offline Reinforcement Learning: Tutorial, Review, an...
[DL輪読会]近年のオフライン強化学習のまとめ —Offline Reinforcement Learning: Tutorial, Review, an...Deep Learning JP
 
ゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement Learning
ゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement Learningゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement Learning
ゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement LearningPreferred Networks
 
全力解説!Transformer
全力解説!Transformer全力解説!Transformer
全力解説!TransformerArithmer Inc.
 
最適輸送の解き方
最適輸送の解き方最適輸送の解き方
最適輸送の解き方joisino
 
多様な強化学習の概念と課題認識
多様な強化学習の概念と課題認識多様な強化学習の概念と課題認識
多様な強化学習の概念と課題認識佑 甲野
 
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)RyuichiKanoh
 
最適化超入門
最適化超入門最適化超入門
最適化超入門Takami Sato
 
Decision Transformer: Reinforcement Learning via Sequence Modeling
Decision Transformer: Reinforcement Learning via Sequence ModelingDecision Transformer: Reinforcement Learning via Sequence Modeling
Decision Transformer: Reinforcement Learning via Sequence ModelingYasunori Ozaki
 
最適輸送入門
最適輸送入門最適輸送入門
最適輸送入門joisino
 
【DL輪読会】時系列予測 Transfomers の精度向上手法
【DL輪読会】時系列予測 Transfomers の精度向上手法【DL輪読会】時系列予測 Transfomers の精度向上手法
【DL輪読会】時系列予測 Transfomers の精度向上手法Deep Learning JP
 
AbemaTVにおける推薦システム
AbemaTVにおける推薦システムAbemaTVにおける推薦システム
AbemaTVにおける推薦システムcyberagent
 
ノンパラベイズ入門の入門
ノンパラベイズ入門の入門ノンパラベイズ入門の入門
ノンパラベイズ入門の入門Shuyo Nakatani
 
最適輸送の計算アルゴリズムの研究動向
最適輸送の計算アルゴリズムの研究動向最適輸送の計算アルゴリズムの研究動向
最適輸送の計算アルゴリズムの研究動向ohken
 
【DL輪読会】言語以外でのTransformerのまとめ (ViT, Perceiver, Frozen Pretrained Transformer etc)
【DL輪読会】言語以外でのTransformerのまとめ (ViT, Perceiver, Frozen Pretrained Transformer etc)【DL輪読会】言語以外でのTransformerのまとめ (ViT, Perceiver, Frozen Pretrained Transformer etc)
【DL輪読会】言語以外でのTransformerのまとめ (ViT, Perceiver, Frozen Pretrained Transformer etc)Deep Learning JP
 
最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2
最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2
最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2Preferred Networks
 
【論文紹介】How Powerful are Graph Neural Networks?
【論文紹介】How Powerful are Graph Neural Networks?【論文紹介】How Powerful are Graph Neural Networks?
【論文紹介】How Powerful are Graph Neural Networks?Masanao Ochi
 

What's hot (20)

TensorFlowで逆強化学習
TensorFlowで逆強化学習TensorFlowで逆強化学習
TensorFlowで逆強化学習
 
強化学習6章
強化学習6章強化学習6章
強化学習6章
 
強化学習と逆強化学習を組み合わせた模倣学習
強化学習と逆強化学習を組み合わせた模倣学習強化学習と逆強化学習を組み合わせた模倣学習
強化学習と逆強化学習を組み合わせた模倣学習
 
[DL輪読会]近年のオフライン強化学習のまとめ —Offline Reinforcement Learning: Tutorial, Review, an...
[DL輪読会]近年のオフライン強化学習のまとめ —Offline Reinforcement Learning: Tutorial, Review, an...[DL輪読会]近年のオフライン強化学習のまとめ —Offline Reinforcement Learning: Tutorial, Review, an...
[DL輪読会]近年のオフライン強化学習のまとめ —Offline Reinforcement Learning: Tutorial, Review, an...
 
ゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement Learning
ゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement Learningゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement Learning
ゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement Learning
 
全力解説!Transformer
全力解説!Transformer全力解説!Transformer
全力解説!Transformer
 
最適輸送の解き方
最適輸送の解き方最適輸送の解き方
最適輸送の解き方
 
多様な強化学習の概念と課題認識
多様な強化学習の概念と課題認識多様な強化学習の概念と課題認識
多様な強化学習の概念と課題認識
 
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
 
PRML11章
PRML11章PRML11章
PRML11章
 
最適化超入門
最適化超入門最適化超入門
最適化超入門
 
Decision Transformer: Reinforcement Learning via Sequence Modeling
Decision Transformer: Reinforcement Learning via Sequence ModelingDecision Transformer: Reinforcement Learning via Sequence Modeling
Decision Transformer: Reinforcement Learning via Sequence Modeling
 
最適輸送入門
最適輸送入門最適輸送入門
最適輸送入門
 
【DL輪読会】時系列予測 Transfomers の精度向上手法
【DL輪読会】時系列予測 Transfomers の精度向上手法【DL輪読会】時系列予測 Transfomers の精度向上手法
【DL輪読会】時系列予測 Transfomers の精度向上手法
 
AbemaTVにおける推薦システム
AbemaTVにおける推薦システムAbemaTVにおける推薦システム
AbemaTVにおける推薦システム
 
ノンパラベイズ入門の入門
ノンパラベイズ入門の入門ノンパラベイズ入門の入門
ノンパラベイズ入門の入門
 
最適輸送の計算アルゴリズムの研究動向
最適輸送の計算アルゴリズムの研究動向最適輸送の計算アルゴリズムの研究動向
最適輸送の計算アルゴリズムの研究動向
 
【DL輪読会】言語以外でのTransformerのまとめ (ViT, Perceiver, Frozen Pretrained Transformer etc)
【DL輪読会】言語以外でのTransformerのまとめ (ViT, Perceiver, Frozen Pretrained Transformer etc)【DL輪読会】言語以外でのTransformerのまとめ (ViT, Perceiver, Frozen Pretrained Transformer etc)
【DL輪読会】言語以外でのTransformerのまとめ (ViT, Perceiver, Frozen Pretrained Transformer etc)
 
最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2
最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2
最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2
 
【論文紹介】How Powerful are Graph Neural Networks?
【論文紹介】How Powerful are Graph Neural Networks?【論文紹介】How Powerful are Graph Neural Networks?
【論文紹介】How Powerful are Graph Neural Networks?
 

Viewers also liked

Deep Learning Chapter12
Deep Learning Chapter12Deep Learning Chapter12
Deep Learning Chapter12Kei Uchiumi
 
Nl220 Pitman-Yor Hidden Semi Markov Model
Nl220 Pitman-Yor Hidden Semi Markov ModelNl220 Pitman-Yor Hidden Semi Markov Model
Nl220 Pitman-Yor Hidden Semi Markov ModelKei Uchiumi
 
Go-ICP: グローバル最適(Globally optimal) なICPの解説
Go-ICP: グローバル最適(Globally optimal) なICPの解説Go-ICP: グローバル最適(Globally optimal) なICPの解説
Go-ICP: グローバル最適(Globally optimal) なICPの解説Yusuke Sekikawa
 
FLAT CAM: Replacing Lenses with Masks and Computationの解説
FLAT CAM: Replacing Lenses with Masks and Computationの解説FLAT CAM: Replacing Lenses with Masks and Computationの解説
FLAT CAM: Replacing Lenses with Masks and Computationの解説Yusuke Sekikawa
 
Halide, Darkroom - 並列化のためのソフトウェア・研究
Halide, Darkroom - 並列化のためのソフトウェア・研究Halide, Darkroom - 並列化のためのソフトウェア・研究
Halide, Darkroom - 並列化のためのソフトウェア・研究Yuichi Yoshida
 
ディープラーニングの車載応用に向けて
ディープラーニングの車載応用に向けてディープラーニングの車載応用に向けて
ディープラーニングの車載応用に向けてIkuro Sato
 
Vanishing Component Analysisの試作(補足)
Vanishing Component Analysisの試作(補足)Vanishing Component Analysisの試作(補足)
Vanishing Component Analysisの試作(補足)Hiroshi Tsukahara
 
Notes on the low rank matrix approximation of kernel
Notes on the low rank matrix approximation of kernelNotes on the low rank matrix approximation of kernel
Notes on the low rank matrix approximation of kernelHiroshi Tsukahara
 
On the eigenstructure of dft matrices(in japanese only)
On the eigenstructure of dft matrices(in japanese only)On the eigenstructure of dft matrices(in japanese only)
On the eigenstructure of dft matrices(in japanese only)Koichiro Suzuki
 
Vanishing Component Analysisの試作と簡単な実験
Vanishing Component Analysisの試作と簡単な実験Vanishing Component Analysisの試作と簡単な実験
Vanishing Component Analysisの試作と簡単な実験Hiroshi Tsukahara
 
Swift 2 (& lldb) シンポジウム
Swift 2 (& lldb) シンポジウムSwift 2 (& lldb) シンポジウム
Swift 2 (& lldb) シンポジウムYuichi Yoshida
 
Sparse Isotropic Hashing
Sparse Isotropic HashingSparse Isotropic Hashing
Sparse Isotropic HashingIkuro Sato
 

Viewers also liked (20)

Deep Learning Chapter12
Deep Learning Chapter12Deep Learning Chapter12
Deep Learning Chapter12
 
Nl220 Pitman-Yor Hidden Semi Markov Model
Nl220 Pitman-Yor Hidden Semi Markov ModelNl220 Pitman-Yor Hidden Semi Markov Model
Nl220 Pitman-Yor Hidden Semi Markov Model
 
Go-ICP: グローバル最適(Globally optimal) なICPの解説
Go-ICP: グローバル最適(Globally optimal) なICPの解説Go-ICP: グローバル最適(Globally optimal) なICPの解説
Go-ICP: グローバル最適(Globally optimal) なICPの解説
 
FLAT CAM: Replacing Lenses with Masks and Computationの解説
FLAT CAM: Replacing Lenses with Masks and Computationの解説FLAT CAM: Replacing Lenses with Masks and Computationの解説
FLAT CAM: Replacing Lenses with Masks and Computationの解説
 
RNNLM
RNNLMRNNLM
RNNLM
 
Holonomic Gradient Descent
Holonomic Gradient DescentHolonomic Gradient Descent
Holonomic Gradient Descent
 
Dsirnlp#7
Dsirnlp#7Dsirnlp#7
Dsirnlp#7
 
Pylm public
Pylm publicPylm public
Pylm public
 
Halide, Darkroom - 並列化のためのソフトウェア・研究
Halide, Darkroom - 並列化のためのソフトウェア・研究Halide, Darkroom - 並列化のためのソフトウェア・研究
Halide, Darkroom - 並列化のためのソフトウェア・研究
 
ディープラーニングの車載応用に向けて
ディープラーニングの車載応用に向けてディープラーニングの車載応用に向けて
ディープラーニングの車載応用に向けて
 
Information extraction 1
Information extraction 1Information extraction 1
Information extraction 1
 
Vanishing Component Analysisの試作(補足)
Vanishing Component Analysisの試作(補足)Vanishing Component Analysisの試作(補足)
Vanishing Component Analysisの試作(補足)
 
Notes on the low rank matrix approximation of kernel
Notes on the low rank matrix approximation of kernelNotes on the low rank matrix approximation of kernel
Notes on the low rank matrix approximation of kernel
 
On the eigenstructure of dft matrices(in japanese only)
On the eigenstructure of dft matrices(in japanese only)On the eigenstructure of dft matrices(in japanese only)
On the eigenstructure of dft matrices(in japanese only)
 
Gitのすすめ
GitのすすめGitのすすめ
Gitのすすめ
 
マーク付き点過程
マーク付き点過程マーク付き点過程
マーク付き点過程
 
Vanishing Component Analysisの試作と簡単な実験
Vanishing Component Analysisの試作と簡単な実験Vanishing Component Analysisの試作と簡単な実験
Vanishing Component Analysisの試作と簡単な実験
 
Swift 2 (& lldb) シンポジウム
Swift 2 (& lldb) シンポジウムSwift 2 (& lldb) シンポジウム
Swift 2 (& lldb) シンポジウム
 
Sparse Isotropic Hashing
Sparse Isotropic HashingSparse Isotropic Hashing
Sparse Isotropic Hashing
 
Gamglm
GamglmGamglm
Gamglm
 

Similar to DSIRNLP06 Nested Pitman-Yor Language Model

Introduction to NumPy & SciPy
Introduction to NumPy & SciPyIntroduction to NumPy & SciPy
Introduction to NumPy & SciPyShiqiao Du
 
Tokyo.R #19 発表資料 「Rで色々やってみました」
Tokyo.R #19 発表資料 「Rで色々やってみました」Tokyo.R #19 発表資料 「Rで色々やってみました」
Tokyo.R #19 発表資料 「Rで色々やってみました」Masayuki Isobe
 
自然言語処理はじめました - Ngramを数え上げまくる
自然言語処理はじめました - Ngramを数え上げまくる自然言語処理はじめました - Ngramを数え上げまくる
自然言語処理はじめました - Ngramを数え上げまくるphyllo
 
Deep learning実装の基礎と実践
Deep learning実装の基礎と実践Deep learning実装の基礎と実践
Deep learning実装の基礎と実践Seiya Tokui
 
Jubatusのリアルタイム分散レコメンデーション@TokyoWebmining#17
Jubatusのリアルタイム分散レコメンデーション@TokyoWebmining#17Jubatusのリアルタイム分散レコメンデーション@TokyoWebmining#17
Jubatusのリアルタイム分散レコメンデーション@TokyoWebmining#17Yuya Unno
 
Jubatusのリアルタイム分散レコメンデーション@TokyoNLP#9
Jubatusのリアルタイム分散レコメンデーション@TokyoNLP#9Jubatusのリアルタイム分散レコメンデーション@TokyoNLP#9
Jubatusのリアルタイム分散レコメンデーション@TokyoNLP#9Yuya Unno
 
20180830 implement dqn_platinum_data_meetup_vol1
20180830 implement dqn_platinum_data_meetup_vol120180830 implement dqn_platinum_data_meetup_vol1
20180830 implement dqn_platinum_data_meetup_vol1Keisuke Nakata
 
Optimization night 4_dp
Optimization night 4_dpOptimization night 4_dp
Optimization night 4_dpKensuke Otsuki
 
ji-5. 繰り返し計算
ji-5. 繰り返し計算ji-5. 繰り返し計算
ji-5. 繰り返し計算kunihikokaneko1
 
Deep Learningの基礎と応用
Deep Learningの基礎と応用Deep Learningの基礎と応用
Deep Learningの基礎と応用Seiya Tokui
 
C++コミュニティーの中心でC++をDISる
C++コミュニティーの中心でC++をDISるC++コミュニティーの中心でC++をDISる
C++コミュニティーの中心でC++をDISるHideyuki Tanaka
 
闇魔術を触ってみた
闇魔術を触ってみた闇魔術を触ってみた
闇魔術を触ってみたSatoshi Sato
 
Cプログラマのためのカッコつけないプログラミングの勧め
Cプログラマのためのカッコつけないプログラミングの勧めCプログラマのためのカッコつけないプログラミングの勧め
Cプログラマのためのカッコつけないプログラミングの勧めMITSUNARI Shigeo
 
Deep learning Libs @twm
Deep learning Libs @twmDeep learning Libs @twm
Deep learning Libs @twmYuta Kashino
 
コンパイルターゲット言語としてのWebAssembly、そしてLINEでの実践
コンパイルターゲット言語としてのWebAssembly、そしてLINEでの実践コンパイルターゲット言語としてのWebAssembly、そしてLINEでの実践
コンパイルターゲット言語としてのWebAssembly、そしてLINEでの実践LINE Corporation
 
これから Haskell を書くにあたって
これから Haskell を書くにあたってこれから Haskell を書くにあたって
これから Haskell を書くにあたってTsuyoshi Matsudate
 
R による文書分類入門
R による文書分類入門R による文書分類入門
R による文書分類入門Takeshi Arabiki
 
大規模グラフアルゴリズムの最先端
大規模グラフアルゴリズムの最先端大規模グラフアルゴリズムの最先端
大規模グラフアルゴリズムの最先端Takuya Akiba
 

Similar to DSIRNLP06 Nested Pitman-Yor Language Model (20)

Introduction to NumPy & SciPy
Introduction to NumPy & SciPyIntroduction to NumPy & SciPy
Introduction to NumPy & SciPy
 
Tokyo.R #19 発表資料 「Rで色々やってみました」
Tokyo.R #19 発表資料 「Rで色々やってみました」Tokyo.R #19 発表資料 「Rで色々やってみました」
Tokyo.R #19 発表資料 「Rで色々やってみました」
 
自然言語処理はじめました - Ngramを数え上げまくる
自然言語処理はじめました - Ngramを数え上げまくる自然言語処理はじめました - Ngramを数え上げまくる
自然言語処理はじめました - Ngramを数え上げまくる
 
Deep learning実装の基礎と実践
Deep learning実装の基礎と実践Deep learning実装の基礎と実践
Deep learning実装の基礎と実践
 
Jubatusのリアルタイム分散レコメンデーション@TokyoWebmining#17
Jubatusのリアルタイム分散レコメンデーション@TokyoWebmining#17Jubatusのリアルタイム分散レコメンデーション@TokyoWebmining#17
Jubatusのリアルタイム分散レコメンデーション@TokyoWebmining#17
 
Jubatusのリアルタイム分散レコメンデーション@TokyoNLP#9
Jubatusのリアルタイム分散レコメンデーション@TokyoNLP#9Jubatusのリアルタイム分散レコメンデーション@TokyoNLP#9
Jubatusのリアルタイム分散レコメンデーション@TokyoNLP#9
 
20180830 implement dqn_platinum_data_meetup_vol1
20180830 implement dqn_platinum_data_meetup_vol120180830 implement dqn_platinum_data_meetup_vol1
20180830 implement dqn_platinum_data_meetup_vol1
 
Optimization night 4_dp
Optimization night 4_dpOptimization night 4_dp
Optimization night 4_dp
 
ji-5. 繰り返し計算
ji-5. 繰り返し計算ji-5. 繰り返し計算
ji-5. 繰り返し計算
 
Deep Learningの基礎と応用
Deep Learningの基礎と応用Deep Learningの基礎と応用
Deep Learningの基礎と応用
 
C++コミュニティーの中心でC++をDISる
C++コミュニティーの中心でC++をDISるC++コミュニティーの中心でC++をDISる
C++コミュニティーの中心でC++をDISる
 
闇魔術を触ってみた
闇魔術を触ってみた闇魔術を触ってみた
闇魔術を触ってみた
 
PFI Christmas seminar 2009
PFI Christmas seminar 2009PFI Christmas seminar 2009
PFI Christmas seminar 2009
 
Cプログラマのためのカッコつけないプログラミングの勧め
Cプログラマのためのカッコつけないプログラミングの勧めCプログラマのためのカッコつけないプログラミングの勧め
Cプログラマのためのカッコつけないプログラミングの勧め
 
Deep learning Libs @twm
Deep learning Libs @twmDeep learning Libs @twm
Deep learning Libs @twm
 
コンパイルターゲット言語としてのWebAssembly、そしてLINEでの実践
コンパイルターゲット言語としてのWebAssembly、そしてLINEでの実践コンパイルターゲット言語としてのWebAssembly、そしてLINEでの実践
コンパイルターゲット言語としてのWebAssembly、そしてLINEでの実践
 
これから Haskell を書くにあたって
これから Haskell を書くにあたってこれから Haskell を書くにあたって
これから Haskell を書くにあたって
 
R による文書分類入門
R による文書分類入門R による文書分類入門
R による文書分類入門
 
大規模グラフアルゴリズムの最先端
大規模グラフアルゴリズムの最先端大規模グラフアルゴリズムの最先端
大規模グラフアルゴリズムの最先端
 
Deep learning入門
Deep learning入門Deep learning入門
Deep learning入門
 

DSIRNLP06 Nested Pitman-Yor Language Model