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
300
確率的プログラミング入門
NearMeの技術発表資料です
PRO
November 01, 2024
Tweet
Share
More Decks by NearMeの技術発表資料です
See All by NearMeの技術発表資料です
初めてのmarimo (ハンズオン)
nearme_tech
PRO
0
11
ローカルLLM
nearme_tech
PRO
0
17
LlamaIndex Workflow: Build Practical AI Agents Fast
nearme_tech
PRO
0
14
Box-Muller法
nearme_tech
PRO
1
23
Kiro触ってみた
nearme_tech
PRO
0
160
今だからこそ入門する Server-Sent Events (SSE)
nearme_tech
PRO
4
440
ReactNative のアップグレード作業が (意外に)楽しかった話
nearme_tech
PRO
2
110
強化学習アルゴリズムPPOの改善案を考えてみた
nearme_tech
PRO
0
60
Apple Containerについて調べて触ってみた
nearme_tech
PRO
0
660
Featured
See All Featured
Raft: Consensus for Rubyists
vanstee
140
7.2k
Balancing Empowerment & Direction
lara
5
760
It's Worth the Effort
3n
187
29k
Rails Girls Zürich Keynote
gr2m
95
14k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
36
6.1k
Product Roadmaps are Hard
iamctodd
PRO
55
12k
How to Think Like a Performance Engineer
csswizardry
28
2.3k
Documentation Writing (for coders)
carmenintech
76
5.1k
Code Reviewing Like a Champion
maltzj
527
40k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.5k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
51k
Java REST API Framework Comparison - PWX 2021
mraible
34
9k
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