重点サンプリング法

**重点サンプリング法**（じゅうてんサンプリングほう、importance sampling）は、モンテカルロ法の一種であり、関心のある確率分布からのサンプルを直接得ることが難しい場合に、異なる分布から得られたサンプルを用いてその分布の特性を評価する手法である。この手法が統計学に導入されたのは、とによる1978年の論文とされている。 しかしながら、その前身はすでに1949年の統計物理学におけるモンテカルロ法の文献に見られる。

重点サンプリングは、計算物理学におけるアンブレラサンプリングとも関連しており、用途によっては、代替分布からのサンプリング手法そのもの、推論手順、あるいはその両方を指す場合がある。

## 基本理論
X \colon \Omega \to \mathbb{R} を確率空間 (\Omega,\mathcal{F},\mathbb{P}) 上の確率変数とする。\mathbb{P} に関して X の期待値 \mathbb{E}_\mathbb{P}[X] を推定したいとする。\mathbb{P} に従う独立なサンプル X_1, \ldots, X_n が得られれば、その期待値の経験的推定値は

: 
  \widehat{\mathbb{E}}_{\mathbb{P}}[X] = \frac{1}{n} \sum_{i=1}^n X_i \quad \mathrm{where}\; X_i \sim \mathbb{P}(X)


となり、この推定の精度は X の分散に依存する：

: 
   \operatorname{var}_\mathbb{P}\big[\widehat{\mathbb{E}}_{\mathbb{P}}[X]\big] = \frac{\operatorname{var}_\mathbb{P}[X]} n.


重点サンプリングの基本的な考え方は、\mathbb{P} に従って直接サンプリングするのが難しい場合や、推定値\mathbb{E}_\mathbb{P}[X]の分散を減らしたい場合に、他の分布からサンプルを取得することである。

そのために、まず非負の確率変数 Y\geq 0 を選び、\mathbb{E}_\mathbb{P}[Y] = 1 かつ \mathbb{P} にほとんど至る所で Y(\omega)\neq 0 を満たすようにする。そして、Y により定義される新たな確率分布 \mathbb{Q} に対して

: 
  \mathbb{E}_{\mathbb{P}}[X] = \mathbb{E}_{\mathbb{Q}}\left[\frac{X}{Y}\right].


が成り立つようにする。

この X/Yを \mathbb{Q} の下でサンプリングすることで、\mathbb{E}_{\mathbb{P}}[X] を推定できる。この推定の分散が

: 
  \operatorname{var}_{\mathbb{Q}}\left[\frac{X}{Y}\right] となれば、推定はより精度の高いものになる。

X が常に一定の符号を持つ場合、理想的な選択は Y^*=\frac{X}{\mathbb{E}_{\mathbb{P}}[X]}\geq 0 であり、このとき X/Y^* は定数 \mathbb{E}_{\mathbb{P}}[X]となり、1つのサンプルのみで期待値が得られることになる。しかしながら、\mathbb{E}_{\mathbb{P}}[X]が求める値である以上、このような Y^*を選ぶことは現実的ではない。この理論的な最適ケースY^* から、重点サンプリングについて重要な洞察を得られる。それは、X の「重要な」値に対してサンプルを集中させ、その貢献度に応じて重みを付けていることである。すなわち、通常の分布ではなく、\mathbb{E}_{\mathbb{P}}[X] への貢献度に比例するように分布を再構築する。このことが「重点サンプリング」と呼ばれる理由である。

:

:

## 確率的推論への応用
この手法は、解析的に扱うのが困難な確率モデルにおいて、事後分布や期待値の推定に頻繁に用いられる。例として、ベイジアンネットワークや、重み付き変分オートエンコーダなどがある。

