2.5K Views
June 04, 22
スライド概要
Link: https://yuiga.dev/blog/posts/gibbs_mulnorm/
先日, 研究室の勉強会で この本 のGibbs Samplingの章(9.3.4)を担当しました. 実際にpythonで実装してみたりしたので, せっかくですから備忘録程度にまとめてみました.
なお, 数弱によるガバガバ数学が展開されておりますのでご了承ください.
@YuigaWada (和田唯我)
https://twitter.com/yuigawada
情報⼯学機械学習 §9.3.4 B3 和⽥唯我 2022/3/1
⽬次 • 9.3.4 条件付き確率 • a. 多次元正規分布における Gibbs Sampling • b. ブロック⾏列の逆⾏列の導出 • c. Demo: Gibbs Samplingの実装 2
⽬次 • 9.3.4 条件付き確率 • a. 多次元正規分布における Gibbs Sampling • b. ブロック⾏列の逆⾏列の導出 • c. Demo: Gibbs Samplingの実装 3
a. 特徴と⽬標の整理 • Gibbs Sampling の特徴 • ⼀次元だけサンプルを更新するので, 条件付き確率の計算が必要 → ⼀般に条件付き確率の計算は困難 • ⽬標 • 多次元正規分布における条件付き確率を計算し, Gibbs Samplingに具体的なア ルゴリズムの⼀例を与える. 4
a. 設定の整理 • ベクトル 𝒛 • ⼀次元だけサンプルを更新 • → 第⼀番⽬の変数 𝑥 とベクトル 𝒚 で構成されているとする • 平均・共分散⾏列・精度⾏列 • 以下のようにブロック⾏列で記述 5
a. 過程の整理 • アルゴリズム導出の流れ 1. 提案分布を正規分布 𝒩 µ, Σ とし, ⼀次元のみに着⽬ (→ 𝑥 ). 2. 𝑝 𝒛 𝝁, Σ (=: 𝑝 𝒚, 𝑥 )から 𝑝 𝑥 | 𝒚 を計算し, パラメタ µ!|# , σ$!|# を計算. 3. 𝑝 𝑥 | 𝒚 と 𝑝 𝑧% | 𝑧&'(& 𝑧$'(& '(& , … , 𝑧%)& ' , 𝑧%(& (') , … , 𝑧* との対応を与える. 6
a. 式の整理 • 𝒛 ~ 𝒩 µ, Σ のとき 𝑝 𝒛 𝝁, Σ は以下の通り • 共分散⾏列 Σを精度⾏列 Λ で書き換えると 7
a. パラメタ µ!|# , σ$!|# の計算 疑問: 𝑥 と 𝒚 って相関ゼロ? • パラメタ の計算 • σ$!|# → 𝑥 に関する2次の項と対応 • µ!|# → 𝑥 に関する1次の項と対応 • ⇒ 𝑝(𝒚) は 𝑥 に関与しないので 𝑝 𝒛 𝝁, Σ を 𝑥 について係数⽐較 8
a. パラメタ µ!|# , σ$!|# の計算 • 𝑝 𝒛 𝝁, Σ の 𝑒𝑥𝑝 内を 𝑥 について展開すると 9
a. パラメタ σ$!|# の計算 • 2次の項について 𝑝 𝒛 𝝁, Σ 𝑝(𝑥|𝒚) 10
a. パラメタ µ!|# の計算 • 1次の項について 𝑝 𝒛 𝝁, Σ 𝑝(𝑥|𝒚) 11
a. パラメタ µ!|# , σ$!|# の計算 • 求めた各パラメタは, 精度⾏列に依存している • → 精度⾏列を共分散⾏列で書き下す必要がある • ブロック⾏列の逆⾏列が問題となる • → ブロック⾏列の逆⾏列を求めよう 12
⽬次 • 9.3.4 条件付き確率 • a. 多次元正規分布における Gibbs Sampling • b. ブロック⾏列の逆⾏列の導出 • c. Demo: Gibbs Samplingの実装 13
b. ブロック⾏列の逆⾏列 – LDU分解 • ブロック⾏列Pをブロック⾏列 X, Y, Z, Wを⽤いてLDU分解する L (下三⾓) D (対⾓) U (上三⾓) • 逆⾏列といえばLU分解じゃない? • なんでここではLDU? • ブロック⾏列なのでUの対⾓⽅向のブロックを I にしたほうが楽 (個⼈的な感想) 14
b. ブロック⾏列の逆⾏列 – LDU分解 • Pの各ブロックと⽐較すれば, 以下のようにLDU分解が構成できる 15
b. ブロック⾏列の逆⾏列 – LDU分解 • 逆⾏列を求めるには, ブロック⾏列L,D,Uの逆⾏列が求まれば良い. 16
b. ブロック⾏列の逆⾏列 – LDU分解 • ブロック⾏列L,D,Uの逆⾏列 • 同じ形のブロック⾏列で, 4つのブロックを適当な⽂字に置けば求まる 17
b. ブロック⾏列の逆⾏列 – LDU分解 • ブロック⾏列L,D,Uの逆⾏列が求まったので, 所望の逆⾏列は • 各ブロックについて • Woodburyの公式が簡略化に有効 18
b. ブロック⾏列の逆⾏列 – Woodburyの公式 • Woodburyの公式 ブロック⾏列の逆⾏列 𝐷 ← −𝐷 −1 , 𝑇 ≔ 𝐴 − 𝐵𝐷 −1 𝐶 と置けば式が綺麗に 19
b. ブロック⾏列の逆⾏列 • よって, ブロック⾏列の逆⾏列は以下の式で与えられる ただし, 𝑇 = 𝐴 − 𝐵𝐷 −1 𝐶 20
b. ブロック⾏列の逆⾏列 – 結果 • 本題に戻ると… • 以上の議論より, 平均・分散に⽤いる精度⾏列のブロックは 21
⽬次 • 9.3.4 条件付き確率 • a. 多次元正規分布における Gibbs Sampling • b. ブロック⾏列の逆⾏列の導出 • c. Demo: Gibbs Samplingの実装 22
c. Demo: Gibbs Samplingの実装 23
c. Demo: Gibbs Samplingの実装 コードはgistに上げたので遊んでみてね ⇒ https://gist.github.com/YuigaWada/4929fc479027af6f05ef4950a093ba33 24