- Monte Carlo algorithms๋ ์์ฑ๋ ์ํ ์์ ๋ฐ๋ผ ์ ํ๋๊ฐ ๋ฌ๋ผ์ง๋ ๊ทผ์ฌ์ ์ธ (approximate) ํด๋ต์ ์ ๊ณต
- Monte Carlo algorithms๋ ์ ํํ ๊ณ์ฐ์ด ์ด๋ ค์ด ์์ ์ถ์ ํ๊ธฐ ์ํด ๋ง์ ๊ณผํ ๋ถ์ผ์์ ์ฌ์ฉ
- Bayes net์ ํ๋ฅ ์ ๊ธฐ๋ฐ์ผ๋ก ๋๋ค ์ด๋ฒคํธ๋ฅผ ์์ฑํ๊ณ , ์ด ๋๋ค ์ด๋ฒคํธ์์ ๋ฐ๊ฒฌ๋ ๋ค์ํ ํด๋ต์ ๊ณ์ฐํ์ฌ ์๋
- ์ถฉ๋ถํ ์ํ์ ํตํด, ์ฐธ ํ๋ฅ ๋ถํฌ (true probability distribution)๋ฅผ ์์๋ก ๊ฐ๊น๊ฒ ๋ณต๊ตฌํ ์ ์์
- P(Xโฃe)์ ๊ฐ์ Bayes net์ ์ฌํ ํ๋ฅ (posterior probabilities) ๊ณ์ฐ์ ์ ์ฉ๋๋ ์ํ๋ง์ ๊ด์ฌ
- ๋ชจ๋ ์ํ๋ง ์๊ณ ๋ฆฌ์ฆ์ ๊ธฐ๋ณธ ์์๋ ์๋ ค์ง ํ๋ฅ ๋ถํฌ์์ ์ํ์ ์์ฑํ๋ ๊ฒ
- ๋ณ์๋ค์ ์์ ์ ๋ ฌ (topological order) ์์๋ก ์ฐจ๋ก๋ก ์ํ๋ง
- ๊ฐ์ด ์ํ๋ง๋๋ ํ๋ฅ ๋ถํฌ๋ ์ด๋ฏธ ํด๋น ๋ณ์์ ๋ถ๋ชจ (parents)์๊ฒ ํ ๋น๋ ๊ฐ์ ์กฐ๊ฑดํ๋จ (conditioned on)
- Pseudocode
- SPSโ(x1โ,โฆ,xnโ)๋
PRIOR-SAMPLE ์๊ณ ๋ฆฌ์ฆ์ ์ํด ํน์ ์ด๋ฒคํธ๊ฐ ์์ฑ๋ ํ๋ฅ - SPSโ(x1โ,โฆ,xnโ)=ฮ i=1nโP(xiโโฃparents(Xiโ))
- ๊ฐ ์ํ๋ง ๋จ๊ณ๋ ๋ถ๋ชจ ๊ฐ์๋ง ์์กด
- ์ด๋ Bayes net์ ๋ฐ๋ฅธ ์ด๋ฒคํธ์ ํ๋ฅ , ์ฆ SPSโ(x1โ,โฆ,xnโ)=P(x1โ,โฆ,xnโ)
- ์ด ์ํ ์ N๊ฐ
- NPSโ(x1โ,โฆ,xnโ)์ ์ํ ์งํฉ์์ ์ง์ ๋ ์ด๋ฒคํธ x1โ,โฆ,xnโ๊ฐ ๋ฐ์ํ ํ์
- ์ด ํ์๋, ์ ์ฒด ์ํ ์์ ๋ํ ๋ถ์จ๋ก์, ์ํ๋ง ํ๋ฅ ์ ๋ฐ๋ฅธ ๊ธฐ๋๊ฐ์ผ๋ก ์๋ ด
- limNโโโNNPSโ(x1โ,โฆ,xnโ)โ=SPSโ(x1โ,โฆ,xnโ)=P(x1โ,โฆ,xnโ)
- ๊ทผ์ฌ ๋ฑ์ ("โ")์ ์ถ์ ๋ ํ๋ฅ ์ด ๋๊ท๋ชจ ์ํ ๊ทนํ (large-sample limit)์์ ์ ํํด์ง์ ๋ํ๋
- ์ด๋ฌํ ์ถ์ ์น (estimate)๋ ์ผ๊ด์ (consistent)์ด๋ผ๊ณ ํจ
- ์: mโคn์ธ ๋ถ๋ถ์ ์ผ๋ก ์ง์ ๋ ์ด๋ฒคํธ x1โ,โฆ,xmโ์ ํ๋ฅ ์ ๋ํ ์ผ๊ด์ ์ถ์ ์น๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ์์ฑํ ์ ์์
- P(x1โ,โฆ,xmโ)โNPSโ(x1โ,โฆ,xmโ)/N
- ์ถ์ ๋ ํ๋ฅ ์ ๋ํ๋ด๊ธฐ ์ํด P^ ("P-hat")๋ฅผ ์ฌ์ฉ
- ์: 1,000๊ฐ์ ์ํ์ ์์ฑํ๊ณ , ๊ทธ ์ค 511๊ฐ๊ฐ
Rain = true๋ฅผ ๊ฐ์ง๋ฉด, P^(Rain=true)=0.511
- Rejection sampling (๊ธฐ๊ฐ ์ํ๋ง)์ ์ฝ๊ฒ ์ํ๋งํ ์ ์๋ ๋ถํฌ๊ฐ ์ฃผ์ด์ก์ ๋ ์ํ๋งํ๊ธฐ ์ด๋ ค์ด ๋ถํฌ์์ ์ํ์ ์์ฑํ๋ ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ.
- ์กฐ๊ฑด๋ถ ํ๋ฅ P(Xโฃe)๋ฅผ ๊ณ์ฐํ๋ ๋ฐ ์ฌ์ฉ๋ ์ ์์
- ์๋ ๋ฐฉ์
- ๋จผ์ , ๋คํธ์ํฌ์ ์ํด ์ง์ ๋ ์ฌ์ ๋ถํฌ (prior distribution)์์ ์ํ์ ์์ฑ
- ๊ทธ๋ฐ ๋ค์, ์ฆ๊ฑฐ e์ ์ผ์นํ์ง ์๋ ๋ชจ๋ ์ํ์ ๊ธฐ๊ฐ (reject)
- ๋ง์ง๋ง์ผ๋ก, P^(X=xโฃe) ์ถ์ ์น๋ ๋จ์์๋ ์ํ์์ X=x๊ฐ ๋ฐ์ํ๋ ํ์๋ฅผ ์ธ์ด ์ป์
- ์ถ์ ๋ถํฌ P^(Xโฃe)๋ ์ฆ๊ฑฐ e์ ์ผ์นํ๋ X์ ๊ฐ ๊ฐ์ ๋ํ ์ํ ํ์ ๋ฒกํฐ NPSโ(X,e)๋ฅผ ์ ๊ทํํ์ฌ ๊ณ์ฐ
- P^(Xโฃe)=ฮฑNPSโ(X,e)=NPSโ(e)NPSโ(X,e)โ
- P(x1โ,โฆ,xmโ)โNPSโ(x1โ,โฆ,xmโ)/N๋ก๋ถํฐ, ๋ค์์ด ๋จ
- P^(Xโฃe)โP(e)P(X,e)โ=P(Xโฃe)
- Rejection sampling ์๊ณ ๋ฆฌ์ฆ
function REJECTION-SAMPLING(X, e, bn, N) returns an estimate of P(X | e)
inputs: X, the query variable
e, observed values for variables E
bn, a Bayesian network
N, the total number of samples to be generated
local variables: C, a vector of counts for each value of X, initially zero
for j = 1 to N do
x โ PRIOR-SAMPLE(bn)
if x is consistent with e then
C[j] โ C[j]+1 where x_j is the value of X in x
return NORMALIZE(C)
- Rejection sampling์ ๋ณต์ก์ฑ์ ์ฃผ๋ก ์์ฉ๋๋ (accepted) ์ํ์ ๋น์จ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋ฉฐ, ์ด ๋น์จ์ ์ ํํ ์ฆ๊ฑฐ์ ์ฌ์ ํ๋ฅ P(e)์ ๊ฐ์
- ๋ณต์กํ ๋ฌธ์ ์ ๊ฒฝ์ฐ, ๋ง์ ์ฆ๊ฑฐ ๋ณ์ (evidence variables)๊ฐ ์์ผ๋ฉด ์ด ๋น์จ์ ๋งค์ฐ ์์์ง (vanishingly small)
- ์ด๋ ๋๋ถ๋ถ์ ์ํ์ด ๊ธฐ๊ฐ๋์ด ์ถ์ ์ ์ํ ์ ํจ ์ํ์ด ๊ฑฐ์ ๋จ์ง ์๊ธฐ ๋๋ฌธ์ Rejection sampling์ ์ฝ์
- Importance sampling (์ค์๋ ์ํ๋ง)์ ๋ ๋ค๋ฅธ ๋ถํฌ Q๋ก๋ถํฐ์ ์ํ์ ์ฌ์ฉํ์ฌ ๋ถํฌ P๋ก๋ถํฐ ์ํ๋งํ๋ ํจ๊ณผ๋ฅผ ๋ชจ๋ฐฉํ๋ ๊ฒ์ ๋ชฉํ๋ก ํจ
- ๊ฐ ์ํ x๋ฅผ ์
๋ Q(x)P(x)โ (weight, ๊ฐ์ค์น๋ผ๊ณ ๋ ํจ)์ธ ๋ณด์ ๊ณ์ (correction factor)๋ฅผ ์ ์ฉํ์ฌ ํด๋ต์ด ๊ทนํ์์ ์ ํํจ์ ๋ณด์ฅ
- ์ค์ ๋ก๋ ๋๋ฌด ์ด๋ ค์์ ์ฆ๊ฑฐ์ ์กฐ๊ฑดํ๋ ์ฐธ ์ฌํ ๋ถํฌ P(zโฃe)์์ ์ง์ ์ํ๋งํ๋ ๋์ , ์ฌ์ด ๋ถํฌ์์ ์ํ๋งํ๊ณ ํ์ํ ๋ณด์ (corrections)์ ์ ์ฉ
- Importance sampling ์๋ ์๋ฆฌ:
- ๋น์ฆ๊ฑฐ ๋ณ์ (nonevidence variables)๋ฅผ Z๋ผ๊ณ ๊ฐ์ P(zโฃe)์์ ์ง์ ์ํ๋งํ ์ ์๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์ถ์ ์น๋ฅผ ๊ตฌ์ฑํ ์ ์์
- P^(zโฃe)=NNPโ(z)โโP(zโฃe), ์ฌ๊ธฐ์ NPโ(z)๋ P๋ก๋ถํฐ ์ํ๋งํ์ ๋ Z=z์ธ ์ํ ์
- ๋์ Q(z)์์ ์ํ๋งํ๋ค๊ณ ๊ฐ์ ํ๋ฉด, ์ถ์ ์น๋ ๋ณด์ ๊ณ์๋ฅผ ํฌํจ
- P^(zโฃe)=NNQโ(z)โโ
Q(z)P(zโฃe)โโQ(z)Q(z)P(zโฃe)โ=P(zโฃe)
- ๋ฐ๋ผ์, ์ฌ์ฉ๋๋ ์ํ๋ง ๋ถํฌ Q์ ๊ด๊ณ์์ด ์ถ์ ์น๋ ์ฌ๋ฐ๋ฅธ ๊ฐ์ผ๋ก ์๋ ด (๋จ, P(zโฃe)๊ฐ 0์ด ์๋ ๋ชจ๋ z์ ๋ํด Q(z)๋ 0์ด ์๋์ด์ผ ํจ)
- ๋ณด์ ๊ณ์๋ ๊ณผ๋ ์ํ๋ง (oversampling) ๋๋ ๊ณผ์ ์ํ๋ง (undersampling)์ ๋ณด์
- ์ฌ์ฉํ๊ธฐ ์ฌ์ฐ๋ฉด์๋ ์ฐธ ์ฌํ ๋ถํฌ P(zโฃe)์ ์ต๋ํ ๊ฐ๊น์ด Q๋ฅผ ์ํจ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ์ ๊ทผ ๋ฐฉ์์ Likelihood weighting
- Likelihood weighting (์ฐ๋ ๊ฐ์ค) ์๊ณ ๋ฆฌ์ฆ์ ์ฆ๊ฑฐ ๋ณ์ E์ ๊ฐ์ ๊ณ ์ ํ๊ณ , ๋ชจ๋ ๋น์ฆ๊ฑฐ ๋ณ์๋ฅผ ์์ ์ ๋ ฌ ์์๋ก ์ํ๋งํ๋ฉฐ, ๊ฐ ๋ณ์๋ ๋ถ๋ชจ์ ์กฐ๊ฑดํ๋จ
- ์ด ์๊ณ ๋ฆฌ์ฆ์ ์ํด ์์ฑ๋ ์ํ๋ง ๋ถํฌ๋ฅผ QLWโ๋ผ๊ณ ํจ ๋น์ฆ๊ฑฐ ๋ณ์๊ฐ Z={Z1โ,โฆ,Zkโ}์ธ ๊ฒฝ์ฐ, QLWโ(z)=ฮ i=1kโP(ziโโฃparents(Ziโ))
- P^(zโฃe)=NNLWโ(z)โโ
QLWโ(z)P(zโฃe)โ=NNLWโ(z)โโ
w(z)
- ๊ฐ ์ํ์ ๋ํด QLWโ๋ก๋ถํฐ ์์ฑ๋ ๊ฐ์ค์น w(z)๋ฅผ ๊ณ์ฐํด์ผ ํจ
- ๊ฐ์ค์น๋ w(z)=QLWโ(z)P(zโฃe)โ=ฮฑQLWโ(z)P(z,e)โ๋ก ์ ์๋จ
- P(z,e)๋ Bayes net์์ z์ e์ ๊ฒฐํฉ ํ๋ฅ
- w(z)=ฮฑฮ i=1kโP(ziโโฃparents(Ziโ))ฮ i=1kโP(ziโโฃparents(Ziโ))ฮ j=1mโP(ejโโฃparents(Ejโ))โ=ฮฑฮ j=1mโP(ejโโฃparents(Ejโ))
- ๊ฐ์ค์น๋ ๋ถ๋ชจ๊ฐ ์ฃผ์ด์ง ์ฆ๊ฑฐ ๋ณ์๋ค์ ์กฐ๊ฑด๋ถ ํ๋ฅ (conditional probabilities)์ ๊ณฑ
- ์ฆ๊ฑฐ์ ํ๋ฅ ์ ์ผ๋ฐ์ ์ผ๋ก ์ฐ๋ (likelihoods)๋ผ๊ณ ๋ถ๋ฆฌ๋ฏ๋ก, Likelihood weighting์ด๋ผ๋ ์ด๋ฆ์ด ๋ถ์
- Likelihood weighting ์๊ณ ๋ฆฌ์ฆ
function LIKELIHOOD-WEIGHTING(X, e, bn, N) returns an estimate of P(X | e)
inputs: X, the query variable
e, observed values for variables E
bn, a Bayesian network specifying joint distribution P(X_1,...,X_n)
N, the total number of samples to be generated
local variables: W, a vector of weighted counts for each value of X, initially zero
for j = 1 to N do
x, w โ WEIGHTED-SAMPLE(bn, e)
W[j] โ W[j]+w where x_j is the value of X in x
return NORMALIZE(W)
function WEIGHTED-SAMPLE(bn, e) returns an event and a weight
w โ 1; x โ an event with n elements, with values fixed from e
for i = 1 to n do
if X_i is an evidence variable with value x_i_j in e
then w โ w ร P(x_i_j | parents(X_i))
else x[i] โ a random sample from P(X_i | parents(X_i))
return x, w
- Query: P(RainโฃCloudy=true,WetGrass=true)
- Process ์์:
- ๊ฐ์ค์น w๋ฅผ 1.0์ผ๋ก ์ค์
Cloudy๋ ์ฆ๊ฑฐ ๋ณ์ (true)์ด๋ฏ๋ก, wโwรP(Cloudy=true)=0.5Sprinkler๋ ๋น์ฆ๊ฑฐ ๋ณ์์ด๋ฏ๋ก P(SprinklerโฃCloudy=true)์์ ์ํ๋ง (์: false)Rain์ ๋น์ฆ๊ฑฐ ๋ณ์์ด๋ฏ๋ก P(RainโฃCloudy=true)์์ ์ํ๋ง (์: true)WetGrass๋ ์ฆ๊ฑฐ ๋ณ์ (true)์ด๋ฏ๋ก, wโwรP(WetGrass=trueโฃSprinkler=false,Rain=true)=0.5ร0.9=0.45
- ๊ฒฐ๊ณผ: ์ด๋ฒคํธ [true,false,true,true]๋ ๊ฐ์ค์น 0.45๋ฅผ ๊ฐ์ง๋ฉฐ,
Rain = True๋ก ์ง๊ณ
- Likelihood weighting์ ์์ฑ๋ ๋ชจ๋ ์ํ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ Rejection sampling๋ณด๋ค ํจ์ฌ ํจ์จ์ ์ผ ์ ์์
- ๊ทธ๋ฌ๋, ์ฆ๊ฑฐ ๋ณ์์ ์๊ฐ ์ฆ๊ฐํจ์ ๋ฐ๋ผ ์ฑ๋ฅ ์ ํ (degradation in performance)๋ฅผ ๊ฒช์
- ๋๋ถ๋ถ์ ์ํ์ด ๋งค์ฐ ๋ฎ์ ๊ฐ์ค์น๋ฅผ ๊ฐ์ง๋ฏ๋ก, ๊ฐ์ค์น๊ฐ ๋ถ์ฌ๋ ์ถ์ ์น๋ ์ฆ๊ฑฐ์ ๊ทนํ ๋ฏธ๋ฏธํ ์ฐ๋๋ฅผ ๋ถ์ฌํ๋ ์์ฃผ ์์ ๋น์จ์ ์ํ์ ์ํด ์ง๋ฐฐ๋๊ธฐ ๋๋ฌธ
- w(z)=ฮฑฮ i=1mโP(eiโโฃparents(Eiโ))
- Likelihood Weighting์ ์ฆ๊ฑฐ ๋ณ์์ ๊ฐ์ ๊ณ ์ ํ๋ ๊ฒ์ผ๋ก ์์
- Bayesian Network์ ์กฐ๊ฑด๋ถ ํ๋ฅ ์ ์ฌ์ฉํ์ฌ ๋น์ฆ๊ฑฐ ๋ณ์๋ฅผ ์ํ๋ง
- ๊ฐ ์ํ์ ์ฐ๋ (๋ชจ๋ ์ฆ๊ฑฐ์ ํ๋ฅ )๋ฅผ ๊ฐ์ค์น๋ก ๋ถ์ฌ
model.py, likelihood.py, inference.py, sample.py ํ์ผ์ ๋ด์ฉ ์ ์
P(R=none,M=no,T=onย time,A=attend)
=P(R=none)P(M=noโฃR=none)
P(T=onย timeโฃR=none,M=no)P(A=attendโฃT=onย time)
=0.7ร0.6ร0.9ร0.9=0.3402
- Verification by example
- P(rain=noneโฃtrain=delayed)=ฮฑP(rain=none,train=delayed)=0.46โฆ
- P(rain=lightโฃtrain=delayed)=ฮฑP(rain=light,train=delayed)=0.30โฆ
- P(rain=heavyโฃtrain=delayed)=ฮฑP(rain=heavy,train=delayed)=0.23โฆ
- ์ฌ๊ธฐ์ ฮฑ=4.6948โฆ