2つの正規分布の密度(pdf)の積から導出できる正規分布
2つの正規分布の密度(pdf)の積から導出できる正規分布
正規分布の積もまた正規分布になるので,その正規分布のパラメータ(平均,分散)を導出する.
(なお,確率変数の積ではない)
参考:
Udemyの「ベイズ推定とグラフィカルモデル:コンピュータビジョン基礎1 40. Self-conjugacy 自己共役性」
テキスト:"Computer vision: models, learning and inference" by Simon Prince, 5.6 Product of two normals, p.76
1次元正規分布の場合
導出
1次元正規分布に従う確率変数$x$について,平均と分散パラメータが異なる2つの正規分布を考える.
結果として以下の正規分布の積になるのでこれを導出する.
expの中を平方完成する
これでexpを2つに分解できる.
元の式に代入して
exp外の係数を式変形する. expの中の分散項は以下2つになる.
を式変形すると,以下のように2つに分解できる.
最終的に2つの正規分布に分けることができる.
は,正規分布の密度だが,$x = \mu_{2}, x=\mu_{1}$ で固定したときで定数になる.
plot
import scipy as sp from scipy import stats import matplotlib.pyplot as plt %matplotlib inline x = sp.linspace(-5, 5, 1000) mu1, s21 = (0, 1) mu2, s22 = (0, 1) N1 = stats.norm(loc=mu1, scale=sp.sqrt(s21)) N2 = stats.norm(loc=mu2, scale=sp.sqrt(s22)) prod = N1.pdf(x) * N2.pdf(x) c = stats.norm(loc=mu1, scale=sp.sqrt(s21+s22)).pdf(mu2) print("constant:", c) prod_s2 = 1 / ( 1/s21 + 1/s22) prod_m = prod_s2 * (mu1 / s21 + mu2 / s22) print(f"prodN({prod_m},{prod_s2})") prodN = stats.norm(loc=prod_m, scale=sp.sqrt(prod_s2)) plt.plot(x, N1.pdf(x), linestyle="--", label="N1") plt.plot(x, N2.pdf(x), linestyle="--", label="N2") plt.plot(x, prod, label="prod") s = prod/c plt.plot(x, s, label="prod/constant", linestyle="--", alpha=0.5) print("sum prod/c:", sp.sum((s[:-1] + s[1:]) * sp.diff(x)/2)) plt.plot(x, prodN.pdf(x), label=f"prodN({prod_m: .2f}, {prod_s2: .2f})", alpha=0.5) plt.legend() plt.tight_layout() plt.show()
多次元正規分布の場合
導出
以下2つの正規分布を定義し,それらのpdfの積を考える.
$$ \text{Norm}(\vec{x}|\vec{a}, \mathbf{A}) = \frac{1}{(2 \pi)^{D/2} |\mathbf{A}|^{1/2} } \exp{[(\vec{x} - \vec{a})^{T}\mathbf{A}^{-1}(\vec{x} - \vec{a}) ]} $$
$$ \text{Norm}(\vec{x}|\vec{b}, \mathbf{B}) = \frac{1}{(2 \pi)^{D/2} | \mathbf{B}|^{1/2} } \exp{[ -\frac{1}{2}(\vec{x} - \vec{b})^{T} \mathbf{B}^{-1} (\vec{x} - \vec{b}) ] } $$
結果的に,以下の正規分布になるのでこれを導出する.
まず,expの中を展開する. 2次形式の平方完成が必要になる.
共分散行列は対称行列, 対称行列の逆行列も対称行列より,以下の関係が成立することに注意する.
$$ (\mathbf{A}^{-1})^{T} = \mathbf{A}^{-1}\\ (\mathbf{B}^{-1})^{T} = \mathbf{B}^{-1}\\ $$
そして,以下の記号で置き換える.
$$ \mathbf{C} = \mathbf{A}^{-1} + \mathbf{B}^{-1} \\ \vec{d} = \mathbf{A}^{-1}\vec{a} + \vec{B}^{-1}\vec{b}\\ $$
代入すると,
2次形をつくるために$+ \vec{d}^{T}\mathbf{C}^{-1}\vec{d} - \vec{d}^{T}\mathbf{C}^{-1}\vec{d} = 0$を追加する.
$\mathbf{C}^{-1}\mathbf{C}=\mathbf{C}\mathbf{C}^{-1}=\mathbf{I}$とおいて各項に入れる.
とおいて
よって,expは,2つにわけることができる.
1つの正規分布は
次に定数項に該当する正規分布を導出する. 以下を展開する.
$$ \exp{\left( -\frac{1}{2}(\vec{a}^{T}\mathbf{A}^{-1}\vec{a} + \vec{b}^{T} \mathbf{B}^{-1}\vec{b} - \vec{d}^{T}\mathbf{C}^{-1}\vec{d}) \right)} $$
さらに各項を展開して変形していく.
まとめて代入すると,
右辺の2つ目までの項を変形する.
よって,まとめると
expの式は,
よって,以下の正規分布の密度になる.
最後に,exp外の係数をまとめる.
よって係数の分母の行列式が成立する.
すべてをまとめると,
n回の積の場合
n回積をとった場合は以下の資料にまとめられており,同様に正規分布になる.
P.A. Bromiley,"Products and Convolutions of Gaussian Probability Density Functions", http://www.tina-vision.net/docs/memos/2003-003.pdf