確率的生成モデル
伊達 章
宮崎大学 工学部 情報システム工学科
2020
年7
月7
日 (11/15
)観測データ(時系列)
-2 -1 0 1 2 3 4
0 50 100 150 200
t
y
seed: 20070919 σ=0.7
もとの信号は
0
か1
.復元したい!観測データ(時系列)
-2 -1 0 1 2 3 4
0 50 100 150 200
t
y
seed: 20070919 σ=0.7
もとの信号は
0
か1
.復元したい!観測データ(時系列)
-2 -1 0 1 2 3 4
0 50 100 150 200
t x
true, y
seed: 20070919 σ=0.7
もとの信号は
0
か1
.復元したい!もとの信号
x true
-2 -1 0 1 2 3 4
0 50 100 150 200
t x
trueseed: 20070919 σ=0.7
マルコフ的情報源
マルコフ的情報源
0.99
0.97 0.01
0.03
0 1
000000001111111111000000000
マルコフ的情報源
0.99
0.97 0.01
0.03
0 1
000000001111111111000000000
観測データ
y
(時系列)-2 -1 0 1 2 3 4
0 50 100 150 200
t
y
seed: 20070919 σ=0.7
多段決定問題
多変数関数
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
2n−1) max
if (x
i) = f(x
k), argmax
i
f(x
i) = k
多段決定問題
多変数関数
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
2n−1) max
if (x
i) = f(x
k), argmax
i
f (x
i) = k
多段決定問題
多変数関数
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
30x 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
30111 · · · 111 f(x
2n−1)
課題
•
例題:n = 200, y = (y 1 , · · · , y n )
•
目的:x ∗ = argmax
x
f (x), x i ∈ { 0, 1 }
の計算•
まもとには計算できない.•
動的計画法を使い,この問題を解決する.•
仕組み理解し,コードを書き,問題を解く.事後確率最大にする値
x MAP
-2 -1 0 1 2 3 4
0 50 100 150 200
t x
true, y x
MAPseed: 20070919 P (xMAP| y ) = 0.03118
P (xtrue| y ) = 0.00213 σ=0.7
多段決定問題
多変数関数の最大化
J = p(x | y) → max
n = 200, x
i∈ { 0, 1 }
の場合.2
200= (2
10)
20≈ (10
3)
20= 10
60x 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
60111 · · · 111 f(x
2n−1)
基本知識(確率・統計の復習)
•
平均µ
,分散σ 2
,標準偏差σ
•
確率分布: 一様分布,正規分布•
擬似乱数の生成•
最尤推定•
同時確率,条件付き確率•
マルコフ的情報源•
ベイズの公式,事前確率・事後確率•
事後確率最大化•
動的計画法確率,条件付き確率
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
ベイズの公式
•
ベイズの公式熱があったとしよう. その時,風邪のあるなしの確率
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
風邪であることの方が確率が大 ⇒ 風邪であると推定 入力(観測値): 熱のあるなし
⇒ 出力(推定値) 風邪かどうか
ここから
マルコフ的情報源
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 ) · · ·
マルコフ的情報源
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 ) · · ·
事後確率最大にする値
x MAP
-2 -1 0 1 2 3 4
0 50 100 150 200
t x
true, y x
MAPseed: 20070919 P (xMAP| y ) = 0.03118
P (xtrue| y ) = 0.00213 σ=0.7
使って良い知識
データ(観測値):
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)
22σ
2}
以降,この課題では,特に指定しない限り
σ = 0.7
.事後確率最大化
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)
事後確率最大化
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)
事後確率
p(x | y )
の最大化x
1x
2x
3x
n-1x
ny
1y
2y
3y
n-1y
nx
∗= 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=2p(x
i| x
i−1)
∏
n i=1p(y
i| x
i)
事後確率最大にする値
x MAP
-2 -1 0 1 2 3 4
0 50 100 150 200
t x
true, y x
MAPseed: 20070919 P (xMAP| y ) = 0.03118
P (xtrue| y ) = 0.00213 σ=0.7
事後確率
p(x | y )
の最大化x
1x
2x
3x
n-1x
ny
1y
2y
3y
n-1y
nx
∗= 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=2p(x
i| x
i−1)
∏
n i=1p(y
i| x
i)
この絵と式だけで解ける仕組みが理解できる!
これ以降,しばらくは補足.
式を使って説明すればこうなる というだけの話.
事後確率最大化
x
1x
2x
3x
n-1x
ny
1y
2y
3y
n-1y
nx
∗= argmax
x
p(x)p(y | x)
= argmax
x
p(x
1)
∏
n i=2p(x
i| x
i−1)
∏
n i=1p(y
i| x
i)
= argmax
x
log p(x
1) +
∑
n i=2log p(x
i| x
i−1) +
∑
n i=1log p(y
i| x
i)
事後確率最大化
x
1x
2x
3x
n-1x
ny
1y
2y
3y
n-1y
nJ = log p(x
1) +
∑
ni=2
log p(x
i| x
i−1) +
∑
ni=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)
事後確率最大化
x
1x
2x
3x
n-1x
ny
1y
2y
3y
n-1y
nJ = log p(x
1) +
∑
ni=2
log p(x
i| x
i−1) +
∑
ni=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 )
基本知識(確率・統計の復習)
•
平均µ
,分散σ 2
,標準偏差σ
•
確率分布: 一様分布,正規分布•
擬似乱数の生成•
最尤推定•
同時確率,条件付き確率•
マルコフ的情報源•
ベイズの公式,事前確率・事後確率•
事後確率最大化•
動的計画法動的計画法
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
n−1(x
n−1, x
n)
動的計画法
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
n−1(x
n−1, x
n)
動的計画法
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
n−1(x
n−1, x
n)
動的計画法
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 )
動的計画法
x1 x2 x3 xn-1 xn
y1 y2 y3 yn-1 yn
J = f
2(x
2) + h
2(x
2, x
3) + · · · + h
n−1(x
n−1, 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) }
動的計画法
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)
動的計画法
x1 x2 x3 xn-1 xn
y1 y2 y3 yn-1 yn
• x
∗n= argmax
xn
f
n(x
n)
• x
∗n−1= ˆ x
n−1(x
∗n)
• x
∗n−2= ˆ x
n−2(x
∗n−1)
• · · · → x
∗1= ˆ x
1(x
∗2)
動的計画法
x1 x2 x3 xn-1 xn
y1 y2 y3 yn-1 yn
• x
∗n= argmax
xn
f
n(x
n)
• x
∗n−1= ˆ x
n−1(x
∗n)
• x
∗n−2= ˆ x
n−2(x
∗n−1)
• · · · → x
∗1= ˆ x
1(x
∗2)
動的計画法
x1 x2 x3 xn-1 xn
y1 y2 y3 yn-1 yn
• x
∗n= argmax
xn
f
n(x
n)
• x
∗n−1= ˆ x
n−1(x
∗n)
• x
∗n−2= ˆ x
n−2(x
∗n−1)
• · · · → x
∗1= ˆ x
1(x
∗2)
口頭試問について
口頭試問について
x
1x
2x
3x
n-1x
ny
1y
2y
3y
n-1y
n•
上記の絵を使い,「問題設定 ↓」から説明をはじめる.•
線を結ぶ両端の○に値が入ると,棒に値が付く•
それを全部掛け算した値を最大にしたい•
下の○の値は与えられている.•
上の○には0,1
が入る.全部で2
200通り•
どうする?→
(以降,自分の言葉で説明)•
解ける仕組みを「本当に分かった!」ことをアピールせよ.•
怪しい点があれば,途中で何度も止めて,質問します.•
最速3
分以内に終了コードを書く際に
「データ構造」と「アルゴリズム」
データ構造
• 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 が取るべき値データ構造
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 が取るべき値もとの信号
x true
と観測値y
の生成-2 -1 0 1 2 3 4
0 50 100 150 200
t x
true, y
seed: 20070919 σ=0.7
まずは,こんな図を自分で作ることからはじめる 平均
x
標準偏差σ
の正規分布にしたがう乱数の生成最大化のコードを書く際に
•
対数尤度の計算log
をとるのはコンピュータにはさせない.p(y i | x i ) = 1
√ 2πσ exp {
− (y i − x i ) 2 2σ 2
}
, σ = 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)
•
なるべくムダな計算はしない(最大化に関係ない定数は省略できる)
終