モンテカルロ法,乱数,および疑似乱数について †
杉 田 洋
大阪大学大学院理学研究科数学専攻
†大阪大学理学部同窓会講演会(2007年4月30日),神戸大学理学部「計算による数理科学の展 開2008」(2008年1月10日)における講演要旨(改訂ver.20090611)
ご挨拶
初めまして.数学専攻の杉田洋と申します.専門は数学,確率論です.
昨年8月注1,スペインのマドリッドで開かれた世界数学者会議において,日本の数学 者,伊藤清先生が第一回ガウス賞を受賞されました。当時,マスコミにも取り上げられま したので,ご記憶の方も多いと思います.伊藤先生の主な専攻は確率論で,私は先生の弟 子の渡辺信三先生の弟子ですから,孫弟子に当たります。
伊藤先生とはお話をずいぶんとさせて頂きました.じつは,先生からいろいろ教えて 貰った,というより,先生が恐れ多くも私の研究に興味を持って下さり,私に次々と質問 なさってご自分の理解を深めておられることの方が多かったように記憶します.
そんな中,伊藤先生はよく,「私は物分りが悪いのです.自分の言葉で理解しないこと には納得しない性質(たち)なのです.」とおっしゃっておられたのを思い出します.大先 生が「物分りが悪い」とはどういうお積りでおっしゃっておられるのか,はじめのうちは 戸惑いましたが,そのうち,それが伊藤清の大数学者たる所以であることが分かってきま した.伊藤先生にとって,ご自分が分かる形で数学を作っていく作業は,結局,「物分り の悪い自分でも分かるくらい,それくらい明確な理論,普遍性を持つ理論」となって結実 するわけです.同時にそれは若い私達への戒めであったように思います.人から教えても らったことを鵜呑みにして,知ったかぶりをして勉強をした積りにならないように,とい うこと.本当に自分が理解したことだけを数学にしなさい,と.
話は変わりますが,昨年の暮れに福岡で「確率論シンポジウム」を開催しました.そこ で一晩だけ,学生を連れて飲みに出かけました.そのとき,一人の学生が私に「先生はど うして確率論を専攻されたのですか」と尋ねました.私は咄嗟に思いついたことを答えま した.「数学の中で確率が一番分からなかったから」と.その学生はキョトンとした顔を していましたが,私はなかなか気の利いた答えができたと思いました.じつは,私にとっ て,確率論はどうにも分かった気がしないのです.何か理解しきっていないところがある と,いつも感じるのです.だから,もっと理解したい,自分のものにしたいと欲している のだと思います.
今日は,十数年,研究をして参りましたモンテカルロ法についてお話を致します.モン テカルロ法は,「乱数を用いてランダムな現象をコンピュータ上で仮想的に再現すること によって数学的な問題を解く方法」と言われています.じつは確率論の中でも「モンテカ ルロ法」は私にとって最も正体不明の分野でした.だからこそ,私はモンテカルロ法に興 味を持ったのだと思います.
そして今日は,ここ幾年かの思索の結果,私がモンテカルロ法をどんなふうに理解する ようになったかについて,できるだけ明確に分かりやすくお話しようと思います.
1 例題
今日は次の例題をモンテカルロ法で解くことを目標とします.
例題:硬貨を27 =128回投げるとき,表が続けて7回以上出る確率pを求めよ.
注1昨年= 2006年.
その過程で,モンテカルロ法の数学的な捕らえ方,乱数とは何か,疑似乱数の役割,など について,できるだけ平易にお話していきたいと思います.
1.1 デモンストレーション (1)
何はともあれ,デモンストレーション注2をご覧に入れましょう.
図 1: デモンストレーション初期画面
モンテカルロ法の作戦は次の通りです: コンピュータを使って硬貨投げを何回も仮想的に 行い,数理統計的手法によってpの値を推定します.ここでは,「硬貨投げを128回行う」
という試行を219 =524,288回繰り返して,そのうち「表が7回以上続けて出る」という 事象が起こった回数をSとし,S/524288をpの推定値とします.
この場合,硬貨を全部で27×219 = 226 =67,108,864回投げることになりますが,それ を乱数を用いて仮想的に実行します.もっとも,コンピュータはプログラムによって決定 論的に動作するので真の乱数を生成することができません.すなわちコンピュータが生成 することのできるのは乱数のように見える疑似乱数です.モンテカルロ法はその疑似乱数 を用いて実行します.
注2講演ではmcm kouen.zipに梱包されているWindows仕様のアプリケーションdemo proj.exeを走ら せました.そしてmcm kouen.zipはhttp://homepage.mac.com/hiroshi sugita/mcm.htmlからダウン ロードできます.
では,計算させてみましょう.「計算」のボタン(図 1)をクリックします. . .このとおり,
およそ2秒間の計算のあと,S =204,650,したがってp= 0.390339 という推定値が得ら れました.
図 2: 計算結果
疑似乱数で得られた硬貨投げの様子は,この図2の黒と黄色の丸が表しています.この図
は520,000番目に得られた「128回の硬貨投げの結果」です.黒が「裏」を,黄色が「表」
を表しています.赤いふ˙ ちのついた黄色の丸が続いているところは最も長く表が続いてい˙ るところを表しています.このサンプルでは表が続いて出た回数の最大値はちょうど7に なっていますね.510,000番目のサンプルでは表が続いて出た回数の最大値は5です.注3 以下,少しサンプルを見てみましょう....
1.2 疑念
モンテカルロ法は,様々な科学分野で広く応用され多くの成果を挙げてきました.しか し,そこには,真摯な研究者を悩まし続けてきた一つの重大な疑念があります.
真の乱数でない疑似乱数を用いたモンテカルロ法は決して数学的正当性 を持ち得ないのではないか.
私は何とかこの疑念を晴らせないものかとずっと考えてきました.そして,数年前,この 疑惑が先入観に基づく誤解に過ぎないことに,やっと気づきました.じつは乱数,疑似乱 数,そしてモンテカルロ法自体の数学的定式化を適切に行えば,この疑念を解消すること ができる場合があるのです.実際,いまご覧頂いたモンテカルロ法のデモンストレーショ ンはきちんと数学的に正当化することが可能です.このことについてこれから説明して参 りたいと思います.
2 大数の法則と平均の推定
前節のデモンストレーションについて数学的に理解して頂くために,恐縮ですが,数式 を使って説明させてください.大学2年生の確率の計算です.細かいところは気にされず に大まかな流れをご理解頂ければ結構かと存じます.
注3アプリケーションdemo proj.exeでは図2の右端のスクロールバーで上の「▲」と下の「▼」をクリッ クすることによって,生成された128回の硬貨投げのサンプルが10,000番目ごとに表示されます.
硬貨の「裏」を0で,「表」を1で表すことにします.128回の硬貨投げの結果は0と1 からなる128個の数列で表されます.そのような数列の全体を{0,1}128と書きます.関数 X :{0,1}128 → {0,1}を(ξ1, . . . , ξ128)∈ {0,1}128 に対して
X(ξ1, . . . , ξ128) :=
{ 1 (ξ1, . . . , ξ128が連続する7個以上の1を含む) 0 (それ以外)
と定義します.Xは与えられた128回の硬貨投げが連続する7個の1を含めば1,含まな ければ0を返す関数です.「硬貨を128回投げて表が連続して7回以上出るかどうか調べ る」ということを524,288回繰り返す,ということを数学的には次のように表現します.
27×219 = 128×524288 =67,108,864回の硬貨投げの関数の列Xk :{0,1}67108864 → {0,1}, k = 1, . . . ,524288,を ω= (ω1, . . . , ω67108864)∈ {0,1}67108864 に対して
X1(ω) := X(ω1, ω2, . . . , ω128) X2(ω) := X(ω129, ω2, . . . , ω256)
...
Xk(ω) := X(ω128(k−1)+1, ω128(k−1)+2, . . . , ω128k) (1) ...
X524288(ω) := X(ω67108737, ω6708738, . . . , ω67108864)
と定義します.Xk はk回目の「128回の硬貨投げ」において表が続けて7回以上出たか どうかを判定する関数です.最後に
S(ω) := X1(ω) +X2(ω) +· · ·+X524288(ω), ω∈ {0,1}67108864
と定義します.S は「128回の硬貨投げ」を524,288回行うときに,表が続けて7回以上 出る回数を表し,このSが私たちの注目する対象です.
さて,いよいよ確率の登場です.P を {0,1}67108864 上の一様確率測度,つまり B ⊂ {0,1}67108864に対してP(B) := #B/267108864と定義します.注4 Pの下で関数列{Xk}67108864k=1
は同じ分布に従う独立な確率変数の列となります.
私たちが知りたいのは確率p:=P(X1 = 1)です.注5 これは平均注6 E[X1] = 1·P(X1 = 1) + 0·P(X1 = 0) =p に外なりません.式で書けば
p = 1 2128
∑
ξ∈{0,1}128
X(ξ).
注4#B は集合 B の元(要素)の個数を表します.P(B) := #B/267108864 ということは P は各 ω ∈
{0,1}67108864に対して等しい確率1/267028864を割り当てるような確率測度であることを意味します.
注5もちろんどのkに対してもp=P(Xk = 1)です.以下で現れるE[X1],V[X1]においてもX1はどの Xk で置き換えても構いません.
注6平均値,または期待値とも言います.これを記号Eで書くのはExpectationの頭文字に由来します.
この右辺の有限和が計算できればよいのですが,まともに計算すると天文学的な時間が掛 かってとても手に負えないので,モンテカルロ法を用いるのです.
分散V[X1]を計算しておきましょう.注7
V[X1] =E[(X1−p)2] = (1−p)2×P(X1 = 1) + (0−p)2 ·P(X1 = 0)
= (1−p)2p+p2(1−p)
= p(1−p).
ここでpは未知ですが,0≤p≤1 を満たすので,次の不等式が分かります.
V[X1]≤ 1 4. Sの平均E[S]と分散V[S]は
E[S] = 524288E[X1] = 524288p, (2)
V[S] = 524288V[X1]≤524288·1
4. (3)
(3)を証明しておきます.
V[S] = E[(S−E[S])2]
= E
(524288
∑
k=1
(Xk−E[Xk])
)2
=
524288∑
k,l=1
E[(Xk−p)(Xl−p)]
=
524288∑
k=1
E[(Xk−p)2]+
524288∑
k6=l
E[(Xk−p)(Xl−p)]
= 524288V[X1] +
524288∑
k6=l
E[Xk−p]E[Xl−p] (Xk−pとXl−pが独立だから)
= 524288V[X1]. (E[Xk−p] = 0だから) (4)
さて(2)(3)より E
[ S 524288
]
= 1
524288E[S] =p, V
[ S 524288
]
= 1
(524288)2V[S]≤ 1
524288·4 = 1 2097152.
ここでS/524288の分散がきわめて小さいことがポイントです.分散は確率変数の値の分
布の「散らばり具合」を表しますが,それが小さいことは値が平均の付近に集中して分布 していることを示します.この現象を確率論では大数の法則と呼んでいます.次のチェビ シェフの不等式は大数の法則を定量的に述べたものです.
P (¯¯¯¯ S
524288 −E
[ S 524288
]¯¯¯¯> δ
)
< V [524288S ]
δ2 ≤ 1
2097152·δ2, δ >0. (5)
注7分散をV で書くのはVarianceの頭文字に由来します.
とくに δ= 2−8 = 1/256 としますと,
P (¯¯¯¯ S
524288−p¯¯¯¯> 1 256
)
< 1
32 (6)
を得ます.
私たちの目的は pの値を推定することでしたね.モンテカルロ法ではω∈ {0,1}67108864 を一つ選んで S(ω)/524288 を計算し — これをサンプリング(標本抽出)と呼びます —,
それを pの値の推定値とします.
大抵の ω ∈ {0,1}67108864 に対して S(ω)/524288 の値は p の値にきわめて近くなりま
す.実際,不等式(6)によれば,S(ω)/524288 と p との差が1/256 を越えるような ω は {0,1}67108864 全体の1/32未満に過ぎません.
3 賭けとしてのモンテカルロ法
モンテカルロ法は,その名の由来のとおり,確率的ゲーム,すなわち賭けとして数学的 に定式化するのが適切です.例題に即して述べますと,プレーヤー —以下ではアリスと します —の目的は ¯¯
¯¯¯
S(ω) 524288−p
¯¯¯¯
¯≤ 1 256
を満たすような ω∈ {0,1}67108864 を選ぶことです.もしアリスがそのような ω を選んだ 場合,アリスの勝ち,そうでないとき,アリスの負け,という賭けを考えます.言い換え ると,もし,アリスの選んだω∈ {0,1}67108864 が集合
A:=
{
ω∈ {0,1}67108864;
¯¯¯¯
¯
S(ω) 524288−p
¯¯¯¯
¯> 1 256
}
(7)
の元(要素)であればアリスの負け,そうでなければ勝ち,ということです.じつはpが 未知なので,そもそも ω∈A かどうか調べる手立てはありませんし,注8 アリスに必勝法 はありません.アリスがどの ω∈ {0,1}67108864 も同様に確からしく選ぶと仮定するとき,
(6)よりアリスの負ける確率は 1/32 未満です.
4 乱数の問題
負ける確率が 1/32 未満というのですから,アリスがこの賭けに勝つことは,一見,容 易なことのように思えるかも知れません.しかし,じつは決して容易なことではないので す.そもそも,アリスはこの賭けを行うために,一つのω∈ {0,1}67108864を指定しなけれ ばなりません.ω は8MBのデータ,すなわち400字詰原稿用紙およそ10,000枚分のデー タです.これだけ膨大なデータをコンピュータのキーボードから直接打ち込むことなど事
注8だから,じつはこの賭けを実行した後でも,アリスが果たして勝ったのか負けたのか,分からないので す.その意味で普通のギャンブルとは趣を異にしますが,人生での決断は多くの場合,このように勝ったか 負けたか分からないような賭けですよね.
実上不可能です.なんらかの工夫が必要になってきます.しかし,どんな工夫をしたとし ても,アリスが指定することのできるωは非常に少数で,従って限られたものになってし まいます.
事情を説明します.たとえばアリスはせいぜい1,000ビットのデータ(アルファベット 125字分)までならキーボードから直接コンピュータへ入力できると仮定しましょう.コ ンピュータは彼女の入力をもとに{0,1}67108864の一つの元をあるアルゴリズムに従って生 成するとします.注9 すると,彼女が指定することのできるωの個数は高々21001−1個で す.実際,一般に l-ビットのデータ全体の個数が 2l で,従ってl-ビット以下のデータ全 体の個数が20+ 21+ 22+· · ·+ 2l = 2l+1−1だからです.一方,{0,1}67108864 の元の個数
は 267108864 もあるのですから,アリスの指定することのできる ω がいかに僅かであるか
が分かるでしょう.たとえ,アリスが 67108864−10ビットのデータまで入力できると仮 定しても,アリスの指定することのできる ω の個数はせいぜい 267108864−9 であり,これ は全体の個数 267108864 の 1/512 に過ぎません.言い換えると {0,1}67108864 全体の少なく とも511/512 は 67108864−9 ビット以上の入力がどうしても必要な {0,1}-列なのです.
現代確率論の創始者であるコルモゴロフは,短い入力で指定できる{0,1}-列は,その 列に何らかの規則性があるからそうできる,と考えました.逆に規則性がないと指定する ために長い入力が必要になるはずです.そこで,その{0,1}-列自身の長さと同程度の長さ の入力がなければ指定できない{0,1}-列のことをコルモゴロフは乱数と呼びました.注10 1960年代のことです.乱数を指定するには,結局,それ自身を入力するより簡潔な方法は ありません.すでに述べてきたことから{0,1}67108864 の元のうち圧倒的多数は乱数です.
不等式(6)(すなわちP(ω ∈A)<1/32) はすべての ω∈ {0,1}67108864が同様に確からし く選ばれる,ということを前提にした不等式です.この不等式に実質的な意味を持たせる ためには,ω は圧倒的多数を占める乱数から選ばれるべきです.これがモンテカルロ法に 乱数が必要だと言われる本当の理由です.
乱数は圧倒的多数を占めるにもかかわらず,そのうちたった一つでさえ,人は自分の意 思で取り出すことができません.この不条理こそ,モンテカルロ法におけるサンプリング の本質的な困難であります.
注意 1 円周率πの公式計算記録は,2007年2月現在,2進小数で4兆1228億桁(10進小 数で約1兆2411億桁) です.それを算出したプログラムは,4兆1228億ビットよりずっ と短いので,πの2進小数表示における0と1の並びは乱数ではありません.同様に,e,
√2,log 10 などの数の2進小数表示における0と1の並びも乱数ではありません.そもそ
も,短い記号や言葉で表すことのできる長い{0,1}-列は乱数ではあり得ないのです.
5 疑似乱数生成器
すでに述べましたように,先ほどご覧頂いたモンテカルロ法のデモンストレーションで は,乱数の代わりに決定論的アルゴリズムで生成する疑似乱数を使って計算しています.
注9じつは,数学的にはそのアルゴリズムこそが後に述べる疑似乱数生成器と呼ばれるものです.
注10それぞれのω∈ {0,1}67108864に対してそれを指定するために必要な入力の長さはアルゴリズムに依存 しますので注意が必要です.詳しくは参考文献[2, 5, 6, 8]をご参照下さい.
疑似乱数というのは数列ですが,数学的対象としてはそれを生み出す仕組みの方が重要で す.それを疑似乱数生成器といいます.
5.1 デモンストレーション (2)
「計算」のボタンをクリックすると硬貨投げのシミュレーションが再び始まります.結 果は. . .先ほどとまったく同じです.何度やっても同じです.ところが,じつはこのアプリ ケーションでは生成される疑似乱数を変更することができます.そのためには,メニュー の「疑似乱数の種」から「種の表示」を実行します(図 3).
図 3: 種の表示
すると,このように種(seed)が表示されます(図4).ご覧の種は長さ292の{0,1}-列,つ まり292ビットのデータです.
図 4: 種
小さな種子から大きな木が育つように,この長さ292の短い種から長さ226 =67,108,864 の非常に長い{0,1}-列がこのアプリケーションに実装されたある疑似乱数生成器によって 生成されます.この非常に長い{0,1}-列を疑似乱数と呼んでいるわけです.種を変更する と,別の疑似乱数が生成されます.Deleteキーを押して種のデータをクリアし,あらため て1〜7と0の数字キーを押して種を入力します.292ビットの新しい種の入力が終わった ら「計算」ボタンを押します.やってみましょう. . .ほら,このとおり,先ほどとは異なっ た結果になりましたね(図 5).
このアプリケーションで用いられている疑似乱数生成器は数学的には関数 g :{0,1}292 → {0,1}67108864
図 5: 別の種による計算
として捉えることができます.具体的にこのgがどんな関数であるか,についてはのちほ どお話いたします.さっきアリスに代わって私が選んだ種ω0 ∈ {0,1}292 は図 5上部に書 かれた{0,1}-列でした.これをg が非常に長いg(ω0) ∈ {0,1}67108864に引き伸ばします.
確率変数Sのサンプルはこのg(ω0)をもとに計算されます.つまり実際に計算されたのは S(g(ω0))の値で,それが204,758なのです(図 5下部のS = 204758 と書かれた部分).
図 6: ひどい種
じつは故意に悪い種を選ぶことができます.たとえばメニュー「疑似乱数の種」から
「ひどい種」を実行しますと,図 6のように1と0が交代に並んだ種が入力されます.こ れをもとに計算しますと. . .このとおり,ひどい結果になってしまいます(図 7).
5.2 安全性
モンテカルロ法は賭けとして定式化するのが適切であると述べました.例題において疑似 乱数生成器g を用いる場合,プレーヤー,アリスが選ぶことのできるのは種ω0 ∈ {0,1}292 です.ですから
g(ω0)∈A=
{
ω ∈ {0,1}67108864;
¯¯¯¯
¯
S(ω) 524288 −p
¯¯¯¯
¯> 1 256
}
図 7: ひどい計算結果
であればアリスの負け,ということができます.では,その確率 P0(g(ω0)∈A) =P0( ¯¯¯¯
¯
S(g(ω0)) 524288 −p¯¯¯¯
¯> 1 256
)
はどうなっているのでしょうか.ここで,P0 は{0,1}292上の一様確率測度とします.こ の確率は,当然,gに依存しています.しかしながら,アリスが疑似乱数に関して深い知 識を持っていない普通のモンテカルロ法のユーザーだったとしたら,自分が賭けに負ける 確率が疑似乱数生成器gの使用によって変わってしまうなんて考えもしないでしょう.
ご安心下さい.ご覧頂いたプログラムでは g は(6)と同じ評価式 P0(g(ω0)∈A)< 1
32 (8)
を満たすように設計されているのです.gを用いてもアリスの負けるリスクが増えないわ けですから,その意味でgを集合Aに対して安全な疑似乱数生成器と呼びます.このよう なgが存在するので,例題を解くためには乱数は必要ありません.注11
6 ペアごとに独立なサンプリング
6.1 定義
お待たせしました.それでは不等式(8)を満たす私たちの疑似乱数生成器g :{0,1}292→ {0,1}67108864 の定義をご紹介しましょう: まず,種ω0 ∈ {0,1}292 を,その前半146ビット x∈ {0,1}146と後半146ビットα∈ {0,1}146に分けます.
ω0 = (x, α)∈ {0,1}146× {0,1}146.
次に x= (x1, . . . , x146)およびα = (α1, . . . , α146),xi, αi ∈ {0,1},からx,˜ α˜ ∈ [0,1) を次 で定義します.
˜ x:=
∑146 i=1
2−ixi, α˜:=
∑146 i=1
2−iαi.
注11例題のSに限らず,一般に任意の確率変数{0,1}128→Rの平均値を524,288個のサンプルの相加平 均によって推定するという際に,gは乱数の代用となる疑似乱数を生成します(次節§6参照).
それで
˜
zk := (˜x+kα) mod 1,˜ k = 1,2,3, . . . ,219= 524288,
と定義します.各 z˜k ∈ [0,1) は146桁の2進小数です.˜zk の2進小数表示において上位 128桁の数を並べてできる{0,1}-列を gk∈ {0,1}128 とします.つまりt∈[0,1)に対して t の2進小数展開の小数点以下第i桁目をdi(t)∈ {0,1} と表すとき,
gk := (d1(˜zk), . . . , d128(˜zk))∈ {0,1}128, k= 1, . . . ,524288.
各gk は元を辿れば ω0 ∈ {0,1}292 の関数なのでgk(ω0) と書きましょう.最後に疑似乱数 生成器 g :{0,1}292 → {0,1}67108864 は次で定義されます.
g(ω0) := (g1(ω0), . . . , g524288(ω0))∈ {0,1}67108864, ω0 ∈ {0,1}292.
6.2 定理
疑似乱数生成器gが,どうして不等式(8)を満たすのか,その根拠について説明します.
鍵になるのは次の定理1です.以下では,自然数 m, jを m:= 128, j := 18.
とします.注12
定理 1 (cf. [10, 11, 14]注13) {0,1}2m+2j(= {0,1}292)上の一様確率測度 P0 の下で,
(i) 各 gk(ω0),k = 1, . . . ,2j+1(= 219= 524288),は {0,1}m(= {0,1}128)上一様分布する.
とくに
E0[X(gk(ω0))] = p.
ここでE0はP0に関する平均を表す.
(ii) 1≤k < l≤2j+1 ならば gk(ω0)とgl(ω0)は独立である(ペアごとの独立性).とくに E0[(X(gk(ω0))−p)(X(gl(ω0))−p)] = E0[(X(gk(ω0))−p)]E0[(X(gl(ω0))−p)] = 0.
証明. 任意のa = (a1, . . . , am), b = (b1, . . . , bm) ∈ {0,1}m に対して1 ≤ k < l ≤ 2j+1の とき
P0(gk(ω0) = a, gl(ω0) =b) = ε×ε を示す.ただし,ε:= 2−m である.これを z˜k, z˜l の言葉で述べれば
P0(˜zk∈[˜a,˜a+ε), z˜l ∈[˜b,˜b+ε)) = ε×ε となる.ただし,˜a:=∑mi=12−iai,˜b :=∑mi=12−ibi.
注12定理1は任意の自然数m, j について成り立ちます.
注13ここでのgを用いたサンプリング法はこれらの論文でランダム・ワイル・サンプリングと呼んでいるも のをほんの少しだけ改良したものです.
関数 F,G:R→R を周期1 の周期関数で F(s) :=
{ 1, (s∈[˜a,a˜+ε))
0, (s6∈[˜a,a˜+ε)) , G(s) :=
{ 1, (s∈[˜b,˜b+ε))
0, (s6∈[˜b,˜b+ε)) , s∈[0,1), で定義されたものとする.このとき,
P0(˜zk ∈[˜a,a˜+ε), z˜l ∈[˜b,˜b+ε)) = E0[F(˜zk)G(˜zl)]
∫ 1
0
F(t)dt
∫ 1
0
G(s)ds = ε×ε だから,結局,
E0[F(˜zk)G(˜zl)] =
∫ 1
0
F(t)dt
∫ 1
0
G(s)ds (9)
となることを示せばよい.
定義より,
E0[F(˜zk)G(˜zl)] = 1 22m+2j
2∑m+j
q=1 2∑m+j
p=1
F
( p
2m+j + kq 2m+j
)
G
( p
2m+j + lq 2m+j
)
である.ここで q を固定するとき,tの関数F (t+ 2m+jkq
)
G(t+2m+jlq
)
は周期1の周期関 数だから
2∑m+j
p=1
F
( p
2m+j + kq 2m+j
)
G
( p
2m+j + lq 2m+j
)
=
2∑m+j
p=1
F
(p+kq 2m+j
)
G
(p+kq
2m+j +(l−k)q 2m+j
)
=
2m+j∑+kq p=1+kq
F
( p 2m+j
)
G
( p
2m+j +(l−k)q 2m+j
)
=
2∑m+j
p=1
F
( p 2m+j
)
G
( p
2m+j +(l−k)q 2m+j
)
. よって
E0[F(˜zk)G(˜zl)] = 1 22m+2j
2∑m+j
q=1 2∑m+j
p=1
F
( p 2m+j
)
G
( p
2m+j +(l−k)q 2m+j
)
= 1
2m+j
2∑m+j
p=1
F
( p 2m+j
) 1 2m+j
2∑m+j
q=1
G
( p
2m+j + (l−k)q 2m+j
)
. (10) ここで,0< l−k = 2iν≤2j+1−1,ただし 0≤i≤j かつ ν は奇数,としよう.すると
1 2m+j
2∑m+j
q=1
G
( p
2m+j + (l−k)q 2m+j
)
= 1
2m+j
2∑m+j
q=1
G
( p
2m+j + νq 2m+j−i
)
. (11)
各 r = 1,2,3, . . . ,2m+j−i に対して νqr ≡ r(mod 2m+j−i) なるqr を一つ定めれば ν は奇 数だから
#{1≤q≤2m+j|νq ≡r(mod 2m+j−i)}
= #{1≤q≤2m+j|νq ≡lqr(mod 2m+j−i)}
= #{1≤q≤2m+j|ν(q−qr)≡0(mod 2m+j−i)}
= #{1≤q≤2m+j|q ≡qr(mod 2m+j−i)}
= 2i. このことから
1 2m+j
2∑m+j
q=1
G
( p
2m+j + νq 2m+j−i
)
= 1
2m+j−i
2m+j∑−i
r=1
G
( p
2m+j + r 2m+j−i
)
= 1
2m+j−i
2m+j−i∑
r=1
G
( r 2m+j−i
)
=
∫ 1
0
G(t)dt. (12)
従って(10)(11)(12)から
E0[F(˜zk)G(˜zl)] = 1 2m+j
2∑m+j
p=1
F
( p 2m+j
) ∫ 1
0
G(t)dt =
∫ 1
0
F(t)dt
∫ 1
0
G(s)ds.
以上で(9)が示された. (証明終わり)
さて,定理 1を用いると
S(g(ω0)) =X(g1(ω0)) +· · ·+X(g524288(ω0)), ω ∈ {0,1}292, は,じつは次の二つ等式を満たすことが分かります.
E[S(ω)] = E0[S(g(ω0)] (13)
V[S(ω)] = V0[S(g(ω0)] (14)
ここでEとV はω ∈ {0,1}67108864に関する P の下での平均と分散を,E0とV0はω0 ∈ {0,1}292 に関する P0 の下での平均と分散をそれぞれ表しています.実際,E[X(ω)] = E0[X(gk(ω0))](= p) なので(13)は明らかです.一方の(14)については少し前に戻って考 えましょう.(1)で定義された確率変数列 {Xk}524288k=1 は独立同分布だったので,(4)のよ うな式変形が可能になったのでした.ここで注意すべきことは,(4)という式変形は,
• 各 k に対してE[Xk] =p,
• 任意の k6=l について E[(Xk−p)(Xl−p)] = 0,
でありさえすればよい,ということです.とくに {Xk}524288k=1 が全体として独立である必 要は何もありません.いま{X(gk(ω0))}524288k=1 は定理 1 により,この二つの性質を持つの で(14)が成り立つことが分かります.
チェビシェフの不等式は,平均と分散が同じ確率変数に対して同じ不等式を導きます から
P0( ¯¯¯¯¯S(g(ω0)) 524288 −E0
[S(g(ω0)) 524288
]¯¯¯¯¯> δ
)
< V0[S(g(ω5242880))]
δ2 ≤ 1
2097152·δ2, δ > 0, であり,従ってδ= 1/256の場合に不等式(8)
P0(g(ω0)∈A) = P0( ¯¯¯¯¯
S(g(ω0))
524288 −p¯¯¯¯¯> 1 256
)
< 1 32 が得られるのです.
注意 2 ペアごとに独立な確率変数列の構成については文献上では[4]が最初のようです.
それをもう少し一般化した構成法が計算機科学ではよく知られています([7] Lecture 5).
最近では[3]に詳しく論じられています.
7 数理統計学の視点から
私たちはモンテカルロ法を賭けと考え,プレーヤーのアリスが自分の意志で疑似乱数の 種 ω0 ∈ {0,1}292 を選ぶ,という観点で論じてきました.しかし数理統計学の視点から見 ると,ω0 がアリスの意志で選ばれるというのは困ったことです.なぜなら,結果に客観 性を持たせるために数理統計学では無作為なサンプリングを行うことを重要と考えるか らです.実際,ひどい種を選べばわざとひどい結果を出すことができることを私たちは見 てきましたね(§ 5.1).プレーヤーの意思で結果が左右されることが起こり得るのです.
サンプリングの客観性を厳密に論ずることはもちろん数学の守備範囲を超えています.
ですから,たとえば,本物の硬貨の表裏の出方が誰の意思にも影響されないことを仮定し た上で議論することにしましょう.
例題の場合を考えます.硬貨を292回投げて,順に,表だったら1,裏だったら0,を記 録していきます.そうして長さ292の{0,1}-列ができたら,それを疑似乱数生成器 g の
種 ω0としてS(g(ω0))を計算するのです.これで,サンプリングが無作為に実行されたと
考えられます.この方法は非常に長い ω ∈ {0,1}67108864 を無作為に選ぶことには手間が 掛かり過ぎて利用できません.重要なことは,疑似乱数生成器gの利用によって無作為に 選ばなければならない{0,1}-列の長さがきわめて短くなるため,この方法が実際に実行 可能になる,ということです.
最初のデモンストレーションの後,モンテカルロ法に関する疑念のお話をしたところ で,「 ご覧頂いたモンテカルロ法のデモンストレーションはきちんと数学的に正当化する ことができます」と述べました(§ 1.2).じつは,あのデモンストレーションで用いた種 (図 4)は実際に硬貨を292回投げて上に述べた方法で得られたものだったのです.注14 で すから,数理統計学の視点から見ても正当な無作為なサンプリングであった,と言えるで しょう.
注14一人で途中何回も休みながらやって,約35分かかりました.学生さんに手伝って貰えばよかった.
8 汎用目的のための疑似乱数生成器
例題のように,一般に大数の法則に基づいて確率変数の平均を推定するためにコンピュー タを用いてサンプリングする手法をモンテカルロ積分と言います.科学的な目的のために 行われるモンテカルロ法の大部分はモンテカルロ積分です.しかし,この目的以外にモン テカルロ法が使われることもあります.
どのような目的であるにせよ,モンテカルロ法が賭けであることには違いありません.
一般的な設定で述べてみましょう.まず,モンテカルロ法では問題に応じてある確率変数 S を設定します.注15 プレーヤー,アリスがコンピュータを使って S の一つの値S(ω)を サンプリングします.S(ω)がSの一般的な値であればアリスの勝ち,例外的な値であれ ばアリスの負け,という賭けを考えます.ここではSの一般的な値が得られれば問題が解 決するような,そういう問題設定がなされているとご理解下さい.S の例外的な値の集合 を B とし,
A := {ω|S(ω)∈B}
とします.繰り返しになりますが,アリスは集合Aに属するωを選ぶと負けてしまうわ けです.大抵のωに対してS(ω)6∈Bですから,確率 P(ω∈A) は0に近い,つまりある 小さなδ >0に対して
P(ω∈A)< δ
となっています.ですから,アリスにとってこの賭けはとても有利なはずですが,ω が非 常に膨大なデータであるときには,乱数の問題があってアリスがSの一般的な値を容易 に得ることはできません.アリスは疑似乱数生成器gを用いて,短い種ω0 から長大な疑 似乱数 g(ω0)を生成して,それをSに代入することで S のサンプリングをします.その ときのアリスの勝つ確率P0(g(ω0)∈A)が問題になります.もし,
P0(g(ω0)∈A)< δ (15)
であればアリスはこの賭けに容易に勝てるでしょうし,彼女はそのことを望んでします.
このとき(15)を満たす疑似乱数生成器gは集合Aに対して安全である,といいます.
このような一般的な場合に,果たして安全な疑似乱数生成器が存在するかどうかは大き な未解決問題です.実際の問題として考え得る最も広い範疇の集合Aに対していつも安 全な疑似乱数生成器が,じつは確率論からではなく,計算機科学,とくに暗号理論からい くつも提案されています.最初のものは1980年代のことでした([1, 15]).しかし残念なが ら未だに厳密な存在証明を得るに至っていません.それは計算量理論の重要な「P 6=N P 予想」と関連していてとても困難です([7]).私も確率論的視点からこの問題に挑戦しま
した([12])が,解決の尻尾が見えたくらいです.
暗号理論と疑似乱数生成器の話はとても興味深いのですが,ここではこれ以上,深入り しないでおきましょう.
注15以下,しばらくはいい加減な記号の使い方をしますが,例題を解いてきた過程と対応させて記号を使い ますので文脈はお分かりになるかと思います.
9 おわりに
皆さんは,私がお話の最初に,モンテカルロ法は「乱数を用いてランダムな現象をコン ピュータ上で仮想的に再現することによって数学的な問題を解く方法」と言われている,
と述べたのを覚えておられるでしょうか.でも,じつはランダムな現象なんて再現しませ ん.お話して来ましたように,乱数も疑似乱数もランダムな現象とは何の関係もなく数学 的にきちんと定義されています.
皆さんの中には私のお話した数学的定式化によって「モンテカルロ法からワクワクする 夢が失われた」と嘆く人がいらっしゃるかも知れません.実際,たとえば疑似乱数生成器 はもはや「ランダム性を産み出すプログラム」ではなくて,「短い{0,1}-列を長い{0,1}- 列に写す関数」に過ぎないのですから.そう,これはかつて確率変数が「ランダムな値を とる変量」を意味していたのが,コルモゴロフによる確率論の公理化以来,「確率空間上 で定義された可測関数」として定義されたのと同じことで,数学的定式化とはおよそ何と も味気ないものです.しかし,これが数学として明確になるということだと思います.で すから,もし皆さんの中のどなたかに「なぁんだ,これじゃ,モンテカルロ法も普通の数 学じゃないか」と思って頂けたなら今日の私のお話は大成功です.
伊藤清先生はいつも「この方法でできる,というのでは弱いんです.この方法でなけれ ばならない,というところまで突き止めないとダメなんです」とおっしゃっていました.
この意味で,私の述べたモンテカルロ法の定式化が伊藤先生のこのお言葉に耐えうるもの かどうか,自分としては精一杯やったつもりですが. . ..
ご清聴,どうもありがとうございました.
参考文献
[1] L. Blum, M. Blum and M. Shub, A simple unpredictable pseudorandom number generator, SIAM J. Comput.,15-2 (1986), 364–383.
[2] G.J. Chaitin, Algorithmic information theory,IBM J. Res. Develop.,21 (1977), 350–359.
[3] S. Heinrich, E. Novak, and H. Pfeiffer, How many random bits do we need for Monte Carlo integration? Monte Carlo and quasi-Monte Carlo methods 2002, Springer, Berlin (2004), 27–49.
[4] A. Joffe, On a sequence of almost deterministic pairwise independent random variables, Proc. Amer. Math. Soc.29(1971), 381–382.
[5] A.N. Kolmogorov, Logical basis for information theory and probability theory,IEEE Trans.
on Inform. Theo., vol.IT-14-5, Sept. (1968), 662–664.
[6] M. Li and P. Vit´anyi,An introduction to Kolmogorov complexity and its applications, 2nd ed. Graduate Texts in Computer Science. Springer-Verlag, New York, (1997).
[7] M. Luby, Pseudorandmness and cryptographic applications, Princeton Computer Science Notes, Princeton University Press, (1996).
[8] P. Martin-L¨of, The definition of random sequences,Inform. Control,7 (1966), 602–619.
[9] D.R. Stinson, Cryptography (Theory and practice), CRC Press, (1995).
[10] H. Sugita, Robust numerical integration and pairwise independent random variables,Jour.
Comput. Appl. Math.,139 (2002), 1–8.
[11] 杉田洋,複雑な関数の数値積分とランダムサンプリング,「数学」岩波書店56-1, (2004) 1–17.
[12] H. Sugita, An analytic approach to secure pseudo-random generation,Proceedings of 2003 Ritsumeikan Symposium on Stochastic Processes and its Applications to Mathematical Fi- nance, World Scientific, (2004) 355–368.
[13] H. Sugita, ソフトウェアおよび論文,下記にて公開:
http://homepage.mac.com/hiroshi sugita/mathematics.html.
[14] H. Sugita and S. Takanobu, Random Weyl sampling for robust numerical integration of complicated functions,Monte Carlo Methods and Appl.,6-1 (1999), 27–48.
[15] A. Yao, Theory and applications of trapdoor functions, Proceedings of the IEEE Founda- tions of Comput. Sci., (1982), 80–91.
[email protected] http://homepage.mac.com/hiroshi sugita/mcm.html