## シミュレーションへの応用
重点サンプリングは、モンテカルロ法における分散減少法である。重点サンプリングの背景には、シミュレーション内で入力となる確率変数の中に、推定しようとするパラメータに対して他よりも大きな影響を与えるものがあるということがある。もしそれらの重要な値をより頻繁にサンプリングするようにすれば、推定量の分散を削減することができる。したがって、重点サンプリングの基本的な手法は、重要な値を「強調する」ような分布を選択することである。このような「バイアスのある」分布をシミュレーションに直接適用すると推定量にバイアスが生じる。しかしながら、シミュレーション出力に重みを与えてこのバイアスを補正することで、新しい重点サンプリング推定量は不偏（バイアスがない）になる。この重みは、真の基礎分布に対するバイアス付きシミュレーション分布のラドン＝ニコディム導関数、すなわち尤度比によって与えられる。

重点サンプリングシミュレーションを実装する際の基本的課題は、入力変数の重要な領域を強調するようなバイアス分布を選択することである。良いバイアス分布を選ぶことで大幅な実行時間の節約が可能になる一方で、悪い分布を選ぶと、通常のモンテカルロシミュレーションよりも長い実行時間がかかってしまう可能性がある。

X をサンプルとし、\frac{f(X)}{g(X)}を尤度比（ここで f は目的とする分布の確率密度関数、g はバイアス／提案／サンプル分布の確率密度関数）とした場合、この問題はスケーリングされたサンプルの分散を最小にするようなサンプル分布 g を選ぶ問題として定式化される：

: g^* = \min_g \operatorname{var}_g \left( X \frac{f(X)}{g(X)} \right).

以下の分布 g^*(X) がこの分散を最小にすることが示されている：

:  
g^*(X) = \frac{|X| f(X)}{ \int |x| f(x) \, dx}.


ただし、X\ge 0の場合、この分散は 0 になる点に注意。

### 数学的アプローチ
確率変数 X が与えられており、その累積分布関数を F(x)、確率密度関数を f(x)= F'(x)\,（ここでプライム記号は導関数を表す）とする。イベント X \ge t が生じる確率 p_t\,をシミュレーションにより推定する例を考える。独立同分布（i.i.d.）に従う長さ K の列 X_i\, を、分布 F から生成し、閾値 t を超える乱数の個数を k_t とする。このとき、確率変数 k_t は二項分布に従う：

: P(k_t = k)={K\choose k}p_t^k(1-p_t)^{K-k},\,\quad \quad k=0,1,\dots,K.

このとき、  \mathbb{E} [k_t/K] = p_t であり、 \operatorname{var} [k_t/K] = p_t(1-p_t)/K, となる。したがって、 K \to \infty の極限で p_tを得られる。  p_t \approx 1のとき分散が小さくなることに注目する。

重点サンプリングでは、バイアスをもつ密度関数 f_*\,（通常は「バイアス付き密度」と呼ばれる）を用いる。この密度関数により、イベント { X \ge t\ } がより頻繁に発生し、一定の推定量の分散を保ちながら必要なサンプル数 K を削減できる。また、同じ K に対しては、通常のモンテカルロ推定よりも小さな分散を得ることができる。

定義から、p_t\,に対して以下のように f_*\,を導入できる：

: 
\begin{align}
p_t & = \mathbb{E} [1_{\{X \ge t\}}] \\[6pt]
& = \int 1_{\{x \ge t\}} \frac{f(x)}{f_*(x)} f_*(x) \,dx \\[6pt]
& = \mathbb{E}_* [1_{\{X \ge t\}} W(X)]
\end{align}


ここで、

: W(\cdot) \equiv \frac{f(\cdot)}{f_*(\cdot)} 

は尤度比であり、重み関数とも呼ばれる。

この式の最後の等式は以下の推定量を導く：

: \hat p_t = \frac{1}{K}\,\sum_{i=1}^K 1_{\{X_i \ge t\}} W(X_i),\,\quad \quad X_i \sim  f_*

これは p_t\, の重点サンプリング推定量であり、不偏である。すなわち、推定手順としては、f_*\, に従ってi.i.d.なサンプルを生成し、それらが t\,を超えた場合に、重み関数 W\,を評価してその値を加算する。結果は K\,回の試行で平均される。

