44

Click here to load reader

続わかりやすいパターン認識11章(11.1 - 11.4)

Embed Size (px)

Citation preview

Page 1: 続わかりやすいパターン認識11章(11.1 - 11.4)

続・わかりやすい

パターン認識

@teramonagi

第11章 (11.1-11.4) ノンパラメトリックベイズモデル

Page 2: 続わかりやすいパターン認識11章(11.1 - 11.4)

誰や?

Page 3: 続わかりやすいパターン認識11章(11.1 - 11.4)

俺や

• ID: @teramonagi

•職種:データ分析おじさん

•業務:ブカーの育成&会議&Code

•言語:/R/F#/Python/C++/Ruby/

•特技:早起き・根回し

3

優秀な新人怖い

Page 4: 続わかりやすいパターン認識11章(11.1 - 11.4)

11.1: 分割の確率モデル

4

Page 5: 続わかりやすいパターン認識11章(11.1 - 11.4)

これまでのクラスタリング

• 9-10章で扱ったクラスタリング手法

–混合正規分布のパラメータ推定

–K-Means法

–凸クラスタリング法

• これらはクラスタ構造のモデル化が欠如

• クラスタ構造をモデリングし、クラスタリング実行中に最適なクラスタ数が自動決定される手法が欲しい

5

Page 6: 続わかりやすいパターン認識11章(11.1 - 11.4)

ノンパラメトリックベイズモデル

• そんな時のためのノンパラメトリックベイズ

• (今まで)最尤推定 → ベイズ推定

• ベイズ推定に基づきクラスタリング構造も事前分布としてモデル化する

• 方法は大きく分けて2つ(次ページ)

• 定義

–パターン集合:

–クラスタ集合:

–クラスタのパラメータ:

6

Page 7: 続わかりやすいパターン認識11章(11.1 - 11.4)

クラスタリング法1

•パターンの所属クラスタsおよび、そのクラスタのパラメータθの双方を決定する

7

事後確率

MAP推定値

Page 8: 続わかりやすいパターン認識11章(11.1 - 11.4)

クラスタリング法2

•パターンの所属クラスタのみを決定する

•クラスタのパラメータθは不要なので積分消去(Marginal out)

8

事後確率

MAP推定値

Page 9: 続わかりやすいパターン認識11章(11.1 - 11.4)

解決すべき問題

• 問題1:クラスタの事前確率p(s)の設定

• 答:分割の確率モデルを用いる(11.2, 11.3)

• 問題2:事後分布p(s, θ|x), p(s|x)を最大化するための計算をどうするか

• 答:ギブスサンプリング(12.1)

9

※ここでは単一割り当てを仮定し、特にディリクレ過程を詳細に説明、多重割り当ての場合はベータベルヌーイ過程については(A.7)で

Page 10: 続わかりやすいパターン認識11章(11.1 - 11.4)

11.2: ホップの壺モデル

10

Page 11: 続わかりやすいパターン認識11章(11.1 - 11.4)

ホップの壺モデル

• Hoppe’s urn model

•壺に1個の黒玉と他の色の玉(色玉)が混在

•玉の重さ:黒玉(α)・他の色(1)

•次ページに示すルールに従って、壺から玉を出し入れする

11

Page 12: 続わかりやすいパターン認識11章(11.1 - 11.4)

ホップの壺モデル

1. 壺の中に黒玉が1個入ってる

2. 玉の重さに比例した確率で玉を1つ取りだす

3. If 玉色=黒→新色玉を1つ追加・黒玉戻す

4. Else その色と同じ玉を1つ追加

5. 2に戻る

12

Page 13: 続わかりやすいパターン認識11章(11.1 - 11.4)

ホップの壺モデル(例)

13

α/α

はじめ 黒玉選択 新色(赤)追加 ※壺中の数値は玉の選択確率

Page 14: 続わかりやすいパターン認識11章(11.1 - 11.4)

ホップの壺モデル(例)

14

黒玉選択

α/(1+α)

新色(黄)追加

1/(2+α)

黄玉選択

Page 15: 続わかりやすいパターン認識11章(11.1 - 11.4)

ホップの壺モデル(例)

15

同色追加 赤玉選択 同色追加

1/(3+α)

Page 16: 続わかりやすいパターン認識11章(11.1 - 11.4)

ホップの壺モデル(例)

16

赤玉選択 同色追加 黒玉選択

2/(4+α) α/(5+α)

Page 17: 続わかりやすいパターン認識11章(11.1 - 11.4)

ホップの壺モデル(例)

17

新色(緑)追加 おしまい

…となる確率

R:赤

Y:黄

G:緑

Page 18: 続わかりやすいパターン認識11章(11.1 - 11.4)

この例となる確率

18

上昇階乗:

Page 19: 続わかりやすいパターン認識11章(11.1 - 11.4)

