Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
確率的プログラミング入門
Search
NearMeの技術発表資料です
PRO
November 01, 2024
2
110
確率的プログラミング入門
NearMeの技術発表資料です
PRO
November 01, 2024
Tweet
Share
More Decks by NearMeの技術発表資料です
See All by NearMeの技術発表資料です
Rustで作る強化学習エージェント
nearme_tech
PRO
0
27
ビームサーチ
nearme_tech
PRO
0
30
WASM入門
nearme_tech
PRO
0
32
ESLintをもっと有効活用しよう
nearme_tech
PRO
0
23
リファクタリングのための第一歩
nearme_tech
PRO
0
63
ガウス過程回帰とベイズ最適化
nearme_tech
PRO
1
180
Observability and OpenTelemetry
nearme_tech
PRO
2
43
観察研究における因果推論
nearme_tech
PRO
1
160
React
nearme_tech
PRO
2
53
Featured
See All Featured
The Cost Of JavaScript in 2023
addyosmani
47
7.3k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
45
9.4k
Code Reviewing Like a Champion
maltzj
521
39k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
330
21k
Bash Introduction
62gerente
611
210k
Building Adaptive Systems
keathley
40
2.4k
Embracing the Ebb and Flow
colly
84
4.6k
Facilitating Awesome Meetings
lara
52
6.2k
How to train your dragon (web standard)
notwaldorf
91
5.8k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
7.1k
Agile that works and the tools we love
rasmusluckow
328
21k
Designing for Performance
lara
604
68k
Transcript
0 確率的プログラミング⼊⾨ 2024-11-01 第107回NearMe技術勉強会 Takuma KAKINOUE
1 概要 • 確率的プログラミングとは ◦ ある統計モデルに従う変数に対して,具体的な値が未定の状態(サンプリング 前の状態)でも演算が適⽤可能なプログラミングパラダイムのこと ▪ 具体的に⾔うと,例えばガンマ分布に従う変数X,Yを定義した場合, X,Yに対して四則演算(ex.
X*2, X+Y)を実⾏すると,内部で⾃動的に 統計モデルの更新が⾏われサンプリング時に演算が反映されている ◦ ベイズ統計モデリングがよく⽤いられる • 今回やること ◦ ベイズ推定について解説 ◦ MCMC(マルコフ連鎖モンテカルロ法)について解説 ◦ PyMCのサンプルコードを動かす
2 ベイズ推定 • 最尤推定との違い ◦ 推定したいパラメータθを定数として出⼒するのが最尤推定 ◦ θを確率変数と⾒て,θが従う確率分布を出⼒するのがベイズ推定 ▪ 何かしらの確率分布(事前分布)を仮定し,観測されたデータセットに
フィッティングするように事前分布を更新することで事後分布を得る • ベイズ推定のイメージ ◦ (注意)フリーハンド なので謎な確率分布 になっています!
3 ベイズ推定 • ベイズの定理を⽤いて事前分布と事後分布の関係を式で表す • 事前分布と事後分布が同じ形の分布になる場合 ◦ 解析的に事後分布を求められる! → 共役事前分布と呼ぶ
分母の積分計算が 難しい場合は, MCMC で近似!
4 ベイズ推定 • 共役事前分布の例(ベータ⼆項分布) • 共役事前分布が存在しない場合の近似⼿法 → MCMC(マルコフ連鎖モンテカルロ),スライドp.7から解説!
5 (補⾜)ベイズ推定と最尤推定 • ベータ⼆項分布におけるpの期待値を算出(最頻値を推定量にすることもある) • 最尤推定と異なり,a,bの項(事前知識)を加味している ◦ つまり,データ数が少ないときは観測データを信じすぎないとも⾔える • また,データ数が⼗分多ければベイズ推定量はx/n(UMVUE)に近づく!
6 MCMC(マルコフ連鎖モンテカルロ法,Markov Chain Monte Carlo methods) • 前提理論 つまり,事後分布からサンプリングされる任意のθの確率密度は, ”尤度関数L(x,θ)と事前分布の積”にそのθを代⼊した値に⽐例する!
→”尤度関数L(x,θ)と事前分布の積”から事後分布を⽣成できる!
7 MCMC(マルコフ連鎖モンテカルロ法,Markov Chain Monte Carlo methods) 概念的なアルゴリズム 1. 初期位置を決める 2.
「現在位置」から「次に遷移する位置」を確率的に決める 3. 「現在位置の確率密度」より「2で決めた次の位置の確率密度」が ⼤きければ確率1で遷移し,⼩さければ確率qで遷移する 4. iteration数を+1して,最⼤iteration数に達していなければ2に戻る 5. 遷移の軌跡から最初の数千個(バーンイン期間)を取り除き,残りの軌跡を出⼒する
8 サンプルコードを動かす • 今回使うライブラリ → PyMC • サンプルコード(参考⽂献から引⽤) ◦ https://github.com/CamDavidsonPilon/Probabilistic-Programming-and-Bayesi
an-Methods-for-Hackers ▪ 今回は,Chapter1のコードを解説 ▪ notebookを読むだけでもすごく勉強になるのでオススメ!
9 参考⽂献(サンプルコードを引⽤) • Pythonで体験するベイズ推論 ◦ https://www.morikita.co.jp/books/ mid/007791
10 Thank you