モンテカルロ(モンテカルロ)
乱数を多数発生させて確率的に計算する数値手法。3D レンダリング(Path Tracing)、金融工学、物理シミュレーション、AI(強化学習)等で広く使われる。
概要
モンテカルロ(Monte Carlo / Monte Carlo Method)は、乱数を多数発生させて確率的に計算する数値手法を指す。1930-1940 年代のロスアラモス国立研究所(マンハッタン計画)で核兵器開発のため John von Neumann と Stanislaw Ulam が体系化、モナコのカジノ「モンテカルロ」から命名された。決定論的計算が困難な問題(高次元積分、複雑な確率分布、最適化)を、ランダムサンプリングで近似する。2026 年現在、(1) 3D レンダリングの Path Tracing、(2) 金融工学のオプション価格計算、(3) 物理シミュレーション、(4) AI 強化学習の MCTS(Monte Carlo Tree Search)等で広く使われている。
主要な応用領域
3D レンダリング(Path Tracing)
カメラから光線を放出 → 物体に当たって反射 → 光源到達までの経路を多数本計算 → 平均で 1 ピクセルの色決定。サンプル数(spp: samples per pixel)が多いほど高品質、4-128 spp 程度が標準。
| レンダラー | モンテカルロ手法 |
|---|---|
| Blender Cycles X | Path Tracing + Adaptive Sampling |
| Otoy Octane Render | Pure Path Tracing |
| Chaos V-Ray 7 | Brute Force + Light Cache |
| Pixar RenderMan | Path Tracing + REYES |
| Unreal Engine 5 Path Tracer | Real-time Path Tracing |
| NVIDIA Iray | Spectral Path Tracing |
金融工学
オプション価格・VaR(Value at Risk)・複雑デリバティブの評価。Black-Scholes 解析解が無い場合に有効。
# 簡易モンテカルロでヨーロピアンコール
import numpy as np
N = 100_000 # シミュレーション回数
S0, K, r, sigma, T = 100, 105, 0.05, 0.2, 1.0
Z = np.random.standard_normal(N)
ST = S0 * np.exp((r - 0.5*sigma**2)*T + sigma*np.sqrt(T)*Z)
payoff = np.maximum(ST - K, 0)
price = np.exp(-r*T) * np.mean(payoff)
物理シミュレーション
- 粒子シミュレーション: 流体・気体・プラズマの挙動
- 分子動力学: タンパク質フォールディング
- 量子モンテカルロ: 量子化学計算
- 天体物理: 銀河形成・降着円盤
AI / 強化学習
- MCTS(Monte Carlo Tree Search): AlphaGo / AlphaZero の中核アルゴリズム
- MCMC(Markov Chain Monte Carlo): ベイズ推論
- PPO / SAC(強化学習): Policy Gradient 最適化
主要な改良手法
| 手法 | 説明 |
|---|---|
| Quasi-Monte Carlo(QMC) | 準乱数(Sobol / Halton 数列)で収束加速 |
| Importance Sampling | 重要な領域を集中サンプリング |
| Stratified Sampling | 領域分割で分散低減 |
| Bidirectional Path Tracing | 光源 + カメラ両方向トレース |
| Metropolis Light Transport | 過去の良いパスを変異 |
| Photon Mapping | 光子事前分散 + 集約 |
| MIS(Multiple Importance Sampling) | 複数戦略統合 |
AI Denoiser との組合せ(2026 年)
少サンプル数(4-32 spp)でレンダリング → AI Denoiser でノイズ除去 → 数千 spp 相当の品質を高速生成。
| Denoiser | 提供 | 特徴 |
|---|---|---|
| NVIDIA OptiX Denoiser 8 | RTX SDK | リアルタイム、Cycles X 標準 |
| Intel Open Image Denoise 2.3 | OSS | CPU/GPU 両対応 |
| AMD ProRender Denoiser | Radeon | OSS |
| NVIDIA OIDN(旧 NRD) | RTX | リアルタイム特化 |
計算量とサンプル数の関係
統計学的に 誤差は √N に反比例。
| サンプル数 | 誤差 | 用途 |
|---|---|---|
| 16 spp | 大ノイズ | プレビュー |
| 64 spp | 中ノイズ | 確認 |
| 256 spp | 小ノイズ | テスト |
| 1024 spp | ほぼノイズなし | 最終出力 |
| 4096 spp | 完璧 | 映画 / 印刷 |
| AI Denoiser 併用 | - | 16-64 spp で 1024 spp 相当 |
PC スペック要件
- Blender Cycles X 1080p: RTX 4060 / Ryzen 9 7950X
- Cycles X 4K + OptiX: RTX 4090 24GB / Ryzen 9 9950X
- 8K + Path Tracing: H100 80GB / クラウド GPU 群
- MCTS 個人開発: Ryzen 9 + RTX 4070 SUPER + 64 GB RAM
関連用語との違い
| 用語 | 違い |
|---|---|
| ラスタライゼーション | 決定論的描画、Monte Carlo は確率的 |
| レイトレーシング | 物理ベース光線追跡、Path Tracing はその一形態 |
| ニュートン法 | 決定論的最適化、Monte Carlo はランダム |
| 機械学習 | データ学習、Monte Carlo は確率推定 |
よくある質問
Q1: Path Tracing と Ray Tracing、どう違う? A: Ray Tracing は単純な光線反射計算、Path Tracing はモンテカルロで多数の経路を統計平均する物理的に正確な手法。後者の方が高品質だが計算コスト 5-10 倍。
Q2: Quasi-Monte Carlo は本当に速い? A: 高次元積分で顕著。Sobol 数列等で従来 N=1000 サンプル相当の精度を N=100 で達成可。3D レンダリングの Cycles X / Octane で標準採用。
Q3: AlphaGo の MCTS は何が革新的? A: 従来チェス AI(α-β 法)に対し、Go の盤面を全探索せず、有望な手のみランダムプレイアウトで評価。深層学習との組合せで人間最強プレイヤーを超えた。
まとめ
- 乱数で 確率的に計算 する数値手法
- 2026 年は 3D レンダリング Path Tracing が個人クリエイターの主用途
- AI Denoiser 併用で 少サンプル + 高品質 が両立