色が入る順番を入れ替える

•色が入る順番を入れ替えて、確率を計算してみると…

•前の結果

19

確率一致!

Page 20: 続わかりやすいパターン認識11章(11.1 - 11.4)

イーウェンスの抽出公式

• 今の話の一般化

–確率は色の順番に非依存

–色玉の種類数とその個数のみに依存

20

第i色の色玉の個数n_i

Page 21: 続わかりやすいパターン認識11章(11.1 - 11.4)

イーウェンスの抽出公式 • 特徴1:交換可能性

–色玉の組み合わせの確率は、玉を入れる順番に非依存

• 特徴2:クラスタ数の非規定 –壺に入れられる色玉の種類は試行とともに増加

• 特徴3:クラスタ数の調整

–αの値大→色玉の種類増

–αの値小→色玉の種類減

21

Page 22: 続わかりやすいパターン認識11章(11.1 - 11.4)

11.3: 中華料理店過程

22

Page 23: 続わかりやすいパターン認識11章(11.1 - 11.4)

中華料理店過程

• Chinese Restaurant Process, CRP

•ホップの壺モデルの特徴を全て満たす(等価な)分割の確率モデル

•中華料理店の複数のテーブルに順次客が着席

•同テーブルの客を1つのまとまりと考える

23

Page 24: 続わかりやすいパターン認識11章(11.1 - 11.4)

中華料理店過程

• 最初の客は任意のテーブルに着席

• N番目以降の客

–既にn_i人着席しているテーブルiに確率n_i/(n-1+α)

–誰も着席していない最も番号の小さいテーブルに確率α/(n-1+α)

で着席

(nは自分も含めて数える!!!) 24

Page 25: 続わかりやすいパターン認識11章(11.1 - 11.4)

中華料理店過程(例)

•6番目の客のテーブル選択

25

テーブル

テーブル2

テーブル

1 2 3 4

5

3/(5+α) 2/(5+α) α/(5+α)

※↑は6番目の客が各テーブルを選択する確率

Page 26: 続わかりやすいパターン認識11章(11.1 - 11.4)

中華料理店過程(例) • 6人の客が順にテーブル1,2,2,1,1,3に着席する確率

26

テーブル

テーブル2

テーブル

1 2 3 4

5 6

Page 27: 続わかりやすいパターン認識11章(11.1 - 11.4)

中華料理店過程(例) • 6人の客が順にテーブル1,1,2,1,2,3に着席する確率

27

テーブル

テーブル2

テーブル

1 3 5 2

4 6

※順番を変えても着席確率は不変!

Page 28: 続わかりやすいパターン認識11章(11.1 - 11.4)

中華料理店過程の特徴 • 特徴1:交換可能性

–着席確率は客の到着順序に非依存

• 特徴2:クラスタ数の非規定 –着席しているテーブルの数は客の到来とともに増大する

• 特徴3:クラスタ数の調整

–αの値大→空席でないテーブルが増加

–αの値小→特定のテーブルに固まりやすい • これらの特徴はホップの壺モデルの特徴と一対一対応(客の着席⇔色玉の追加)

28

Page 29: 続わかりやすいパターン認識11章(11.1 - 11.4)

11.4: 事前確率のための確率モデル

29

Page 30: 続わかりやすいパターン認識11章(11.1 - 11.4)

クラスタリングと2つのモデルの関係

クラスタリング ホップの壺モデル CRP

k番目のパターン

壺に入れるk番目の玉

k番目の来店客

総パターン数: n 壺中の色玉の総数 来店客総数

クラスタ: ω_i 第i色 テーブルi

クラスタ数: c 色の種類数 使用テーブル数

ω_iに属するパターン数: n_i

壺中の第i色の玉の数

テーブルiに着席した客の数

30

Page 31: 続わかりやすいパターン認識11章(11.1 - 11.4)

テーブルへの分割方法とその生起確率

(n=4, α=2) (a)テーブル数c (b)テーブルの客数 客の分割方法 (d)生起確率

1 (4) (① ② ③ ④) 1/10

2

(2, 2) (① ②) (③ ④) 1/30

(① ③) (② ④) 1/30

(① ④) (② ③) 1/30

(3, 1)

(① ② ③) (④) 1/15

(① ② ④) (③) 1/15

(① ③ ④) (②) 1/15

(② ③ ④) (①) 1/15

3 (2, 1, 1)

(① ②) (③) (④) 1/15

(① ③) (②) (④) 1/15

(① ④) (②) (③) 1/15

(② ③) (①) (④) 1/15

(② ④) (①) (③) 1/15

(③ ④) (①) (②) 1/15

4 (1, 1, 1, 1) (① ② ③ ④) 2/15 31

Page 32: 続わかりやすいパターン認識11章(11.1 - 11.4)

演習問題11.1(2)の答え

