Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ディリクレ過程混合モデルによるクラスタリング
Search
eqs
October 08, 2018
Technology
1
660
ディリクレ過程混合モデルによるクラスタリング
研究室でやった続・わかりやすいパターン認識勉強会の第12章発表資料
eqs
October 08, 2018
Tweet
Share
More Decks by eqs
See All by eqs
機械学習の基礎から理解する DeepLabCutの原理
eqs
1
7.1k
静的サイトジェネレータyachoのつかいかた
eqs
0
110
コンピュータビジョン勉強会
eqs
0
110
Hugoでサイト作りたい
eqs
0
120
Beamer Example
eqs
0
200
Example slide of `highlight` command
eqs
0
1.8k
Probability Distributions (PRML 2.3.1-2.3.7)
eqs
0
460
Convolutional Networks (Deep Learning, 9.1-9.4)
eqs
1
170
Other Decks in Technology
See All in Technology
マルチエージェントのチームビルディング_2025-10-25
shinoyamada
0
240
プロファイルとAIエージェントによる効率的なデバッグ / Effective debugging with profiler and AI assistant
ymotongpoo
1
740
2025/10/27 JJUGナイトセミナー WildFlyとQuarkusの 始め方
megascus
0
110
書籍『実践 Apache Iceberg』の歩き方
ishikawa_satoru
0
430
AWSが好きすぎて、41歳でエンジニアになり、AAIを経由してAWSパートナー企業に入った話
yama3133
2
220
知覚とデザイン
rinchoku
1
720
オブザーバビリティと育てた ID管理・認証認可基盤の歩み / The Journey of an ID Management, Authentication, and Authorization Platform Nurtured with Observability
kaminashi
2
1.6k
実践マルチモーダル検索!
shibuiwilliam
3
530
Kotlinで型安全にバイテンポラルデータを扱いたい! ReladomoラッパーをAIと実装してみた話
itohiro73
3
140
SREのキャリアから経営に近づく - Enterprise Risk Managementを基に -
shonansurvivors
1
700
プロダクト開発と社内データ活用での、BI×AIの現在地 / Data_Findy
sansan_randd
1
760
ストレージエンジニアの仕事と、近年の計算機について / 第58回 情報科学若手の会
pfn
PRO
4
950
Featured
See All Featured
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
127
54k
Why Our Code Smells
bkeepers
PRO
340
57k
The Pragmatic Product Professional
lauravandoore
36
7k
The Invisible Side of Design
smashingmag
302
51k
How to train your dragon (web standard)
notwaldorf
97
6.3k
Context Engineering - Making Every Token Count
addyosmani
8
330
Faster Mobile Websites
deanohume
310
31k
YesSQL, Process and Tooling at Scale
rocio
174
15k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.5k
We Have a Design System, Now What?
morganepeng
54
7.9k
A better future with KSS
kneath
239
18k
Transcript
ディリクレ過程混合モデルによるクラスタリング 続・わかりやすいパターン認識第 12 章 Satoshi Murashige October 8, 2018 Mathematical
Informatics Lab., NAIST
Table of Contents モチベーション:クラスタ数が未知のクラスタリング問題 問題 1: クラスタの割当てとパラメタを求めるアルゴリズムの導出 問題 1 の具体例:クラスタ数未知の
Gaussian Mixture Model によるクラス タリング 問題 2: クラスタの割当てのみを求めるアルゴリズムの導出 問題 2 の具体例:クラスタ数未知の Gaussian Mixture Model によるクラス タリング 2/34
モチベーション:クラスタ数が未 知のクラスタリング問題
モチベーション: クラスタ数が未知のクラスタリング問題を解きたい -10 -5 0 5 -10 -5 0 5
y1 3/34
生成モデル:観測パターンの生成過程をモデル化する 1 2 3 4 5 · · · -3
-2 -1 0 1 2 3 0.0 0.2 0.4 0.6 0.8 -3 -2 -1 0 1 2 3 0.0 0.1 0.2 0.3 0.4 -3 -2 -1 0 1 2 3 0.05 0.10 0.15 0.20 0.25 クラスタ 1: θ1 = (µ1 , Σ1 ) クラスタ 2: θ2 = (µ2 , Σ2 ) クラスタ 3: θ3 = (µ3 , Σ3 ) sn ∼ Categorical(s|π) x 1 x 2 x 3 x 4 x 5 xn ∼ N(x|µi, Σi) . . . . . . 4/34
クラスタリング問題の定式化 p(s, θ|x) = p(x, s, θ) p(x) = p(x|s,
θ)P(s)p(θ) ∑ s ∫ p(x|s, θ)P(s)p(θ)dθ (11.4) (ˆ s, ˆ θ) = argmax s,θ {p(s, θ|x)} (11.5) 1. 事前確率 P(s) をどのように決めるか? • クラスタ数が無限にあるので,工夫が必要 2. 事後確率 p(s, θ|x) をどのように最大化するか? • s のあらゆる組合せを考えるのは不可能 5/34
事前確率 P(s) はデータをクラスタに分割する方法の確率モデル クラスタリング CRP k 個目のパターン xk k 人目の客
総パターン数 n 来店客数 クラスタ ωi テーブル i クラスタ数 c 使用するテーブル数 クラスタ ωi のパターン数 ni テーブル i に座った人の数 6/34
クラスタ数未知のクラスタリング問題におけるデータの生成過程の 定式化 s 1 , · · · , sn|α
∼ CRP(α) (12.4) θi|β ∼ G 0 (θ) (12.5) xk|sk = ωi, θ ∼ p(x|θi) (12.6) 7/34
事後確率 p(s, θ|x), p(s|x) の最大化問題を解きたい (ˆ s, ˆ θ) =
argmax s,θ {p(s, θ|x)} (11.5) ˆ s = argmax s {p(s|x)} (11.7) アプローチ • あらゆる組合せの s を評価するのではなく,ランダムサンプリングし た s の中から p(s, θ|x) を最大化するものを選ぶ • ランダムサンプリングには Gibbs サンプリングを用いる 8/34
問題 1: クラスタの割当てとパラメ タを求めるアルゴリズムの導出
Gibbs サンプリング:確率分布 p(x) から乱数を生成する方法 • 確率変数 x ∈ Rd •
i 番目の成分を除いたベクトル x −i = (x 1 , · · · , xi−1 , xi+1 , · · · , xd)⊤ ∈ Rd−1 • 確率密度関数 p(x) に対して p(xi|x −i) を計算できる場合に有効 • 方針:d 個の成分のうち,d − 1 個を固定して残りの 1 つをサンプ リング 9/34
Gibbs サンプリングの例 テキスト P.305 図 A.4 10/34
事後確率最大化のアルゴリズムの概略 1. パターン x = {xk}n k=1 のクラスタ割当て s =
{sk}n k=1 を初期化する. 割当て s に基づいてクラスタのパラメタ θ = {θ}c i=1 を決定する. • 割当て s が決まっていればとりあえずパラメタ θ は計算できる 2. 割当て s を分布 p(s|x, θ) からサンプリングする • サンプリングには Gibbs サンプリングを使う 3. サンプリングした割当て s を基にパラメタの事後分布 p(θi|{xk; xk ∈ ωi}) を更新する 4. 事後確率 p(s, θ|x) ∝ P(s)p(θ)p(x|s, θ) を計算する. • 今までで一番大きい値であれば,その値と s を保存 5. 最大値が更新されなくなったら終了.そうでなければ 2. に戻る 11/34
やりたいこと: クラスタ割当て s を P(s|x, θ) からサンプリングしたい • Gibbs サンプリングを行うには
P(sk = ωi|xk, s −k, x −k, θ) がわかれば OK P(sk = ωi|xk, s −k, x −k, θ) = p(xk, sk = ωi|s −k, x −k, θ) p(xk|s −k, x −k, θ) (12.7) ∝ p(xk, sk = ωi|s −k, x −k, θ) (12.8) = p(xk|sk = ωi, x −k, θ)P(sk = ωi|s −k, x −k, θ) (12.9) = p(xk|sk = ωi, θ) 1 ⃝ P(sk = ωi|s −k) 2 ⃝ (12.10) 12/34
1 ⃝ p(xk|sk = ωi, θ) の計算 (i) ωi が既知のクラスタの場合
p(xk|sk = ωi, θ) = p(xk|θi) (12.11) (ii) ωi が新しいクラスタ ωnew の場合 • θnew は未定であり,ωnew に所属するパターン数は 0 • 事前分布 G0(θnew) で期待値をとる p(xk|sk = ωnew, θ) = ∫ p(xk|θnew)G0(θnew)dθnew (12.12) • この積分は G0(θ) を共役事前分布にとれば解析的に計算可能 13/34
2 ⃝ P(sk = ωi|s−k) の計算 • Dirichlet 分布から導出された CRP
の式を思い出す P(sn = ωi|s 1 , · · · , sn−1 ) = ni n − 1 + α (ωi ∈ Ω1 ) α n − 1 + α (ωi ∈ Ω0 ) (11.42) • s が交換可能であることを用いると次式が得られる P(sk|s −k) = n′ i n − 1 + α (sk = ωi のとき) α n − 1 + α (sk = ωnew のとき) (12.13) • n′ i は xk を除いた後,ωi に所属するパターン数 • n′ i = 0 となる場合はクラスタ自体を削除するので n′ i > 0 が保証される 14/34
1 ⃝ p(xk|sk = ωi, θ) と 2 ⃝ P(sk
= ωi|s−k) をまとめる P(sk = ωi|xk, s −k, x −k, θ) ∝ p(xk|sk = ωi, θ) 1 ⃝ P(sk = ωi|s −k) 2 ⃝ (12.10) = n′ i n − 1 + α · p(xk|θi) (sk = ωi のとき) α n − 1 + α · ∫ p(xk|θnew)G 0 (θnew)dθnew (sk = ωnew のとき) (12.14) あとは具体的な G 0 (θ) を与えれば計算を実行可能 15/34
Remark: 事後確率最大化のアルゴリズムの概略 (パラメタ θi の更新式がまだわからない) 1. パターン x = {xk}n
k=1 のクラスタ割当て s = {sk}n k=1 を初期化する. 割当て s に基づいてクラスタのパラメタ θ = {θ}c i=1 を決定する. • 割当て s が決まっていればとりあえずパラメタ θ は計算できる 2. 割当て s を分布 p(s|x, θ) からサンプリングする • サンプリングには Gibbs サンプリングを使う 3. サンプリングした割当て s を基にパラメタの事後分布 p(θi|{xk; xk ∈ ωi})を更新する 4. 事後確率 p(s, θ|x) ∝ P(s)p(θ)p(x|s, θ) を計算する. • 今までで一番大きい値であれば,その値と s を保存 5. 最大値が更新されなくなったら終了.そうでなければ 2. に戻る 16/34
パラメタ θi の更新式の導出 • 次式の計算を i = 1, · ·
· , c についてやる p(θi|{xk; xk ∈ ωi}) = p({xk; xk ∈ ωi}|θi) · G 0 (θi) p({xk; xk ∈ ωi}) = G 0 (θi) · ∏ xk∈ωi p(xk|θi) ∫ G 0 (θi) · ∏ xk∈ωi p(xk|θi)dθi (12.15) • ここも具体的な G 0 (θ) を与えれば計算を実行可能 17/34
問題 1 の具体例:クラスタ数未知 の Gaussian Mixture Model によ るクラスタリング
クラスタ数未知の Gaussian Mixture Model によるクラスタリング (クラスタリング法 1 の実験) • クラスタ
ωi の分布 p(xk|θi) = N(xk; µi, Λ−1 i ) (12.27) θi = (µi, Λ−1 i ) (12.28) • ノンパラメトリックベイズモデルでは,パラメタ θi は基底分布 G 0 (θ) に従うと仮定している • N(xk; µ, Λ−1) に対する,µ, Λ−1 の共役事前分布は正規–Wishart 分布: G 0 (θ) = G 0 (µ, Λ−1) = N(µ; µ0 , (βΛ)−1) · W(Λ; ν, S) (12.32) 18/34
基底分布 G0 (θ) を決めたので,サンプリングの式とパラメタの更新 式が具体的に書ける P(sk = ωi|xk, s−k, x−k,
θ) ∝ n′ i n − 1 + α · p(xk|θi) (sk = ωi のとき) α n − 1 + α · ∫ p(xk|θnew)G0(θnew)dθnew (sk = ωnew のとき) (12.14) p(θi|{xk; xk ∈ ωi}) = p({xk; xk ∈ ωi}|θi) · G0(θi) p({xk; xk ∈ ωi}) = G0(θi) · ∏ xk∈ωi p(xk|θi) ∫ G0(θi) · ∏ xk∈ωi p(xk|θi)dθi (12.15) 19/34
sk のサンプリングの式を導出する (積分の計算のみ) • G 0 (θ) を共役事前分布にしているので解析的に求まる ∫ p(xk|θnew)G
0 (θnew)dθnew = ( β (1 + β)π )d/2 · |Sb|(ν+1)/2 · Γ ( ν + 1 2 ) |S|ν/2 · Γ ( ν + 1 − d 2 ) (12.35) • Sb は次式で求められる S−1 b = S−1 + β 1 + β (xk − µ0 )(xk − µ0 )⊤ (12.36) 20/34
θi の更新式を導出する G 0 (θ) を共役事前分布にしているので事後分布は同じ分布族になる p(θi|{xk; xk ∈ ωi})
= N(µi; µc, Λ−1 c ) · W(Λi; νc, Sq) (12.37) S−1 q = S−1 + ∑ xk∈ωi (xk − ¯ x)(xk − ¯ x)⊤ + niβ ni + β (¯ x − µ0 )(¯ x − µ0 )⊤ (12.38) ¯ x = 1 ni ∑ xk∈ωi xk (12.39) µc = ni¯ x + βµ0 ni + β (12.40) Λc = (ni + β)Λi (12.41) νc = ν + ni (12.42) 21/34
アルゴリズム 1 を実行する 結果はテキスト P.270 図 12.1, 12.2 22/34
問題 2: クラスタの割当てのみを 求めるアルゴリズムの導出
Remark: 事後確率 p(s, θ|x), p(s|x) の最大化問題を解きたい (ˆ s, ˆ θ)
= argmax s,θ {p(s, θ|x)} (11.5) ˆ s = argmax s {p(s|x)} (11.7) アプローチ • あらゆる組合せの s を評価するのではなく,ランダムサンプリングし た s の中から p(s, θ|x) を最大化するものを選ぶ • ランダムサンプリングには Gibbs サンプリングを用いる 23/34
問題 1 との比較 • 事後確率最大化の方針は問題 1 と共通だが θ を周辺化する点が異なる •
周辺化のせいで s のサンプリングの式がめっちゃ変わる (条件付き独立にならない変数が出てくる) • θ の更新式がいらない 24/34
やりたいこと: クラスタ割当て s を P(s|x) からサンプリングしたい • Gibbs サンプリングを行うには P(sk
= ωi|xk, s −k, x −k) がわかれば OK P(sk = ωi|xk, s −k, x −k) = p(xk, sk = ωi|s −k, x −k) p(xk|s −k, x −k) ∝ p(xk, sk = ωi|s −k, x −k) = p(xk|sk = ωi, x −k)P(sk = ωi|s −k, x −k) = p(xk|sk = ωi, x −k) 1 ⃝ P(sk = ωi|s −k) 2 ⃝ (12.17) 25/34
1 ⃝ p(xk|sk = ωi, x−k) の計算 計算の方針 p(xk|sk =
ωi, x −k) を尤度 p(x −k|θi) と事前確率 G 0 (θi) だけの形にする (i) ωi が既知のクラスタの場合 • x−k から得られたパラメタの事後分布 p(θi|x−k) で期待値をとる p(xk|sk = ωi, xk) = ∫ p(xk|θi, x−k)p(θi|x−k)dθi = ∫ p(xk|θi)p(θi|x−k)dθi (12.18) • 事後分布 p(θi|x−k) を xk を観測したときの事前分布とみる感覚… 26/34
1 ⃝ p(xk|sk = ωi, x−k) の計算: (i) ωi が既知のクラスタの場合
事後分布 p(θi|x −k) は Bayes の定理より次式で書ける p(θi|x −k) = p(x −k|θi)G 0 (θi) p(xk) = p(x −k|θi)G 0 (θi) ∫ p(x −k|θi)G 0 (θi)dθi (12.19) ここで,x −k のうち ωi に所属しないものは θi に依存しないので, p(x −k|θi) = ∏ xj∈ωi, j̸=k p(xj|θi) · ∏ xj̸∈ωi, j̸=k p(xj) (12.20) (∵ xj ̸∈ ωi ⇒ p(xj|θi) = p(xj)) (12.20) を (12.19) に代入すると… 27/34
1 ⃝ p(xk|sk = ωi, x−k) の計算: (i) ωi が既知のクラスタの場合
p(x −k|θi) = ∏ xj∈ωi, j̸=k p(xj|θi) · ∏ xj̸∈ωi, j̸=k p(xj) (12.20) p(θi|x −k) = G 0 (θi) · ∏ xj∈ωi, j̸=k p(xj|θi) · ∏ xj̸∈ωi, j̸=k p(xj) ∏ xj̸∈ωi, j̸=k p(xj) · ∫ G 0 (θi) · ∏ xj∈ωi, j̸=k p(xj|θi)dθi = G 0 (θi) · ∏ xj∈ωi, j̸=k p(xj|θi) ∫ G 0 (θi) · ∏ xj∈ωi, j̸=k p(xj|θi)dθi (12.21) 28/34
1 ⃝ p(xk|sk = ωi, x−k) の計算 (ii) ωi が新しいクラスタ
ωnew の場合 • x−k から得られたパラメタの事後分布 p(θnew|x−k) で期待値をとる p(xk|sk = ωnew, xk) = ∫ p(xk|θnew)p(θnew|x−k)dθnew • (12.20) において,θnew に依存する xj が無い p(x−k|θi) = ∏ xj∈ωi, j̸=k p(xj|θi) · ∏ xj̸∈ωi, j̸=k p(xj) (12.20) • 事後分布の計算でめっちゃ約分できる p(θnew|x−k) = G0(θnew) ∫ G0(θnew)dθnew = G0(θnew) (12.22) • 結局,事前分布 G0(θnew) で期待値を計算することになる 29/34
2 ⃝ P(sk = ωi|s−k) の計算 • θ を周辺化する前と同じ式! P(sk|s
−k) = n′ i n − 1 + α (sk = ωi のとき) α n − 1 + α (sk = ωnew のとき) (12.22) • n′ i は xk を除いた後,ωi に所属するパターン数 • n′ i = 0 となる場合はクラスタ自体を削除するので n′ i > 0 が保証される 30/34
1 ⃝ p(xk|sk = ωi, x−k) と 2 ⃝ P(sk
= ωi|s−k) をまとめる P(sk = ωi|xk, s −k, x −k) ∝ n′ i n − 1 + α ∫ p(xk|θi)p(θi|x −k)dθi (sk = ωi のとき) α n − 1 + α ∫ p(xk|θnew)G 0 (θnew)dθnew (sk = ωnew のとき) (12.23) p(θi|x −k) = G 0 (θi) · ∏ xj∈ωi, j̸=k p(xj|θi) ∫ G 0 (θi) · ∏ xj∈ωi, j̸=k p(xj|θi)dθi (12.21) あとは具体的な G 0 (θ) を与えれば計算を実行可能… 31/34
問題 2 の具体例:クラスタ数未知 の Gaussian Mixture Model によ るクラスタリング
問題の設定は問題 1 と同じ P(sk = ωi|xk, s −k, x −k)
∝ n′ i n − 1 + α ∫ p(xk|θi)p(θi|x −k)dθi (sk = ωi のとき) α n − 1 + α ∫ p(xk|θnew)G 0 (θnew)dθnew (sk = ωnew のとき) (12.23) • 赤色で示した部分の積分を計算する必要がある • 下段は問題 1 で計算したものと同じなので上でだけ頑張れば OK 32/34
アルゴリズム 2 を実行する • 結果はテキスト P.273-274 図 12.3, 12.4 •
クラスタリングの過程でパラメタはわからないが,クラスタリング完 了後に最尤推定等で決定することは可能 33/34
Summary • クラスタ数が未知のクラスタリング問題をノンパラメトリックベイズ で解いた • Gibbs サンプリングの式とパラメタの更新式の導出が肝 • 条件付き独立性の扱いに注意 •
周辺化の計算により観測変数や潜在変数間の依存関係が生まれる • http://machine-learning.hatenablog.com/entry/2016/02/10/184755 • http://machine-learning.hatenablog.com/entry/2016/11/03/205317#f-0c267b1e 34/34