🎓 レベル:発展 | 重要度:A(必須)
📎 前提:重点サンプリング | 関連:リスク評価のモンテカルロ(VaR)
要点(BLUF)
- 稀少事象シミュレーション:故障・破綻・大災害のように確率が極小の事象を推定する技術。安全工学・金融・通信の信頼性評価で必須です。
- 素朴なモンテカルロでは該当サンプルがほとんど出ず(10万回引いて数回)、推定が極端に不安定になります。
- 重点サンプリング(重点サンプリング)で提案を危険側へずらすと解決。10部品系の過負荷確率 を、素朴比54倍精密に推定します。
1. 問題:稀少事象は素朴には測れない
システムの故障確率 を推定したいとします。 のとき、素朴なモンテカルロで 回シミュレートしても、故障は平均 回しか起きません。 でも約10回。標準誤差は で、推定値と同じオーダーになり信頼できない。深い裾を直接サンプリングで埋めるのは、サンプル効率が壊滅的に悪いのです。
これは VaR の深い分位点(リスク評価のモンテカルロ(VaR))と同じ困難。解決策が重点サンプリング——「危険な領域を、わざと頻繁に起こる提案分布で観測し、尤度比で割り戻す」。
2. 実装:多部品系の過負荷確率
10個の部品の応力 の合計が閾値 42 を超えると系が壊れる、とします。合計は なので、閾値42は平均から約3.8σ——稀少事象です。
import numpy as np
from scipy import stats
# 乱数シードを固定
rng = np.random.default_rng(61)
d = 10; thr = 42.0
true = stats.norm.sf((thr-30)/np.sqrt(d)) # 真値(合計の正規分布から)
print(f"真の稀少確率 P(合計>{thr}) = {true:.3e}")
n = 2_000_000
# 素朴なモンテカルロ
X = rng.normal(3, 1, (n, d))
naive = (X.sum(axis=1) > thr).mean()
naive_se = np.sqrt(naive*(1-naive)/n)
print(f"素朴MC = {naive:.3e} (標準誤差 {naive_se:.2e}, 故障回数 {int(naive*n)})")
# 重点サンプリング:各部品の平均を危険側へずらす(合計平均=thrになるよう)
shift = thr / d # = 4.2
Y = rng.normal(shift, 1, (n, d))
log_w = (stats.norm.logpdf(Y, 3, 1) - stats.norm.logpdf(Y, shift, 1)).sum(axis=1)
weight = np.exp(log_w) # 尤度比 p/q
indicator = (Y.sum(axis=1) > thr)
is_est = (indicator * weight).mean()
is_se = (indicator * weight).std() / np.sqrt(n)
print(f"重点SAMP = {is_est:.3e} (標準誤差 {is_se:.2e})")
print(f"標準誤差の改善 = {naive_se/is_se:.0f} 倍")
出力:
真の稀少確率 P(合計>42.0) = 7.390e-05
素朴MC = 6.850e-05 (標準誤差 5.85e-06, 故障回数 137)
重点SAMP = 7.403e-05 (標準誤差 1.08e-07)
標準誤差の改善 = 54 倍
出力の意味:真値 に対し、素朴MCは200万回引いても故障137回、推定 で標準誤差が推定値の約8.5%。一方、各部品の平均を危険側(3→4.2)へずらした重点サンプリングは、提案サンプルの多くが閾値を超えるので故障を毎回観測でき、推定 で標準誤差は54倍小さい。同じ精度なら素朴MCの 分の1のサンプルで済む計算です。
3. 提案分布の設計(最小レート点)
重点サンプリングの肝は「危険側へどうずらすか」。理論的には、**故障領域の中で最も起こりやすい点(最小レート点、design point)**に提案分布の中心を合わせるのが最適に近い。上の例では「合計がちょうど閾値になる対称な点」=各部品 がそれです。大偏差理論はこの最適なずらし方を与えます。複雑な系では、
- 適応的重点サンプリング:反復で提案を最適化(cross-entropy 法)。
- 部分集合シミュレーション(subset simulation):稀少事象を「だんだん厳しくなる中間事象の連鎖」に分解し、MCMC(第6章 マルコフ連鎖モンテカルロ 目次)で各段を推定。
など、より高度な手法が使われます。
数式の直観的意味
稀少事象推定は「めったに起きないことを、しょっちゅう起きる世界で観測して割り戻す」——重点サンプリング(重点サンプリング)そのものの応用です。素朴MCが非効率なのは、確率 の事象に当たる回数が しかなく、その相対誤差が と の小ささに直撃されるから。重点サンプリングは提案を危険側に寄せて当たる頻度を に引き上げ、尤度比 で「本当は珍しい」と補正する。 倍という改善は、提案を最適点に近づけたことで尤度比の分散が抑えられた結果。逆に提案を寄せすぎ・寄せ方を誤ると尤度比が暴れて逆効果になる(重点サンプリングの落とし穴)ので、design point の見極めが信頼性工学の腕の見せ所です。
⚠️ よくある誤解・落とし穴
- 「サンプルを増やせば稀少事象も測れる」ではない:相対誤差が なので、 が小さいと必要 が爆発。分散減少が本質的に必要。
- 「提案はとにかく危険側へ大きくずらす」ではない:ずらしすぎると尤度比が爆発し分散が増大。最小レート点付近が最適。
- 「重点サンプリングは無条件で正しい」ではない:提案の裾が目的より軽いと推定が破綻。設計を誤ると素朴MCより悪化することも。
- 「故障領域が一つ」とは限らない:複数の故障モードがあると単一の提案では不十分。混合提案や部分集合シミュレーションを。
- 「信頼性理論をここで展開」ではない:システム信頼性の構造関数・冗長設計は信頼性工学の領分。ここは稀少確率の推定手法に集中。
対応シミュレーション参照
本文の多部品系・過負荷確率の重点サンプリング(default_rng(61)、素朴比54倍)。手法は重点サンプリング。
関連ノート
- 重点サンプリング(前提・稀少事象推定の中核技法)
- リスク評価のモンテカルロ(VaR)(前のトピック・深い裾の VaR)
- 第6章 マルコフ連鎖モンテカルロ 目次(部分集合シミュレーションの基盤)
- 収束率と誤差(√n則)(相対誤差と )
- 第9章 応用 目次
- シミュレーション・モンテカルロ法 全体目次