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
610
2
Share
確率的プログラミング入門
NearMeの技術発表資料です
PRO
November 01, 2024
More Decks by NearMeの技術発表資料です
See All by NearMeの技術発表資料です
OpenCode Introduction
nearme_tech
PRO
0
16
【Browser Automation × AI】 Stagehandを試してみよう
nearme_tech
PRO
0
57
AIを用いた PID制御で部屋 の温度制御をしてみた
nearme_tech
PRO
0
63
CopilotKit + AG-UIを学ぶ
nearme_tech
PRO
3
290
Tile38 Overview
nearme_tech
PRO
0
65
Rust 製のコードエディタ “Zed” を使ってみた
nearme_tech
PRO
0
920
実践で使えるtorchのテンソル演算
nearme_tech
PRO
0
39
ローカルLLMを⽤いてコード補完を⾏う VSCode拡張機能を作ってみた
nearme_tech
PRO
0
690
初めてのmarimo (ハンズオン)
nearme_tech
PRO
0
53
Featured
See All Featured
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Context Engineering - Making Every Token Count
addyosmani
9
800
So, you think you're a good person
axbom
PRO
2
2k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.1k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
HDC tutorial
michielstock
1
610
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
3.8k
Unsuck your backbone
ammeep
672
58k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
AI: The stuff that nobody shows you
jnunemaker
PRO
5
530
Building Flexible Design Systems
yeseniaperezcruz
330
40k
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