この重点サンプリング推定量の分散は、次のように簡単に求められる：

: 
\begin{align}
\operatorname{var}_*\widehat p_t & = \frac{1}{K}\operatorname{var}_* [1_{\{X_i \ge t\}}W(X)] \\[5pt]
& = \frac{1}{K}\left\{\mathbb{E}_*[1_{\{X_i \ge t\}}^2 W^2(X)] - p_t^2\right\} \\[5pt]
& = \frac{1}{K}\left\{\mathbb{E}[1_{\{X_i \ge t\}}W(X)] - p_t^2\right\}
\end{align}


さて、重点サンプリングの課題は、重点サンプリング推定量の分散が、一般的なモンテカルロ推定法の分散よりも小さくなるようなバイアス付き密度関数 f_*\, を見つけることである。あるバイアス付き密度関数がこの分散を最小化し、さらに特定の条件下では分散をゼロにまで減らすことができる場合、そのような関数は「最適なバイアス付き密度関数（optimal biasing density function）」と呼ばれる。

### 一般的なバイアス手法
重点サンプリングには様々なバイアス手法が存在するが、以下の2つの手法が最も広く応用されている。

#### スケーリング
確率変数 X\, を1より大きい係数で正のスケーリングを行うことにより、イベント領域 { X \ge t\ } に確率質量を移動させる。これによって、密度関数の分散（および平均）も増加し、密度の裾が重くなってイベントの発生確率が増加する。スケーリングは最も古くから知られているバイアス手法の1つであり、実務において広く使用されてきた。実装が簡単であり、他の方法と比べて堅実なシミュレーション利得をもたらすことが多い。

スケーリングによる重点サンプリングでは、スケーリングされた確率変数 aX\,（通常 a>1、しっぽ確率推定のため）が持つ密度関数を、シミュレーションでの密度関数として選ぶ。変数変換によって、

:  f_*(x)=\frac{1}{a} f \bigg( \frac{x}{a} \bigg)\,

となり、対応する重み関数は、

:  W(x)= a \frac{f(x)}{f(x/a)} \,

スケーリングはイベント領域に確率質量を移動させるが、同時に補集合領域（すなわちX）にも質量を押しやってしまうという副作用がある。もし X\, が n\, 個の確率変数の和である場合、この分布の広がりは n\, 次元空間にわたって発生する。これにより、重点サンプリングの利得が n\, の増加に従って減少することになり、これを「次元効果（dimensionality effect）」と呼ぶ。

スケーリングの現代的な応用例として「シグマスケーリング法（sigma-scaled sampling、SSS）」がある。これは、異なるスケーリング係数を用いて複数のモンテカルロ解析を実行するものである。SSSは、高収率推定法（例えばworst-case distances：WCD）とは異なり、次元効果の影響をあまり受けない。また、複数のモンテカルロ出力を扱っても効率が劣化しない。

ただし、WCDとは異なり、SSSはガウス統計変数のみを対象として設計されており、統計的な「コーナー」を正確に再現するようには設計されていない。さらに、スケーリング係数が大きい場合、モデルやシミュレータの収束問題によりシミュレーションが困難になることがある。

また、SSSには「バイアスと分散のトレードオフ」問題がある：スケーリング係数を大きくすれば結果は安定するが、バイアス誤差も増大する。もし特定の応用においてSSSの利点が重要でない場合、他の手法のほうが効率的である可能性が高い。

#### 平行移動
もう一つの単純かつ効果的なバイアス付け手法は、確率密度関数（したがって確率変数）を平行移動することで、その確率質量の大部分をまれな事象の領域に配置するものである。平行移動は次元効果の影響を受けず、データ転送システムのシミュレーションなど、いくつかの応用において成功裏に使用されてきた。この方法はしばしば、スケーリングよりも優れたシミュレーション上の利得をもたらす。

