2-3 モンテカルロシミュレーションの悩み
P.75 ~76
サイコロを振るとやめらない
確率計算ができる人ならば、1から6までの目は等確率で出現するから (1+2+…+6)/6=3.5として計算して答えを出す。これが、解析的に解く場合に相当する。解析的開放は常にエレガントだ。サイコロが、目の穴の質量×重心からの距離(モーメント)も含めて、均一になるように精巧に作ってあるかは疑ってみるべきかもしれない。実際に”サイコロを振る”という試行をして、答えを推定する方法がモンテカルロシミュレーションである。
デリバティブズ・ビジネスII 三田 哉 (著) – 2015/9/12
三田さんの気持ちは痛いほどわかるが、「時代錯誤」と言わざるを得ない。三田さんを批判すると120%自分に返ってくると言ったが、それはなぜか? 俺の方が若いからだよ。テクノロジー、文で書くと同じだが俺の言葉を実際聞けばかなりイライラする発音だ。専門用語はアクセントが後ろに行く。専門用語・業界用語にみるシングリッシュとの共通性 ITや機械学習の専門家がテクノロ”ジー”とIT業界人っぽく発音するのはやぶさかではないが、私のような、「にわか」は”テクノロ”ジーとアクセントは前にもってきて発音すべきなのである。書いてある意味がわからん諸君は次回俺に会った時に「テクノロジーって発音してみて」と言ってくれ。相当に「イライラする」w「テクノロジー」の発音をお聞かせしようw
テクノロ”ジー”と発音しても許される人のテクノロ”ジー” 開始20秒で聞けますよ。
話が脱線してしまったが、テクノロ”ジー”の進化によりモンテカルロの計算コストは劇的に下がった。そして解析的に解けるエキゾチックは相当に限定的なことから、いかに効率よくモンテカルロするか、が非常に重要なのである。私も解析的手法こそが最も美しいと信じてはいたものの、実際に私が最も使ったのは皮肉なことにモンテカルロである。それを一般的に一冊の本にまとめたのが、
そして三田さんの発言で最も罪なのは、
(1+2+…+6)/6=3.5として計算して答えを出す。サイコロが、均一になるように精巧に作ってあるかは疑ってみるべきかもしれない。
で話を終わらせてしまっていることだ。三田さんもお気づきのとおり、サイコロはおそらく均一ではない。1兆回ほど振ってみれば2が1/6をわずかだが優位に上回る結果が出るかもしれない。1と6が最も軽く上に出そうだが、対面にあるので、2と5の組が最も質量に差がありそうというかなり強引な推測だがw ま、俺のくだらん推測が合っているか間違っているかは話の本質ではない。
ただ1兆回サイコロを振るのはあまり現実的ではないので、実現可能な例を示そう。乱数を使って、0か1をランダムに作り出すことにしよう。仮に(0,1]区間の一様な乱数なら、乱数>0.5なら1、そうでないなら0という乱数「裏か表」である。この結果を機械学習に食わせて、裏に賭けるべきか表に賭けるべきか、判定させようというわけである。もちろん、結果の数が10とか100個であれば機械が間違った判定をするのは当然だが、それを億、兆と増やしていけば、乱数裏か表に対してどっちに賭ける方が優位というのはないはずである。ところが、私の友人の専門家に聞くと、「実際にやったことはありませんが、データセットの数を増やせば増やすほど、機械はどちらが優位かというのを答えることになると思いますね」と答えた。
彼が何を言っているのか、今なら翻訳できるので三田さんでも分かるように翻訳すると、乱数>0.5なら1なのか、乱数≧0.5なら1と設定するのか、あるいはそもそも(0,1]区間で発生させる「一様な乱数」と言っているが、この乱数も所詮はプログラムで作られた乱数であり、本当に理論通りのランダムを実現できてはいない。エクセルのRand関数程度であれば乱数周期が短いのは周知の事実であり、1兆回もコインを投げることなく、その癖は露呈するだろう。機械学習は乱数生成プログラムが確率0.50000000000000001の癖を持っていれば、データセットが多ければ多いほど、それを有意とみなすだろう、ということなのだ。