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
56
確率的プログラミング入門
NearMeの技術発表資料です
PRO
November 01, 2024
Tweet
Share
More Decks by NearMeの技術発表資料です
See All by NearMeの技術発表資料です
ESLintをもっと有効活用しよう
nearme_tech
PRO
0
3
リファクタリングのための第一歩
nearme_tech
PRO
0
23
ガウス過程回帰とベイズ最適化
nearme_tech
PRO
1
65
Observability and OpenTelemetry
nearme_tech
PRO
2
34
観察研究における因果推論
nearme_tech
PRO
1
84
React
nearme_tech
PRO
2
40
Architecture Decision Record (ADR)
nearme_tech
PRO
1
850
遺伝的アルゴリズムを実装する
nearme_tech
PRO
1
58
Fractional Derivative!
nearme_tech
PRO
1
42
Featured
See All Featured
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.1k
A designer walks into a library…
pauljervisheath
204
24k
Product Roadmaps are Hard
iamctodd
PRO
49
11k
Designing for Performance
lara
604
68k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
2
260
Building a Scalable Design System with Sketch
lauravandoore
459
33k
Mobile First: as difficult as doing things right
swwweet
222
8.9k
GraphQLの誤解/rethinking-graphql
sonatard
67
10k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
VelocityConf: Rendering Performance Case Studies
addyosmani
326
24k
YesSQL, Process and Tooling at Scale
rocio
169
14k
Building Your Own Lightsaber
phodgson
103
6.1k
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