:  f_*(x)= f(x-c), \quad c>0 \,

ここで、c\, はシフト量であり、重点サンプリング推定量の分散を最小化するように選ばれる。

### システムの複雑さの影響
重点サンプリングにおける根本的な課題は、システムの複雑さが増すにつれて、良好なバイアス分布を設計することがますます困難になることである。複雑なシステムとは、入力数が少なくても複雑な処理を行う「長期記憶」を持つシステムを指す。この次元性（または記憶）によって、以下の3つの側面で問題が生じる可能性がある：

* 過去の入力が現在の出力に影響する(深刻な符号間干渉)
* 入力系列の全体を見ないと出力を決められない
** 例：
* メモリが（理論上）無限になる可能性がある
** 例：

原理的には、こうした状況でも重点サンプリングの基本的な考え方は変わらないが、設計はより困難になる。この問題に対する有効なアプローチの1つは、シミュレーション全体を、より明確に定義された複数の小さな問題に分割することである。その後、それぞれの単純化された問題に対して重点サンプリング戦略を適用する。シミュレーションを分割するための手法としては、「条件付け（conditioning）」や「エラー事象シミュレーション（error-event simulation, EES）」、「再生シミュレーション（regenerative simulation）」などがある。

### 重点サンプリングの評価
重点サンプリング手法の有効性を特定するには、重点サンプリングを使用したことによる実行時間の節約量を定量化できることが有用である。一般的に用いられる性能指標は、\sigma^2_{MC} / \sigma^2_{IS} \,であり、これは、重点サンプリング推定器が、通常のモンテカルロ推定器と同じ精度を達成するのに必要な速度向上係数として解釈される。この値は、推定量の平均が解析的に求まらない場合が多いため、経験的に算出する必要がある。重点サンプリング推定器を評価する上で有用な他の概念としては、分散の上限や、漸近効率性（asymptotic efficiency）の概念がある。これに関連する指標として、「有効サンプルサイズ（Effective Sample Size、ESS）」がある。

### 分散損失関数
シミュレーションの損失関数は一つではないが、多くの文献では、損失関数として分散が用いられている。

分散を損失関数に用いる場合の問題として、比率 \sigma^2_{MC} / \sigma^2_{IS} \, は、重み関数を計算するために必要な追加の計算時間を含まないため、重点サンプリングによる実行時間の節約を過大評価してしまうことが挙げられる。したがって、実際の実行時間の改善を評価するために、さまざまな他の手法が用いられる場合がある。それには重点サンプリングにおける重大なオーバーヘッド、すなわち技術の考案やプログラミングに必要な時間、および目的とする重み関数を解析的に導出するために必要な時間を考慮する必要がある。

### 多重および適応的な重点サンプリング
異なる提案分布 g_i(x), i=1,\ldots,n,を用いてサンプルx_1, \ldots, x_n,  を同時に生成する場合、さまざまな適切な重み付け関数を使用することができる（参照）。

適応的な設定では、提案分布 g_{i,t}(x), i=1,\ldots,n, t=1,\ldots,T,が、適応的な重点サンプリングアルゴリズムの各イテレーション t で更新される。つまり、複数の提案密度を使用するため、サンプリングと重み付けスキームの適切な組み合わせがいくつも採用可能となる。これにより、提案分布の多様性を活かした柔軟な重点サンプリングが可能になり、特に高次元問題や複雑な分布に対して効率的な推定が行える。

## 関連項目

* モンテカルロ法
* 分散減少法
* 層化抽出法
* モンテカルロ積分
* 粒子フィルタ
* 可変ビットレート

## 脚注

## 参考文献

* 
* 
* 
* 
* 
* 
* 
* 
* 
* 

## 外部リンク
* Sequential Monte Carlo Methods (Particle Filtering) 
* Introduction to importance sampling in rare-event simulations 
* Adaptive Monte Carlo methods for rare event simulations