14回 モンテカルロシミュレーション - chiba...
TRANSCRIPT
第14回 モンテカルロシミュレーション
千葉⼤学 ⼯学部 都市環境システムコース岡野 創http://okano-lab.tu.chiba-u.ac.jp/lecture/index.html
講義予定
1
1. 2019年10⽉ 1⽇(⽕) 信頼性と信頼性⼯学(イントロダクション)2. 2019年10⽉ 8⽇(⽕)信頼性解析の基礎数理1(確率論の基礎)3. 2019年10⽉15⽇(⽕)信頼性解析の基礎数理2(信頼性の基本量)4. 2019年10⽉29⽇(⽕)信頼性解析の基礎数理3(故障率と確率分布)5. 2019年11⽉5⽇(⽕)データの統計解析1(統計データ処理)6. 2019年11⽉12⽇(⽕)データの統計解析2(最尤法と確率紙)7. 2019年11⽉19⽇(⽕)データの統計解析3/システムの信頼性18. 2019年11⽉26⽇(⽕)中間試験9. 2019年12⽉3⽇(⽕)システムの信頼性1(直列/並列システム)10. 2019年12⽉10⽇(⽕)システムの信頼性2(システム構造関数,パスセット)11. 2019年12⽉17⽇(⽕)システムの信頼性3(FTA/ETA/FMEA)12. 2019年 12⽉ 24⽇(⽕)破壊確率と信頼性指標13. 2020年 1⽉7⽇(⽕)ベイズ推定14. 2020年 1⽉21⽇(⽕)モンテカルロ法15. 2020年 1⽉28⽇(⽕)期末試験
モンテカルロ法
モンテカルロ法(Monte Carlo Simulation, MCS )とは? システムの要素が確率的に挙動するというのなら,各要素に想定される確率分布に従うサンプル値を発⽣させ,コンピュータ内でシステムの挙動を調べてみよう,という発想
なぜモンテカルロ法が必要になるのか? 巨⼤なシステムでは破壊確率を数式で表すことが困難になる 多数の確率変数を含むシステムの挙動は確率密度関数の多重積分で表されるが,次元が増えると急速に計算が困難になる
2
次元の呪い
モンテカルロ法の語源
3
ルーレット(Roulette)
Roulette Payout Table
Inside Bets Odds Paid
Single number 35:1
Split (two numbers) 17:1
Row (three numbers) 11:1
Triple (three numbers) 11:1
Corner (four numbers) 8:1
Top Line (First 4 numbers: 0, 1, 2, 3) 8:1
Line (six numbers in two adjacent Rows) 5:1
Outside Bets Odds Paid
1st, 2nd or 3rd Column (12 numbers) 2:1
1st, 2nd or 3rd Dozen 2:1
Red or Black 1:1
Odd or Even 1:1
Low Half (1-18) or High Half (19-36) 1:1
乱数とは?
でたらめな数列 規則的でない数列
最も基本的なのは⼀様乱数 出現が同じ割合で,かつ⾮規則的 ⼀様乱数から任意の確率分布に従う乱数を⽣成する
コンピュータで発⽣される乱数は擬似乱数(Pseudo-Random-Number) コンピュータはでたらめな計算をすることはできないので,本当は初期値を与えて規則的に計算しているが,あたかもでたらめに⾒える数を⽣成している
4
)( xf X
a bx
0
ab 1
擬似乱数の要件
周期が⼗分に⻑いこと 周期が短いとサンプル数を増やす意味がなくなる
再現性があること モンテカルロ法であっても乱数以外の計算がでたらめであっても良いわけではないので,再計算により検証可能である必要がある(デバッグに必要)
Excelでも乱数は⽣成できるが,再現性がない
統計的検定に耐えられること でたらめであることが証明できる(=でたらめであるという仮説が棄却されないこと)
5
⼀様乱数の発⽣(合同法:Linear congruential generators)
6
合同式:
mod(n,d),nをdで割った余り (modはmodulo剰余)1番⽬のx=x(1): 初期値a, L, x(1)は⾮負の整数 (上⼿に選ぶ必要がある)剰余はランダムに⾒えることを利⽤している
実際の例:初期値 19530527 (⾃分で与える.⼤きな整数)a=48828125 (なにがいいか検定してみる)L=2147483647=231-1 (32ビットのコンピュータで表現できる最⼤の数)
( 1)x k
乱数発⽣の事例(合同法)
7
散布図(n=10,000)
ヒストグラム(n=10,000)
%乱数発生(合同法)
clear allclose all
a=48828125;x0=19530527;L=(2^31-1);
n=10000;x=zeros(n,1);x(1)=x0;for i=1:n-1
x(i+1)=mod(a*x(i),L);end
%[0,1]に基準化sx=x/L;figure(1);i=1:n;plot(i,sx,'o');hold onfigure(2)histogram(sx,10);
変数,作図窓の消去
MATLABのコード例
条件設定
乱数発生
基準化と作図
⼀様分布であるかどうかを検定
8
度数f i 理論度数e i (f i -e i )2/e i
0 〜 0.1 1034 1000 1.1560.1 〜 0.2 1011 1000 0.1210.2 〜 0.3 1037 1000 1.3690.3 〜 0.4 997 1000 0.0090.4 〜 0.5 967 1000 1.0890.5 〜 0.6 1013 1000 0.1690.6 〜 0.7 979 1000 0.4410.7 〜 0.8 1008 1000 0.0640.8 〜 0.9 961 1000 1.5210.9 〜 1 993 1000 0.049
Σ(f i -e i )2/e i 5.988級の数 10
未知⺟数 1⾃由度 8
有意⽔準 0.05Χ 2 15.507
判定 棄却されない
区間
Lecture 7の復習
F(x)
任意の確率分布に従う乱数を作る(逆関数法)[0,1]の⼀様乱数から,任意の確率分布に従う乱数を作ることができる。下図に⽰すように,累積確率分布の逆関数 FX
-1(u) から求めることができる。
9
1.0
0.0
u
⼀様乱数
uFx X1 :累積分布の逆関数を使う
逆関数法の誘導前⾴から,逆関数法で求まりそうであることはなんとなく分かると
思うが,正しく求まるかどうか数学的な証明を確認しておこう。
10
dxxfduuf XU
X Uduf x f udx
dxxdFX
⼀様分布の確率密度をfU(u),乱数をサンプルした確率分布の確率密度をfX(x)とすると,確率密度関数の変数変換の公式より,
fX(x)について解くと,
よって,x →
※どんな確率分布の乱数でも作成できるが,累積確率分布(の逆関数)が解析的に求まっていない場合は計算効率が低下
※
(7.12)
(7.12)
(7.13)u
逆関数法による標準正規乱数の作成例
11
サンプル数:n=10,000
⼀様乱数 標準正規累積分布 標準正規乱数0
0.2
0.4
0.6
0.8
10
500
1000
1500
積分による期待値の計算n個の確率変数 の関数 の期待値は,確率変数Xの確率密度 として,次式のような多重積分で与えられる。
12
TnXXX ,,, 21 X Xg
nnn dxdxdxxxxfxxxggE 212121 ,,,,,, XX
xXf
(7.4)
上式の積分に要する演算回数は,xiに関する1重積分をm個の区間に区分して数値積分(例えば台形則で)すると,1区間を単位の計算回数として,必要な計算回数 l は以下のようになる。
nml
例えば,m=100,n=5とすると,必要な計算回数は,000,000,000,101005 l (100億回)
n=6になると,さらに100倍となり,急激に計算が困難になる。このように,計算機の速度が速くなった現在でも,多重積分は次元が増えると,急速に計算が困難になるという問題を抱えている。これを
という。
モンテカルロ法による単純サンプリング
13
次に,モンテカルロ・シミュレーションで, の期待値を求めることを考える。確率密度 に従う乱数 が与えられれば, の期待値の近似値は,次式のように算術平均で与えられる。
xXf Tin
iii xxx )()(2
)(1
)( ,,, x Xg
Xg
N
i
in
ii xxxgN
gE1
)()(2
)(1 ,,,1 X (7.6)
多重和(多重積分)が1重和に置き換えられ,次元の呪いは回避されている。ただし,確率分布に従うサンプルが得られることが適⽤条件になる。
単純サンプル平均による計算例次の期待値計算を考える。
14
dxxfaxIaxIE X
ここで,I(x≧a)は, x≧aで1,それ以外で0となる関数で,Xは平均0,分散1の標準正規変数とする。fX(x)は標準正規確率密度関数である。a=1の場合について,標準正規乱数を発⽣させ,式(7.6)の単純サンプル平均で期待値を求めてみる。
1542.0
1111
n
ixI
nxIE
1587.0
111
xIE
単純サンプル平均は,
精解は,標準正規分布関数を⽤いて,
まずまずの精度で解が得られた。
-5 0 5 10
x0
0.1
0.2
0.3
0.4
0.5不採用採用fX(x)
000,10n
(1)
単純サンプルで精度の良い解が得られない場合a=5の場合について,同じ問題を解いてみると…
15
0
5151
n
ixI
nxIE
7
5 1 5
2.87 10
E I x
精解は,
単純サンプル平均は,
-5 0 5 10
x0
1
2
3
410-6
不採用採用fX(x)
000,10n
000,10n
となり,正しい解が得られない。縦軸を拡⼤してみると,確率密度は0ではないが,サンプル数10,000程度では,x≧5のサンプルが発⽣していないことが分かる。
重点サンプリング(効率化モンテカルロ法)評価したい領域を重点的にサンプリングする⽅法を考えよう。任意の確率分布hX(x)を⽤いて,以下のように変形する。
16
dxxh
xhxfaxIaxIE X
X
X
この変形は,hX(x)で割って乗じているだけなので,どのような関数を⽤いても構わない。このように変形すると,式(2)は確率密度関数hX(x)による期待値積分になっており,期待を求める対象が,本来の確率密度fX(x)と新たに導⼊した確率密度hX(x)の⽐fX(x)/hX(x)で重み付けされていることが分かる。hX(x)を,評価の対象となる領域の密度が⾼くなるように設定すれば,サンプル数が不⾜するという問題は解消することが期待できる。期待値はサンプル平均により,次のように与えられる。
N
i X
X
xhxfaxI
naxIE
1 ''1
ただし,x’はhX(x’)に従う乱数である。
(2)
(3)
重点サンプリングの計算例
17
重点サンプリングで,式(2)でa=5の場合を解いてみよう。
-5 0 5 10
x0
0.1
0.2
0.3
0.4
0.5
不採用採用fX(x)
hX(x)
x=5の前後でサンプル数が増えるように,hX(x)として,平均5,分散1の正規分布を採⽤する。
1,5NxhD
X D
は分布に従うことを表す
71087.2
111
xIE
精解は,
hX(x)にしたがう乱数を発⽣させて,重点サンプル平均を求めると,
8
1
1089.2''515
N
i X
X
xhxfxI
nxIE
良い推定精度が得られた。サンプルの採⽤率は約50%に達している。
受理・棄却法によるモンテカルロ積分次の例題を考える。
18
1,0NxgD
X b
adxxgI 2,0 ba
1. 被積分関数を覆う関数y=pX(x)を決める
2. x=[a,b],y=[0,M/(b-a)]の⼀様乱数を⽣成3. 受理・棄却
で受理,その他のサンプルは棄却4. 受理されたサンプル数から積分を求める
5. 結果
399.021max
xgMxp
n
nabMI accept
ii xgy
:サンプル数
数:受理されたサンプル
n
naccept
000,1n
0.4867I受理棄却法:
0.4772I:正解
M
a b
受理・棄却法でπを求める半径1の円の⾯積πを,受理・棄却法で求める
19
サンプル数 πの推定値
1000 3.220010,000 3.1348
100,000 3.14081000,000 3.1416
10,000,000 3.1414
000,1n
受理・棄却法で多次元積分は可能か?半径1のN次元球の体積※
20
N次
元の球
の体
積/
立方
体の体
積
!2
2)(
NV
NSphere
N
球:
外接⽴⽅体: NCubeNV 2)(
r 体積⽐:
※ 「計算統計Ⅱ マルコフ連鎖モンテカルロ法とその周辺」,伊庭ほか
⽴⽅体で考えても同じ
8.0
64.08.0 2 51.08.0 3 10.0
8.0 10
10
100
1028.0
受理率が急激に⼩さくなる
受理・棄却法では,次元の呪いは解けない!
2
2 ! 2
N
NN
ベイズ推定とモンテカルロ法
21
多次元のベイズ推定の計算の困難さ 正規化係数kの計算で多重積分が必要 モンテカルロ法は適⽤できるか
確率分布が分かっていないので,通常の⽅法ではサンプルは得られない 受理棄却法は次元の呪いから逃れられない
多次元のベイズ推定 nnn fLkf ,,,,,,,,, 21021211 yy
1 2 0 1 2 1 2, , , , , ,n n nk f f d d d y
マルコフ連鎖モンテカルロ法(Markov Chain Mote Carlo, MCMC)でサンプルを⽣成できることが分かった ベイズ推定の多次元問題への適⽤が進んだ
数学的な背景は結構難しいが,プログラミングは簡単なので,興味のある⼈は試してみると⾯⽩いかも
期末試験の注意事項 A4で2枚(表裏)の⼿書きのメモのみ持ち込み可
電卓(ルートが計算できるもの)を持ってくること
標準正規分布表は,問題と⼀緒に配布します
試験範囲は,第9回講義以降です
22
Good Luck!