중요도 샘플링
📂機械学習 중요도 샘플링 概要 重要度サンプリングはモンテカルロ法 の一つで、有限和で積分(期待値)を近似 するときに使える一種のサンプリングトリックだ。
ビルドアップ 標準正規分布でz z z 値が4 4 4 以上である確率は約3.167 × 1 0 − 5 3.167 \times 10^{-5} 3.167 × 1 0 − 5 だ。
∫ 4 ∞ 1 2 π e − z 2 / 2 d z ≈ 3.167 × 1 0 − 5
\begin{equation}
\int_{4}^{\infty} \dfrac{1}{\sqrt{2\pi}} e^{-z^{2}/2}dz \approx 3.167 \times 10^{-5}
\end{equation}
∫ 4 ∞ 2 π 1 e − z 2 /2 d z ≈ 3.167 × 1 0 − 5
この積分をモンテカルロ積分 で計算するジュリアコードは次のとおりだ。
using Distributions
n = 50000
z₀ = 4.0
for i in 1 :5
z = rand(Normal(), n)
est_MC = sum (z .> z₀)/n
println(est_MC)
end
4.0e-5
6.0e-5
0.0
4.0e-5
4.0e-5
5回程度やってみると計算された値が真の値に近くなく、時には0 0 0 として計算されることもある。この不正確さは標準正規分布の裾が非常に薄いために生じる。紙上で積分をするときには裾がどんなに薄くてもその計算が積分に含まれるが、コンピュータでサンプリングする際には有限なサンプルしか扱わないため、発生確率が非常に低い事象は計算に含まれないことがある。もちろんn n n を増やせばより正確にはなるが、これを解決方法とは呼ばない。
∫ f ( x ) p ( x ) d x = ∫ f ( x ) p ( x ) q ( x ) q ( x ) d x = ∫ [ f ( x ) p ( x ) q ( x ) ] q ( x ) d x
\int f(x)p(x) dx = \int f(x)\dfrac{p(x)}{q(x)} q(x) dx = \int \left[ f(x)\dfrac{p(x)}{q(x)} \right] q(x) dx
∫ f ( x ) p ( x ) d x = ∫ f ( x ) q ( x ) p ( x ) q ( x ) d x = ∫ [ f ( x ) q ( x ) p ( x ) ] q ( x ) d x
次に確率密度関数 がp p p である確率変数X X X に対して、f ( X ) f(X) f ( X ) の期待値を計算する状況を考えてみよう。これは上の式の左辺と同様に計算できるが、ここで任意のq ( x ) q(x) q ( x ) を掛けて割っても依然として同じ値だ。式の右辺は左辺と同じ値を持つが、意味は「確率密度関数がq q q である確率変数X X X に対するf ( X ) p ( X ) q ( X ) f(X)\dfrac{p(X)}{q(X)} f ( X ) q ( X ) p ( X ) の期待値」になる。ここでq q q をp p p より裾が厚い確率密度関数として選べば、発生確率が非常に低い事象による不正確さを減らすことができる。
定義 X X X を確率密度関数がp p p である確率変数とする。q q q を次を満たすもう一つの確率密度関数とする。
supp p ⊂ supp q ( ⟺ q ≠ 0 if p ≠ 0 )
\supp p \subset \supp q \qquad (\iff q\ne 0 \text{ if } p \ne 0)
supp p ⊂ supp q ( ⟺ q = 0 if p = 0 )
重要度サンプリング importance sampling とは、f ( X ) f(X) f ( X ) の期待値E p [ f ( X ) ] E_{p}[f(X)] E p [ f ( X )] をE q [ f ( X ) p ( X ) q ( X ) ] E_{q}[f(X)\frac{p(X)}{q(X)}] E q [ f ( X ) q ( X ) p ( X ) ] により計算して求める方法のことをいう。このときsupp \supp supp は関数のサポート である。
E p [ f ] = ∫ f ( x ) p ( x ) d x = ∫ [ f ( x ) p ( x ) q ( x ) ] q ( x ) d x = E q [ f p / q ]
E_{p}[f] = \int f(x)p(x) dx = \int \left[ f(x)\dfrac{p(x)}{q(x)} \right] q(x) dx = E_{q}[fp/q]
E p [ f ] = ∫ f ( x ) p ( x ) d x = ∫ [ f ( x ) q ( x ) p ( x ) ] q ( x ) d x = E q [ f p / q ]
ここでq q q を提案分布 proposal distribution 、w = p q w = \frac{p}{q} w = q p を重要度重み importance weight という。
説明 つまり重要度サンプリングとはモンテカルロ積分を次のように計算することである。
1 n ∑ f ( x i ) p ( x i ) q ( x i ) , X i ∼ q ( x ) ( instead of 1 n ∑ f ( x i ) , X i ∼ p ( x ) )
\dfrac{1}{n}\sum f(x_{i})\dfrac{p(x_{i})}{q(x_{i})}, X_{i} \sim q(x) \quad \left( \text{instead of } \dfrac{1}{n}\sum f(x_{i}), X_{i} \sim p(x) \right)
n 1 ∑ f ( x i ) q ( x i ) p ( x i ) , X i ∼ q ( x ) ( instead of n 1 ∑ f ( x i ) , X i ∼ p ( x ) )
次のように使うと役に立つ。
ビルドアップの例のように、p ( x ) p(x) p ( x ) の裾が非常に薄い場合、サポートがより大きい分布を提案関数とする。 p ( x ) p(x) p ( x ) の分布でサンプリングするのが難しいとき、サンプリングしやすい分布を提案関数としてq ( x ) q(x) q ( x ) に置く。q q q がp p p の分母として乗じられるので、supp q \supp q supp q はsupp p \supp p supp p を含まなければならない。
ビルドアップの積分( 1 ) (1) ( 1 ) をコーシー分布 を提案分布として重要度サンプリングで再計算した結果は次の通りだ。
using Distributions
n = 50000
z₀ = 4.0
for i in 1 :5
z = rand(Cauchy(), n)
w = pdf.(Normal(), z) ./ pdf.(Cauchy(), z)
est_IS = sum (w[z .> z₀])/n
println(est_IS)
end
3.0330744703037005e-5
3.1808448538011614e-5
3.049259883894785e-5
3.305423127141489e-5
3.1807695818207125e-5
性質 不偏推定量 1 n ∑ f ( x i ) p ( x i ) q ( x i ) \dfrac{1}{n}\sum\limits f(x_{i})\dfrac{p(x_{i})}{q(x_{i})} n 1 ∑ f ( x i ) q ( x i ) p ( x i ) はE p [ f ( X ) ] E_{p}[f(X)] E p [ f ( X )] の不偏推定量 だ。
証明 E q [ 1 n ∑ i n f ( X i ) p ( X i ) q ( X i ) ] = 1 n ∑ i n E q [ f ( X i ) p ( X i ) q ( X i ) ] by linearity of E = E q [ f ( X ) p ( X ) q ( X ) ] = E p [ f ( X ) ]
\begin{align*}
E_{q}\left[ \frac{1}{n}\sum_{i}^{n}f(X_{i})\dfrac{p(X_{i})}{q(X_{i})} \right]
&= \frac{1}{n}\sum_{i}^{n} E_{q}\left[ f(X_{i})\dfrac{p(X_{i})}{q(X_{i})} \right] &\text{by linearity of E E E } \\
&= E_{q}\left[ f(X)\dfrac{p(X)}{q(X)} \right] \\
&= E_{p}\left[ f(X) \right]
\end{align*}
E q [ n 1 i ∑ n f ( X i ) q ( X i ) p ( X i ) ] = n 1 i ∑ n E q [ f ( X i ) q ( X i ) p ( X i ) ] = E q [ f ( X ) q ( X ) p ( X ) ] = E p [ f ( X ) ] by linearity of E
■
분산 중요도샘플링에서의 분산은
Var [ f p q ] = E q [ ( f p q ) 2 ] − ( E q [ f p q ] ) 2 = ∫ f ( x ) 2 p ( x ) 2 q ( x ) d x − ( ∫ f ( x ) p ( x ) d x ) 2
\begin{align}
\Var \left[ \frac{fp}{q} \right]
&= E_{q}\left[ \left( \frac{fp}{q} \right)^{2} \right] - \left( E_{q}\left[ \frac{fp}{q} \right] \right)^{2} \\
&= \int \frac{f(x)^{2}p(x)^{2}}{q(x)} dx - \left( \int f(x)p(x) dx \right)^{2} \nonumber
\end{align}
Var [ q f p ] = E q [ ( q f p ) 2 ] − ( E q [ q f p ] ) 2 = ∫ q ( x ) f ( x ) 2 p ( x ) 2 d x − ( ∫ f ( x ) p ( x ) d x ) 2
이므로, 유한한 분산을 갖기 위해선 다음이 성립해야한다.
∫ f ( x ) 2 p ( x ) 2 q ( x ) d x < ∞
\int \frac{f(x)^{2}p(x)^{2}}{q(x)} dx \lt \infty
∫ q ( x ) f ( x ) 2 p ( x ) 2 d x < ∞
これはp ( x ) / q ( x ) p(x)/q(x) p ( x ) / q ( x ) が有界 であるということであり、これは再びq ( x ) q(x) q ( x ) の裾がp ( x ) p(x) p ( x ) の裾より厚くなければならないということと同じだ。分散を最小化するq q q は次の通りだ。
q ∗ = arg min q Var [ f p / q ] = ∣ f ( x ) ∣ p ( x ) ∫ ∣ f ( x ) ∣ p ( x ) d x
q^{\ast} = \argmin\limits_{q} \Var [fp/q] = \frac{ \left| f(x) \right| p(x)}{ \int \left| f(x) \right| p(x) dx}
q ∗ = q arg min Var [ f p / q ] = ∫ ∣ f ( x ) ∣ p ( x ) d x ∣ f ( x ) ∣ p ( x )
証明 ( 2 ) (2) ( 2 ) の第二項はq q q に依存しているように見えるが、▽eq41◁であるためq q q とは無関係な値だ。
arg min q Var [ f p / q ] = arg min q E q [ ( f p q ) 2 ]
\argmin\limits_{q} \Var [fp/q] = \argmin\limits_{q} E_{q}\left[ \left( \frac{fp}{q} \right)^{2} \right]
q arg min Var [ f p / q ] = q arg min E q [ ( q f p ) 2 ]
イェンセンの不等式
開区間I I I で関数ϕ \phi ϕ がコンベックスし、二回微分可能、確率変数X X X の期待値μ \mu μ が存在し、 X ⊂ I X \subset I X ⊂ I ならば
ϕ [ E ( X ) ] ≤ E [ ϕ ( X ) ]
\phi [ E(X) ] \le E [ \phi (X)]
ϕ [ E ( X )] ≤ E [ ϕ ( X )]
しかし二次関数はコンベックスなので、
( E q [ f p q ] ) 2 ≤ E q [ ( f p q ) 2 ] ⟹ ( ∫ f ( x ) p ( x ) d x ) 2 ≤ ∫ f ( x ) 2 p ( x ) 2 q ( x ) d x
\begin{align*}
&& \left( E_{q}\left[ \frac{fp}{q} \right] \right)^{2} &\le E_{q}\left[ \left( \frac{fp}{q} \right)^{2} \right] \\
\implies && \left( \int f(x)p(x) dx \right)^{2} &\le \int \frac{f(x)^{2} p(x)^{2}}{q(x)} dx
\end{align*}
⟹ ( E q [ q f p ] ) 2 ( ∫ f ( x ) p ( x ) d x ) 2 ≤ E q [ ( q f p ) 2 ] ≤ ∫ q ( x ) f ( x ) 2 p ( x ) 2 d x
ここでq ( x ) = ∣ f ( x ) ∣ p ( x ) ∫ ∣ f ( x ) ∣ p ( x ) d x q(x) = \frac{ \left| f(x) \right| p(x)}{ \int \left| f(x) \right| p(x) dx} q ( x ) = ∫ ∣ f ( x ) ∣ p ( x ) d x ∣ f ( x ) ∣ p ( x ) の場合、等号が成立する。
■