確率的生成モデル
http://www.cs.miyazaki-u.ac.jp/~date/
伊達 章
宮崎大学 工学部 情報システム工学科
2020
年7
月28
日1 / 21
講義のスケジュール(案)
9.
統計的最適化に必要な基礎知識•
最終課題の概要•
確率,正規分布,最尤推定,対数尤度•
疑似乱数,乱数の種とは• Python
で乱数生成10.
同時確率,周辺確率,条件付確率,ベイズ推論,事後確率最大化11.
動的計画法12.
動くコードを完成させる方法13.
プログラミング実践(C言語,Python)14.
自由課題について.少し高度な話題:事後確率の具体的な計算15.
まとめ(レポート講評)本講義の(真の)ねらい
単純な課題を通して,これまでならったことの理解をとことん深める
•
アルゴリズムとデータ構造「データ構造」の大切さ.動的計画法とは.
•
確率・統計,情報理論.確率と情報の親密性.正規分布(ガウス分布),ベイズの公式.
事前確率,事後確率.事後確率最大化
•
数値計算コンピュータで乱数をどう発生させるか.疑似乱数.乱数の種
(seed).事後確率値の計算(アンダーフローを防ぐには)
•
ソフトウェア工学どう設計するか.変数の名前の付け方.プログラムの構造.実験 の仕方.テストコード.
•
パターン認識(単なるノイズ除去の問題ではない),脳の情報処理•
コミュニケーション:問題設定の理解(全体像と詳細),簡潔な口 頭説明,レポート執筆(事実と考察の記述,問題発見,自問自答)•
目標:
動くコードを完成させる.自分一人で.3 / 21
講義のスケジュール(案)
9.
統計的最適化に必要な基礎知識•
最終課題の概要•
確率,正規分布最尤推定,対数尤度•
疑似乱数,乱数の種とは• Python
で乱数生成10.
同時確率,周辺確率,条件付確率,ベイズ推論,事後確率最大化11.
動的計画法12.
動くコードを完成させる方法13.
プログラミング実践(C言語,Python)14.
自由課題について.少し高度な話題:事後確率の具体的な計算15.
まとめ(レポート講評)確率的生成モデルの実験
-2 -1 0 1 2 3 4
0 50 100 150 200
t x true , y x
MAPseed: 20070919
P (x
MAP| y ) = 0.03118
P (x
true| y ) = 0.00213 σ=0.7
5 / 21
事後確率最大化
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 i − 1 )
∏ n
i=1
p(y i | x i )
= argmax
x
log p(x 1 ) +
∑ n
i=2
log p(x i | x i−1 ) +
∑ n
i=1
log p(y i | x i )
別の方法と性能を比較する
-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 i > 0.5
ならx i = 1
と推定•
貪欲法(Greedy Method)•
並列処理で求める方法•
周辺事後確率最大化• · · ·
x
1x
2x
3x
n-1x
ny
1y
2y
3y
n-1y
n7 / 21
並列処理で事後確率最大化
x 1 x 2 x 3 x n-1 x n
y 1 y 2 y 3 y n-1 y n
•
初期設定:x1
からx 200
に適当に0, 1
を代入.• n = 200
個のうち,どれか一つをランダムに選び(kとする),他は固定し
x k
の値を(確率的に)更新.これをひたすら繰り返す.•
いつかは,事後確率を最大にする値にたどり着く(?).どのく らいの更新回数で,どのくらいよい推定ができるか.周辺事後確率最大化
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 i
−1 )
∏ n i=1
p(y i | x i )
•
周辺事後確率最大化:x
†k = argmax
x
kp(x k | y)
x
†k = argmax
x
k∑
x
1∑
x
2· · · ∑
x
k−1∑
x
k+1· · · ∑
x
n−1∑
x
np(x)p(y | x) (k = 1, · · · , n)
9 / 21
本講義の(真の)ねらい
単純な課題を通して,これまでならったことの理解をとことん深める
•
アルゴリズムとデータ構造「データ構造」の大切さ.動的計画法とは.
•
確率・統計,情報理論.確率と情報の親密性.正規分布(ガウス分布),ベイズの公式.
事前確率,事後確率.事後確率最大化
•
数値計算コンピュータで乱数をどう発生させるか.疑似乱数.乱数の種
(seed).事後確率値の計算(アンダーフローを防ぐには)
•
ソフトウェア工学どう設計するか.変数の名前の付け方.プログラムの構造.実験 の仕方.テストコード.
•
パターン認識(単なるノイズ除去の問題ではない),脳の情報処理•
コミュニケーション:問題設定の理解(全体像と詳細),簡潔な口 頭説明,レポート執筆(事実と考察の記述,問題発見,自問自答)•
目標:
動くコードを完成させる.自分一人で.確率的生成モデル
与えられているもの
データ(観測値):
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σ 2
}
事後確率最大化:
x
∗= argmax
x
p(x | y)
・真の確率分布と解釈する際の確率分布が異なっていると...
・音声認識(
YouTube
で英語の動画を,字幕を日本語にして視聴する)11 / 21
知的なコンピュータのエンジン
•
生成モデル(Generative)
• Markov Random Fields
• Boltzmann Machines
• Generative Adversarial Networks (GAN)
• Generative Query Networks(GQN)
•
判別モデル(Discriminatve)
• Convolutional Deep Neural Networks
•
脳•
並列分散処理• · · ·
確率的生成モデル(脳)とパターン認識
データ(観測値):
y = (y 1 , · · · , y n )
モデル:p(x), p(y | x) ⇐ =
事前分布x
は見えない(脳の中,hidden),yは見える(visible).• y ∼ p(y | x)p(x)
二度と同じものは現れない
•
認識・思考・推論:x
∗= argmax
x
p(x | y)
•
知識・記憶p(x; θ)
• Mind’s eye
,夜見る夢p(x; θ)
• · · ·
•
知的なコンピュータを開 発するヒントは脳の中に ある.ただし,なかなかわ からない....13 / 21
講義のスケジュール(案)
9.
統計的最適化に必要な基礎知識•
最終課題の概要•
確率,正規分布最尤推定,対数尤度•
疑似乱数,乱数の種とは,• Python
で乱数生成10.
同時確率,周辺確率,条件付確率,ベイズ推論,事後確率最大化11.
動的計画法12.
動くコードを完成させる方法13.
プログラミング実践(C言語,Python)14.
自由課題について.少し高度な話題:事後確率の具体的な計算15.
まとめ(レポート講評)事後確率値の計算
-2 -1 0 1 2 3 4
0 50 100 150 200
t x true , y x
MAPseed: 20070919
P (x
MAP| y ) = 0.03118
P (x
true| y ) = 0.00213 σ=0.7
15 / 21
事後確率の具体的な計算
x 1 x 2 x 3 x n-1 x n
y 1 y 2 y 3 y n-1 y n
p(x | y) = p(x, y)
p(y) = p(x)p(y | x)
∑
˜
xp( ˜ x)p(y | x) ˜
•
分母のp(y)
を無視できない(事後確率最大化のときとは異なる)•
分母:2 n
個の和を計算する必要がある• p(x MAP | y)
といえども,値が小さい.(∑
x
p(x | y) = 1)
事後確率の具体的な計算
1
p(x | y) = p(y) p(x, y) =
∑
˜ x
p(˜ x, ⃗ y) p(x, y)
=
∑
i
1,i
2,i
3,
···,i
Np i
1,i
2p i
2,i
3q i
1,y
1q i
2,y
2q i
3,y
3· · · q i
N,y
Np x
1,x
2p x
2,x
3q x
1,y
1q x
2,y
2q x
3,y
3· · · q x
N,y
N=
∑
i
Nq i
N,y
Nq x
N,y
N· · ·
∑
i
3p i
3,i
4q i
3,y
3p x
3,x
4q x
3,y
3∑
i
2p i
2,i
3q i
2,y
2p x
2,x
3q x
2,y
2∑
i
1p i
1,i
2q i
1,y
1p x
1,x
2q x
1,y
1=
∑
i
Nq i
N,y
Nq x
N,y
N· · ·
∑
i
3p i
3,i
4q i
3,y
3p x
3,x
4q x
3,y
3∑
i
2p i
2,i
3q i
2,y
2r 2 (i 2 ) p x
2,x
3q x
2,y
2=
∑
i
Nq i
N,y
Nq x
N,y
N· · ·
∑
i
3p i
3,i
4q i
3,y
3r 3 (i 3 ) p x
3,x
4q x
3,y
3=
∑
i
Nq i
N,y
Nr N (i N )
q x
N,y
Nここで
r 2 (i 2 ) =
∑
i
1p i
1,i
2q i
1,y
1p x
1,x
2q x
1,y
1 でありr t (i t ) =
∑
i
t−1p i
t−1,i
tq i
t−1,y
t−1r t
−1 (i t
−1 )
p x
t−1,x
tq x
t−1,y
t−1である(
t = 3, · · · , n
).17 / 21
事後確率の具体的な計算
1
p(x | y) = p(y) p(x, y) =
∑
˜ x
p(˜ x, ⃗ y) p(x, y)
=
∑
i
1,i
2,i
3,
···,i
Np i
1,i
2p i
2,i
3q i
1,y
1q i
2,y
2q i
3,y
3· · · q i
N,y
Np x
1,x
2p x
2,x
3q x
1,y
1q x
2,y
2q x
3,y
3· · · q x
N,y
N=
∑
i
Nq i
N,y
Nq x
N,y
N· · ·
∑
i
3p i
3,i
4q i
3,y
3p x
3,x
4q x
3,y
3∑
i
2p i
2,i
3q i
2,y
2p x
2,x
3q x
2,y
2∑
i
1p i
1,i
2q i
1,y
1p x
1,x
2q x
1,y
1=
∑
i
Nq i
N,y
Nq x
N,y
N· · ·
∑
i
3p i
3,i
4q i
3,y
3p x
3,x
4q x
3,y
3∑
i
2p i
2,i
3q i
2,y
2r 2 (i 2 ) p x
2,x
3q x
2,y
2=
∑
i
Nq i
N,y
Nq x
N,y
N· · ·
∑
i
3p i
3,i
4q i
3,y
3r 3 (i 3 ) p x
3,x
4q x
3,y
3=
∑
i
Nq i
N,y
Nr N (i N )
q x
N,y
Nここで
r 2 (i 2 ) =
∑
i
1p i
1,i
2q i
1,y
1p x
1,x
2q x
1,y
1 でありr t (i t ) =
∑
i
t−1p i
t−1,i
tq i
t−1,y
t−1r t
−1 (i t
−1 ) p x
t−1,x
tq x
t−1,y
t−1である(
t = 3, · · · , n
).講義のスケジュール(案)
9.
統計的最適化に必要な基礎知識•
最終課題の概要•
確率,正規分布最尤推定,対数尤度•
疑似乱数,乱数の種とは,• Python
で乱数生成10.
同時確率,周辺確率,条件付確率,ベイズ推論,事後確率最大化11.
動的計画法12.
動くコードを完成させる方法13.
プログラミング実践(C言語,Python)14.
自由課題について.少し高度な話題:事後確率の具体的な計算•
上位4
つの候補を表示•
事後確率分布p(x | y)
からのサンプリング(動的計画法)• · · ·
15.
まとめ(レポート講評)19 / 21
レポートの執筆
•
提出締切8/3(月) 18:00
(ともかく提出)•
実験しながら執筆(実験手法,原理)•
考察:問題発見の練習.問題を発見することが大事.•
丁寧に記述する.•
提出する前に読み直す終