• n人の客をn1, …, nc人ずつc個のテーブルに分割する方法の数N1(テーブルの区別なし)

•間違ってたら正直スマン

32

Page 33: 続わかりやすいパターン認識11章(11.1 - 11.4)

CRPからピットマン・ヨー過程へ

• CRP –既にn_i人着席しているテーブルiに確率

n_i/(n-1+α) –誰も着席していない最も番号の小さいテーブルに確率α/(n-1+α)

• ピットマン・ヨー過程

–既にn_i人着席しているテーブルiに確率(n_i-β)/(n-1+α)

–誰も着席していない最も番号の小さいテーブルに確率(α+cβ) /(n-1+α)

• β=0でCPRに帰着

33

Page 34: 続わかりやすいパターン認識11章(11.1 - 11.4)

CRPからピットマン・ヨー過程へ

• CRPでのテーブル数cの期待値

•ピットマン・ヨー過程でのテーブル数cの期待値(べき乗則)

34

Page 35: 続わかりやすいパターン認識11章(11.1 - 11.4)

ピットマン・ヨー過程

•使用テーブル数の期待値が、べき乗則に従う(y=ax^b)

•値の範囲が非常に広くなるロングテールな現象が現れる

•頑張ってシミュレーションしてみた

35

Page 36: 続わかりやすいパターン認識11章(11.1 - 11.4)

図11.5 CRPにおける使用テーブル数の変化

36

α=10

α=2

来客数n

使用テーブル数

c

Page 37: 続わかりやすいパターン認識11章(11.1 - 11.4)

図11.6 CRPにおけるテーブルと着席客数(n=1000人)

37 テーブル

各テーブルの客数

α=2・使用テーブル数=14 (テキストに無いケースなんだ、すまない)

Page 38: 続わかりやすいパターン認識11章(11.1 - 11.4)

図11.7 ピットマン・ヨー過程における使用テーブル数の変化

38 来客数n

使用テーブル数

c β=0.4

β=0.3

β=0.2

β=0(CRP)

Page 39: 続わかりやすいパターン認識11章(11.1 - 11.4)

図11.8 べき乗則に従うピットマン・ヨー過程(n=10^5人)

39 テーブル

各テーブルの客数

ピットマン・ヨー(β=0.8)

CPR(β=0)

直線

Page 40: 続わかりやすいパターン認識11章(11.1 - 11.4)

ピットマン・ヨー過程兼CPRのコード

40

#ピットマン・ヨー過程+CRPを生成する関数

pitman_yor <- function(size, alpha, beta)

{

table <- c(1)

x <- matrix(c(1,1), ncol=2)

for(n in seq_len(size))

{

denominator <- sum(table) + alpha

prob <- c(table - beta, alpha + (length(table)-1)*beta)/denominator

i <- sample(1:(length(table)+1), 1, prob=prob)

table[i] <- ifelse(is.na(table[i]), 0, table[i]) + 1

x <- rbind(x, c(n, length(table)))

}

list(x=x, table=sort(table, decreasing=TRUE))

}

Page 41: 続わかりやすいパターン認識11章(11.1 - 11.4)

ピットマン・ヨー過程兼CPRのコード

41

#図11.5

x10 <- pitman_yor(10^3, 10 , 0)

x2 <- pitman_yor(10^3, 2 , 0)

ylim <- range(x10$x[,2])

plot(x10$x, ylim=ylim)

par(new=T)

plot(x2$x, ylim=ylim)

#図11.6

x <- pitman_yor(10^3, 2 , 0)

barplot(x$table, names.arg=seq_len(length(x$table)))

Page 42: 続わかりやすいパターン認識11章(11.1 - 11.4)

ピットマン・ヨー過程兼CPRのコード

42

#図11.7

x4 <- pitman_yor(10^3, 2, 0.4)

x3 <- pitman_yor(10^3, 2, 0.3)

x2 <- pitman_yor(10^3, 2, 0.2)

x0 <- pitman_yor(10^3, 2, 0.0)

ylim <- range(x4$x[,2])

plot(x4$x, ylim=ylim)

par(new=T)

plot(x3$x, ylim=ylim)

par(new=T)

plot(x2$x, ylim=ylim)

par(new=T)

plot(x0$x, ylim=ylim)

Page 43: 続わかりやすいパターン認識11章(11.1 - 11.4)

ピットマン・ヨー過程兼CPRのコード

43

#図11.8

ylim <- range(c$table)

xlim <- range(seq_len(length(p$table)))

plot(seq_len(length(c$table)), c$table, log="xy", xlim=xlim, ylim=ylim)

par(new=T)

plot(seq_len(length(p$table)), p$table, log="xy", xlim=xlim, ylim=ylim)

Page 44: 続わかりやすいパターン認識11章(11.1 - 11.4)

おしまい

44