• 検索結果がありません。

確率的生成モデル

N/A
N/A
Protected

Academic year: 2021

シェア "確率的生成モデル"

Copied!
49
0
0

読み込み中.... (全文を見る)

全文

(1)

確率的生成モデル

伊達 章

宮崎大学 工学部 情報システム工学科

2020

7

7

日 (

11/15

(2)

観測データ(時系列)

-2 -1 0 1 2 3 4

0 50 100 150 200

t

y

seed: 20070919 σ=0.7

もとの信号は

0

1

.復元したい!

(3)

観測データ(時系列)

-2 -1 0 1 2 3 4

0 50 100 150 200

t

y

seed: 20070919 σ=0.7

もとの信号は

0

1

.復元したい!

(4)

観測データ(時系列)

-2 -1 0 1 2 3 4

0 50 100 150 200

t x

true

, y

seed: 20070919 σ=0.7

もとの信号は

0

1

.復元したい!

(5)

もとの信号

x true

-2 -1 0 1 2 3 4

0 50 100 150 200

t x

true

seed: 20070919 σ=0.7

マルコフ的情報源

(6)

マルコフ的情報源

0.99

0.97 0.01

0.03

0 1

000000001111111111000000000

(7)

マルコフ的情報源

0.99

0.97 0.01

0.03

0 1

000000001111111111000000000

(8)

観測データ

y

(時系列)

-2 -1 0 1 2 3 4

0 50 100 150 200

t

y

seed: 20070919 σ=0.7

(9)

多段決定問題

多変数関数

f (x)

の最大化

J = f (x 1 , x 2 , · · · , x n ) max

n = 10, x

i

∈ { 0, 1 }

の場合

x J

0 0000000000 f(x

0

) 1 0000000001 f(x

1

) 2 0000000010 f(x

2

)

.. .

k 0011101011 f(x

k

)

最大

.. .

1023 1111111111 f(x

2n1

) max

i

f (x

i

) = f(x

k

), argmax

i

f(x

i

) = k

(10)

多段決定問題

多変数関数

f (x)

の最大化

J = f (x 1 , x 2 , · · · , x n ) max

n = 10, x

i

∈ { 0, 1 }

の場合

x J

0 0000000000 f(x

0

) 1 0000000001 f(x

1

) 2 0000000010 f(x

2

)

.. .

k 0011101011 f(x

k

)

最大

.. .

1023 1111111111 f(x

2n1

) max

i

f (x

i

) = f(x

k

), argmax

i

f (x

i

) = k

(11)

多段決定問題

多変数関数

f (x)

の最大化

J = f (x 1 , x 2 , · · · , x n ) max

n = 100, x

i

∈ { 0, 1 }

の場合.

2

100

= (2

10

)

10

(10

3

)

10

= 10

30

x J

0 0000000000 f (x

0

) 1 0000000001 f (x

1

) 2 0000000010 f (x

2

) 3 0000000011 f (x

3

)

.. .

k 0011101011 f (x

k

)

最大

.. .

10

30

111 · · · 111 f(x

2n1

)

(12)

課題

例題:

n = 200, y = (y 1 , · · · , y n )

目的:

x = argmax

x

f (x), x i ∈ { 0, 1 }

の計算

まもとには計算できない.

動的計画法を使い,この問題を解決する.

仕組み理解し,コードを書き,問題を解く.

(13)

事後確率最大にする値

x MAP

-2 -1 0 1 2 3 4

0 50 100 150 200

t x

true

, y x

MAP

seed: 20070919 P (xMAP| y ) = 0.03118

P (xtrue| y ) = 0.00213 σ=0.7

(14)

多段決定問題

多変数関数の最大化

J = p(x | y) max

n = 200, x

i

∈ { 0, 1 }

の場合.

2

200

= (2

10

)

20

(10

3

)

20

= 10

60

x J

0 0000000000 f (x

0

) 1 0000000001 f (x

1

) 2 0000000010 f (x

2

) 3 0000000011 f (x

3

)

.. .

k 0011101011 f (x

k

)

最大

.. .

10

60

111 · · · 111 f(x

2n1

)

(15)

基本知識(確率・統計の復習)

平均

µ

,分散

σ 2

,標準偏差

σ

確率分布: 一様分布,正規分布

擬似乱数の生成

最尤推定

同時確率,条件付き確率

マルコフ的情報源

ベイズの公式,事前確率・事後確率

事後確率最大化

動的計画法

(16)

確率,条件付き確率

B

1 (風邪)

B

2 (風邪なし)

p(A

i

) A

1 (熱あり)

0.55 0.05 0.60 A

2 (熱なし)

0.10 0.30 0.40

p(B

j

) 0.65 0.35

同時確率

p(A

1

, B

1

) = 0.55

周辺確率

p(A

1

) = ∑

i

p(A

1

, B

i

) = p(A

1

) = 0.6

条件付き確率

熱の有無を知る ⇒ 風邪であるかどうか検討がつく:

p(B

1

| A

1

) = p(B

1

)p(A

1

| B

1

)

p(A

1

) = p(A

1

, B

1

)

p(A

1

) = 0.55

0.6 0.92

(17)

ベイズの公式

ベイズの公式

熱があったとしよう. その時,風邪のあるなしの確率

p(B

1

| A

1

) = p(B

1

)p(A

1

| B

1

)

p(A

1

) = p(A

1

, B

1

)

p(A

1

) = 0.55

0.6 0.92

p(B

2

| A

1

) = p(B

2

)p(A

1

| B

2

)

p(A

1

) = p(A

1

, B

2

)

p(A

1

) = 0.05

0.6 0.08

事後確率最大化(ベイズ推定)

argmax

i

p(B

i

| A

1

) = 1

風邪であることの方が確率が大 ⇒ 風邪であると推定 入力(観測値): 熱のあるなし

⇒ 出力(推定値) 風邪かどうか

(18)

ここから

(19)

マルコフ的情報源

0.99

0.97 0.01

0.03

0 1

000000001111111111000000000

p(x) = 0.5 × 0.99 × 0.99 × 0.99 × 0.99 · · ·

p(x) = p(x 1 ) × p(x 2 | x 1 ) × p(x 3 | x 2 ) × p(x 4 | x 3 ) · · ·

(20)

マルコフ的情報源

0.99

0.97 0.01

0.03

0 1

000000001111111111000000000

p(x) = 0.5 × 0.99 × 0.99 × 0.99 × 0.99 · · ·

p(x) = p(x 1 ) × p(x 2 | x 1 ) × p(x 3 | x 2 ) × p(x 4 | x 3 ) · · ·

(21)

事後確率最大にする値

x MAP

-2 -1 0 1 2 3 4

0 50 100 150 200

t x

true

, y x

MAP

seed: 20070919 P (xMAP| y ) = 0.03118

P (xtrue| y ) = 0.00213 σ=0.7

(22)

使って良い知識

データ(観測値)

y = (y

1

, · · · , y

n

)

モデル:

p(x), p(y | x)

p(x

1

) =

{ 0.5 if x

1

= 0 0.5 if x

1

= 1

p(x

i+1

| x

i

) =

 

 

 

0.99 if x

i

= 0, x

i+1

= 0 0.01 if x

i

= 0, x

i+1

= 1 0.97 if x

i

= 1, x

i+1

= 1 0.03 if x

i

= 1, x

i+1

= 0

p(y

i

| x

i

) = 1

2πσ exp {

(y

i

x

i

)

2

2

}

以降,この課題では,特に指定しない限り

σ = 0.7

(23)

事後確率最大化

x = argmax

x

p(x | y)

p(x | y)

は知らない.

p(x), p(y | x)

は与えられている.

p(x | y) = p(x, y)

p(y)

(ベイズの公式)

= p(x)p(y | x) p(y)

y

は観測値 ⇒

p(y) > 0

は定数

x = argmax

x

p(x)p(y | x)

(24)

事後確率最大化

x = argmax

x

p(x | y)

p(x | y)

は知らない.

p(x), p(y | x)

は与えられている.

p(x | y) = p(x, y)

p(y)

(ベイズの公式)

= p(x)p(y | x) p(y)

y

は観測値 ⇒

p(y) > 0

は定数

x = argmax

x

p(x)p(y | x)

(25)

事後確率

p(x | y )

の最大化

x

1

x

2

x

3

x

n-1

x

n

y

1

y

2

y

3

y

n-1

y

n

x

= argmax

x1,x2,···,xn

p(x

1

, x

2

, · · · , x

n

, y

1

, y

2

, · · · , y

n

)

x

= argmax

x1,x2,···,xn

p(x

1

)

n i=2

p(x

i

| x

i1

)

n i=1

p(y

i

| x

i

)

(26)

事後確率最大にする値

x MAP

-2 -1 0 1 2 3 4

0 50 100 150 200

t x

true

, y x

MAP

seed: 20070919 P (xMAP| y ) = 0.03118

P (xtrue| y ) = 0.00213 σ=0.7

(27)

事後確率

p(x | y )

の最大化

x

1

x

2

x

3

x

n-1

x

n

y

1

y

2

y

3

y

n-1

y

n

x

= argmax

x1,x2,···,xn

p(x

1

, x

2

, · · · , x

n

, y

1

, y

2

, · · · , y

n

)

x

= argmax

x1,x2,···,xn

p(x

1

)

n i=2

p(x

i

| x

i1

)

n i=1

p(y

i

| x

i

)

この絵と式だけで解ける仕組みが理解できる!

(28)

これ以降,しばらくは補足.

式を使って説明すればこうなる というだけの話.

(29)

事後確率最大化

x

1

x

2

x

3

x

n-1

x

n

y

1

y

2

y

3

y

n-1

y

n

x

= argmax

x

p(x)p(y | x)

= argmax

x

p(x

1

)

n i=2

p(x

i

| x

i1

)

n i=1

p(y

i

| x

i

)

= argmax

x

log p(x

1

) +

n i=2

log p(x

i

| x

i1

) +

n i=1

log p(y

i

| x

i

)

(30)

事後確率最大化

x

1

x

2

x

3

x

n-1

x

n

y

1

y

2

y

3

y

n-1

y

n

J = log p(x

1

) +

n

i=2

log p(x

i

| x

i−1

) +

n

i=1

log p(y

i

| x

i

)

= log p(x

1

) + log p(y

1

| x

1

) +

n−1

i=1

{

log p(x

i+1

| x

i

) + log p(y

i+1

| x

i+1

) }

y

iは定数(与えられたデータ,変えられない)

= f

1

(x

1

) + h

1

(x

1

, x

2

) + h

2

(x

2

, x

3

) + · · · + h

n−1

(x

n−1

, x

n

)

f

1

(x

1

) = log p(x

1

) + log p(y

1

| x

1

)

h

i

(x

i

, x

i+1

) = log p(x

i+1

| x

i

) + log p(y

i+1

| x

i+1

)

(31)

事後確率最大化

x

1

x

2

x

3

x

n-1

x

n

y

1

y

2

y

3

y

n-1

y

n

J = log p(x

1

) +

n

i=2

log p(x

i

| x

i−1

) +

n

i=1

log p(y

i

| x

i

)

= log p(x

1

) + log p(y

1

| x

1

) +

n−1

i=1

{

log p(x

i+1

| x

i

) + log p(y

i+1

| x

i+1

) }

y

iは定数(与えられたデータ,変えられない)

= f

1

(x

1

) + h

1

(x

1

, x

2

) + h

2

(x

2

, x

3

) + · · · + h

n−1

(x

n−1

, x

n

)

f

1

(x

1

) = log p(x

1

) + log p(y

1

| x

1

)

h (x , x ) = log p(x | x ) + log p(y | x )

(32)

基本知識(確率・統計の復習)

平均

µ

,分散

σ 2

,標準偏差

σ

確率分布: 一様分布,正規分布

擬似乱数の生成

最尤推定

同時確率,条件付き確率

マルコフ的情報源

ベイズの公式,事前確率・事後確率

事後確率最大化

動的計画法

(33)

動的計画法

x1 x2 x3 xn-1 xn

y1 y2 y3 yn-1 yn

J = log p(x

1

) + log p(y

1

| x

1

) +

n−1

i=1

{

log p(x

i+1

| x

i

) + log p(y

i+1

| x

i+1

) }

= f

1

(x

1

) + h

1

(x

1

, x

2

) + h

2

(x

2

, x

3

) + · · · + h

n−1

(x

n−1

, x

n

)

x

1 に着目 ⇒

f

1

(x

1

), h

1

(x

1

, x

2

)

にしか関係しない

f

1

(x

1

) + h

1

(x

1

, x

2

)

を最大にするよう

x

1 を選ぶ

x

2の値がわかっていないければ選べない

そこで,x2の可能なすべての値(0,

1)に対して,以下を計算

f

2

(x

2

) = max

x1

{ f

1

(x

1

) + h

1

(x

1

, x

2

) } ˆ

x

1

(x

2

) = argmax

x1

{ f

1

(x

1

) + h

1

(x

1

, x

2

) }

J = f

2

(x

2

) + h

2

(x

2

, x

3

) + · · · + h

n1

(x

n1

, x

n

)

(34)

動的計画法

x1 x2 x3 xn-1 xn

y1 y2 y3 yn-1 yn

J = log p(x

1

) + log p(y

1

| x

1

) +

n−1

i=1

{

log p(x

i+1

| x

i

) + log p(y

i+1

| x

i+1

) }

= f

1

(x

1

) + h

1

(x

1

, x

2

) + h

2

(x

2

, x

3

) + · · · + h

n−1

(x

n−1

, x

n

)

x

1 に着目 ⇒

f

1

(x

1

), h

1

(x

1

, x

2

)

にしか関係しない

f

1

(x

1

) + h

1

(x

1

, x

2

)

を最大にするよう

x

1 を選ぶ

x

2の値がわかっていないければ選べない

そこで,x2の可能なすべての値(0,

1)に対して,以下を計算

f

2

(x

2

) = max

x1

{ f

1

(x

1

) + h

1

(x

1

, x

2

) } ˆ

x

1

(x

2

) = argmax

x1

{ f

1

(x

1

) + h

1

(x

1

, x

2

) }

J = f

2

(x

2

) + h

2

(x

2

, x

3

) + · · · + h

n1

(x

n1

, x

n

)

(35)

動的計画法

x1 x2 x3 xn-1 xn

y1 y2 y3 yn-1 yn

J = log p(x

1

) + log p(y

1

| x

1

) +

n−1

i=1

{

log p(x

i+1

| x

i

) + log p(y

i+1

| x

i+1

) }

= f

1

(x

1

) + h

1

(x

1

, x

2

) + h

2

(x

2

, x

3

) + · · · + h

n−1

(x

n−1

, x

n

)

x

1 に着目 ⇒

f

1

(x

1

), h

1

(x

1

, x

2

)

にしか関係しない

f

1

(x

1

) + h

1

(x

1

, x

2

)

を最大にするよう

x

1 を選ぶ

x

2の値がわかっていないければ選べない

そこで,x2の可能なすべての値(0,

1)に対して,以下を計算

f

2

(x

2

) = max

x1

{ f

1

(x

1

) + h

1

(x

1

, x

2

) } ˆ

x

1

(x

2

) = argmax

x1

{ f

1

(x

1

) + h

1

(x

1

, x

2

) }

J = f

2

(x

2

) + h

2

(x

2

, x

3

) + · · · + h

n1

(x

n1

, x

n

)

(36)

動的計画法

x1 x2 x3 xn-1 xn

y1 y2 y3 yn-1 yn

J = log p(x

1

) + log p(y

1

| x

1

) +

n−1

i=1

{

log p(x

i+1

| x

i

) + log p(y

i+1

| x

i+1

) }

= f

1

(x

1

) + h

1

(x

1

, x

2

) + h

2

(x

2

, x

3

) + · · · + h

n−1

(x

n−1

, x

n

)

x

1 に着目 ⇒

f

1

(x

1

), h

1

(x

1

, x

2

)

にしか関係しない

f

1

(x

1

) + h

1

(x

1

, x

2

)

を最大にするよう

x

1 を選ぶ

x

2の値がわかっていないければ選べない

そこで,x2の可能なすべての値(0,

1)に対して,以下を計算

f

2

(x

2

) = max

x1

{ f

1

(x

1

) + h

1

(x

1

, x

2

) } ˆ

x

1

(x

2

) = argmax

x1

{ f

1

(x

1

) + h

1

(x

1

, x

2

) }

J = f (x ) + h (x , x ) + · · · + h

(x

, x )

(37)

動的計画法

x1 x2 x3 xn-1 xn

y1 y2 y3 yn-1 yn

J = f

2

(x

2

) + h

2

(x

2

, x

3

) + · · · + h

n1

(x

n1

, x

n

)

変数の数が

1

つ減った.これを続けていけばよい.

x

2 に着目 ⇒

f

2

(x

2

), h

2

(x

2

, x

3

)

にしか関係しない

f

2

(x

2

) + h

2

(x

2

, x

3

)

を最大にするよう

x

2 を選ぶ

x

3の値がわかっていないければ選べない

そこで,x3の可能なすべての値(0,

1)に対して,以下を計算

f

3

(x

3

) = max

x2

{ f

2

(x

2

) + h

2

(x

2

, x

3

) } ˆ

x

2

(x

3

) = argmax

x2

{ f

2

(x

2

) + h

2

(x

2

, x

3

) }

(38)

動的計画法

x1 x2 x3 xn-1 xn

y1 y2 y3 yn-1 yn

J = f

n−1

(x

n−1

) + h

n−1

(x

n−1

, x

n

)

x

nの可能なすべての値(0,

1)に対して,以下を計算

f

n

(x

n

) = max

xn−1

{ f

n−1

(x

n−1

) + h

n−1

(x

n−1

, x

n

) } ˆ

x

n−1

(x

n

) = argmax

xn−1

{ f

n−1

(x

n−1

) + h

n−1

(x

n−1

, x

n

) }

x

n

= argmax

xn

f

n

(x

n

)

(39)

動的計画法

x1 x2 x3 xn-1 xn

y1 y2 y3 yn-1 yn

x

n

= argmax

xn

f

n

(x

n

)

x

n1

= ˆ x

n−1

(x

n

)

x

n2

= ˆ x

n−2

(x

n1

)

· · · → x

1

= ˆ x

1

(x

2

)

(40)

動的計画法

x1 x2 x3 xn-1 xn

y1 y2 y3 yn-1 yn

x

n

= argmax

xn

f

n

(x

n

)

x

n1

= ˆ x

n−1

(x

n

)

x

n2

= ˆ x

n−2

(x

n1

)

· · · → x

1

= ˆ x

1

(x

2

)

(41)

動的計画法

x1 x2 x3 xn-1 xn

y1 y2 y3 yn-1 yn

x

n

= argmax

xn

f

n

(x

n

)

x

n1

= ˆ x

n−1

(x

n

)

x

n2

= ˆ x

n−2

(x

n1

)

· · · → x

1

= ˆ x

1

(x

2

)

(42)

口頭試問について

(43)

口頭試問について

x

1

x

2

x

3

x

n-1

x

n

y

1

y

2

y

3

y

n-1

y

n

上記の絵を使い,「問題設定 ↓」から説明をはじめる.

線を結ぶ両端の○に値が入ると,棒に値が付く

それを全部掛け算した値を最大にしたい

下の○の値は与えられている.

上の○には

0,1

が入る.全部で

2

200通り

どうする?

(以降,自分の言葉で説明)

解ける仕組みを「本当に分かった!」ことをアピールせよ.

怪しい点があれば,途中で何度も止めて,質問します.

最速

3

分以内に終了

(44)

コードを書く際に

「データ構造」と「アルゴリズム」

(45)

データ構造

i = 0, · · · , 199, a = 0, 1

x

i

· · · int x[i]

真の値

y

i

· · · double y[i]

観測データ

x ˆ

i

· · · int xhat[i]

推定値

f

i

(x

i

) · · · double C[i][a]

i

番目の変数の値が

x

i

= a

のとき,そこまでに至る最 適経路の尤もらしさ.

x ˆ

i

(x

i+1

) · · · int S[i][a]

x

i+1

= a

のとき,

x

i が取るべき値

(46)

データ構造

Y0 Y1

X0 X1 X199

Y199 C[3][1]

X4 1

f

i

(x

i

) · · · double C[i][a]

i

番目の変数の値が

x

i

= a

のとき,そこまでに至る最適経路の尤 もらしさ.

Y0 Y1

X0 X1 X199

Y199 S[3][1]

1 X4

x ˆ

i

(x

i+1

) · · · int S[i][a]

x

i+1

= a

のとき,

x

i が取るべき値

(47)

もとの信号

x true

と観測値

y

の生成

-2 -1 0 1 2 3 4

0 50 100 150 200

t x

true

, y

seed: 20070919 σ=0.7

まずは,こんな図を自分で作ることからはじめる 平均

x

標準偏差

σ

の正規分布にしたがう乱数の生成

(48)

最大化のコードを書く際に

対数尤度の計算

log

をとるのはコンピュータにはさせない.

p(y i | x i ) = 1

2πσ exp {

(y i x i ) 22

}

, σ = 0.7 log p(y i | x i ) = · · · ·

C[0][0] = -(y[0]-0.0)*(y[0]-0.0)/(2.0*SIGMA*SIGMA) C[0][1] = -(y[0]-1.0)*(y[0]-1.0)/(2.0*SIGMA*SIGMA)

なるべくムダな計算はしない

(最大化に関係ない定数は省略できる)

(49)

参照

関連したドキュメント

それゆえ、この条件下では光学的性質はもっぱら媒質の誘電率で決まる。ここではこのよ

このように、このWの姿を捉えることを通して、「子どもが生き、自ら願いを形成し実現しよう

ヒュームがこのような表現をとるのは当然の ことながら、「人間は理性によって感情を支配

としても極少数である︒そしてこのような区分は困難で相対的かつ不明確な区分となりがちである︒したがってその

﹁空廻り﹂説 以じを集約すれば︑

自然言語というのは、生得 な文法 があるということです。 生まれつき に、人 に わっている 力を って乳幼児が獲得できる言語だという え です。 語の それ自 も、 から

・私は小さい頃は人見知りの激しい子どもでした。しかし、当時の担任の先生が遊びを

イ  日常生活や社会で数学を利用する活動  ウ  数学的な表現を用いて,根拠を明らかにし筋.