"機械学習","信号解析","ディープラーニング"の勉強

読者です 読者をやめる 読者になる 読者になる

"機械学習","信号解析","ディープラーニング"の勉強

"機械学習","信号解析","ディープラーニング"について、それぞれ勉強しながらブログにまとめていきます。テーマは気分によってバラバラかもしれません。

一次元の正規分布から多次元正規分布へ

数学

確率・統計の基礎的な数式・統計量が分かるようになったところで、機械学習に進もうと思ってぶつかるのが多次元の壁です。一次元なら分かるんだけども、多次元になるとサッパリわからないというのは、線形代数の数式がわからないからに他ならないのですが、今回は具体的に計算を追っていくことで多次元への拡張を見たいと思います。

 

 

f:id:s0sem0y:20161006094827p:plain

 

これを見ても全く怖じけなくなるところを目指しましょう。

 

 

 基本的な確率・統計の知識

確率変数などの基本的なことは理解しておいてください。

s0sem0y.hatenablog.com

平均

確率変数xの平均とは、xの期待値のことです。

確率密度関数をp(x)としてxの平均μ_x

 

μ_x=E(x)=\int_x xp(x)dx

 

となります。離散の場合は

 

μ_x=E(x)=\sum_i x_ip(x_i)

 

です。

 

分散

確率変数xの分散とは、平均μ_xからのxの二乗誤差の期待値です。

確率密度関数をp(x)としてxの分散はσ^2_x

 

σ^2_x=E \left( (x-μ_x)^2 \right)=\int_x (x-μ_x)^2p(x)dx

 

となります。離散の場合は

 

σ^2_x=E \left( (x-μ_x)^2 \right)=\sum_i (x_i-μ_x)^2p(x_i)

 

です。

 

共分散

確率変数xと確率変数yの共分散σ^2_xyとは、同時確率密度関数をp(x,y)として以下の式で表されます。

 

σ^2_xy=E \left( (x-μ_x)(y-μ_y) \right)=\int_x \int_y (x-μ_x)(y-μ_y)p(x,y)dydx

 

離散の場合は、

 

σ^2_xy=E \left( (x-μ_x)(y-μ_y) \right)=\sum_i \sum_j (x_i-μ_x)(y_j-μ_y)p(x_i,y_j)

 

となります。インテグラルやシグマがたくさん出てきましたが、びっくりしないでください。結局のところは、2つの確率変数のそれぞれの平均からの誤差を掛けあわせて、総和を取っているだけにすぎません。

性質としては、確率変数xが大きな値を取ればとる程、yも大きな値を取るような関係にある場合には、共分散は正の値となります。 一方で確率変数が大きな値を取れば取るほどyが小さな値を取るような関係にあるときには、共分散は負となります。

 

相関係数

確率変数xと確率変数yの相関係数ρ_{xy}とは以下の式で表されます。

 

ρ_{xy}=\frac{σ^2_{xy}}{σ^2_x σ^2_y}

 

これは、共分散を正規化したものです。統計の実際の分析では、この相関係数を見ることの方が多いかもしれませんね。分母は必ず正なので、符号を決めるのは共分散のみになります。従って、共分散と同じような性質を持っており、その値の範囲が分母のおかげで-1から1に制限されています。相関係数が正である場合は、正の相関があると良い、負であれば、負の相関があると表現します。

正の値でかつ、その数値も大きい(1に近い場合は)分布が鋭くなり、小さい(0に近い場合は)散らばるようになります。これは具体例を見たほうが早いので、以下の図を参照にしてください。

 

f:id:s0sem0y:20161006083520p:plain

http://www.cuc.ac.jp/~nagaoka/2011/ouyou/10/expr/index.html

 

独立性

確率変数xと確率変数yが独立であるとは、

 

p(x,y)=p(x)p(y)

 

が成り立つということです。これは全く持って当たり前のことではないということに注意してください。独立性が成り立たない場合は

 

p(x,y)=p(x|y)p(y)=p(y|x)p(x)

 

となっているはずです。(p(x|y)=p(x)あるいはp(y|x)=p(x)が成り立っているときにも独立と言えることになる)

独立性が成り立っている例としては2つのサイコロをふるケースが考えられます。個々にサイコロをふるってそれぞれの出た目を見ようが、1個目をふって出た目を見てから、2個目をふろうが何も確率は変わらないはずです。ようするに一方がもう一方に全く影響を与えないのが独立であるということなのです。

独立性が成り立たないケースは、トランプの山から2枚のカードを引くケースです。1枚目の結果次第で、2枚目のカードの確率は変わりますね。

 

独立であるときは必ず相関係数は0になります(逆は必ずしも成り立つとは限らない)。 それと同時に、独立であれば共分散も0になります。

 

 

多次元正規分布へ

一次元の正規分布

一次元の正規分布は以下の式で表されます。

 

f(x)=\frac{1}{\sqrt{2π^2σ_x^2}} \exp \left(- \frac{(x-μ_x)^2}{2σ_x^2} \right)

 

この中でも特別に、μ_x=0,σ_x^2=1であるような正規分布を、標準正規分布と呼びます。一般に、正規分布は平均と分散の値を決めればその形状が決まるので、平均μ分散[σ^2]の正規分布をN(μ,σ^2)などと表記することがあります。標準正規分布の場合はN(0,1)と表記されることになります。

以下は標準正規分布です。

 

f:id:s0sem0y:20161006085010p:plain

 

特別な多次元標準正規分布

確率変数x_i (i=1,...,N)を考え、この確率変数は全て、独立に標準正規分布に従うとします。今、N個の確率変数を成分に持つベクトル\bf xを設定しておきましょう。

 

\bf x=(x_1,...,x_N)^T

 

もしもこのベクトル表記を使わない場合は、とんでもなく大変な目にあいます。線形代数の表記の有り難みが、計算をしてみることで分かるのです。

 

今、N個の確率変数は全て独立なので、その同時分布p(x_1,...,x_N)=p(\bf x)

 

p(x_1,...,x_N)=p(\bf x)=p(x_1)p(x_2)...p(x_N)=\prod_{n=1}^Np(x_N)

 

と、個々の確率密度関数の積となります。一個一個は標準正規分布に従っているので、標準正規分布のN乗を求めればよいことになります。

 

N(0,1)=\frac{1}{\sqrt{2π^2}} \exp \left(- \frac{x^2}{2} \right)

 

p(\bf x)=\frac{1}{(\sqrt{2π^2})^N} \exp \left(-\sum_{i=1}^{N} \frac{x_i^2}{2} \right)

 

ここまでは簡単ですね。\expの外は単純にn乗するだけで、中は和になります。この和を表現するためには、ベクトルの内積を使えば非常に簡単になりますね。

 

p( \bf x )=\frac{1}{(\sqrt{2π^2})^N} \exp \left( -\frac {\bf x^Tx} {2} \right)

 

これが、確率変数\bf xの各成分が標準正規分布に独立に従うときの、多次元正規分布になります。一般的な多次元正規分布は、これを拡張することによって得られます。

 

ベクトル、行列を用いた平均と分散の表記

一度ここで、ベクトルの表記に慣れておきましょう。

\bf xはN個の確率変数を並べたものです。従って、確率変数x_iの平均μ_iを同様にして並べたものを、\bf xの平均

 

\bf μ=(μ_1,...,μ_N)^T

 

と定義しておきます。特別なことは何1つありません。

各成分毎に個別に計算がなされているだけです。

 

「同様にN個の分散を並べたものをベクトルに」と考えたいところなのですが、ここは行列を使って表現することにします。x_ix_jの共分散の式を見てみると

 

σ^2_{x_i x_j}=E \left( (x_i-μ_{x_i})(x_j-μ_{x_j}) \right)

 

となっています。もしも普通にx_iの分散を求めたければi=jとして計算すればいいだけの話です。ですから、分散と共分散は一緒に表してしまったほうがいいんです。

 

N個の確率変数があるとき、x_1x_1の分散、x_1x_2の分散...と2つの組み合わせをひたすら考えていくと、N^2個の組み合わせが考えられます。ならば、それぞれの組み合わせの分散をN✕Nの行列に入れてしまうのが一番ラクな表現方法なのです。

すなわち、N✕Nの行列Σi,j成分にσ^2_{x_i x_j}を入れておこうという魂胆です。多次元の一般的場合が想像付くように、3次元の場合を以下に示します。

 

Σ = \begin{pmatrix} σ^2_{x_1}  σ^2_{x_1x_2} σ^2_{x_1x_3} \\ σ^2_{x_2x_1}   σ^2_{x_2}  σ^2_{x_2x_3} \\ σ^2_{x_3x_1} σ^2_{x_3x_2} σ^2_{x_3}\end{pmatrix}

 

対角成分には分散が、非対角成分には共分散が格納されているので、この行列を分散共分散行列と呼びます。ちなみにσ^2_{x_i x_j}=σ^2_{x_j x_i}であるため(これは元の定義式を見れば明らかです)、分散共分散行列は対称行列になっています。

そして、分散共分散行列Σi,j成分は

 

σ^2_{x_i x_j}=E \left( (x_i-μ_{x_i})(x_j-μ_{x_j}) \right)

 

ということですから、これをベクトル表記に直してしまうと

 

Σ=E\left( ({\bf x-μ_x})({\bf x-μ_x})^T\right)      (縦ベクトル✕横ベクトルは行列)

 

とも表現できることになります。

 

ちなみに各成分が独立な標準正規分布に従う場合の多次元正規分布は、共分散が全ての組み合わせで0(独立ならば共分散は0でしたね)で、分散はすべて1となっているので、分散共分散行列は単位行列になります。

 

先ほど求めた数式は以下ですが、

 

p( \bf x )=\frac{1}{(\sqrt{2π^2})^N} \exp \left( -\frac {\bf x^Tx} {2} \right)

 

以下の一般的な多次元正規分布と見比べてください。

 

f:id:s0sem0y:20161006094953p:plain

 

共分散行列が単位行列なので、行列式|Σ|=1であり、逆行列Σ^{-1}なのでそれを代入しただけになっています。次元はN→mになっていますが本質的な問題ではありません。また平均0のケースを考えているので、平均も消えています。

 

だいぶ、数式に見慣れているのではないでしょうか。あとは、一般的な場合に平均と分散共分散がどのように現れるのかを確認するだけです。

 

一般の多次元正規分布の概観

 先ほどまでは、各成分が独立かつ、平均が0で分散が1の正規分布(標準正規分布)に従う多次元正規分布(標準多次元正規分布)を考えていました。次は一般的な多次元正規分布を考えます。

先に結論を述べると、多次元正規分布は、先程まで考えてきた標準多次元正規分布を線形変換(回転+縮小・拡大)し、定数ベクトル分移動したものなのです。

 

下の図が標準正規分布で、その右の図がこれを真上から見たものとします。

f:id:s0sem0y:20161006100453p:plain f:id:s0sem0y:20161006101242p:plain

 

真上から見た図を適当な方向に縮小して、更に位置をずらしたのが一般的な多次元正規分布なのです(今回は二次元の例です。山の高さが確率を表しています)。

 

 

f:id:s0sem0y:20161006101134p:plain

 

 

一般の多次元正規分布の導入

これを数式を導入していくと、確率変数ベクトル\bf xを線形変換Aで変換し、その位置を\bf μ_zだけずらした確率変数ベクトルを\bf zとします。

 

{\bf z}=A{\bf x+μ_z}

 

これの平均と分散を計算してみましょう。期待値演算は確率変数にしか作用しないので

 

μ_z=E({\bf z})=AE({\bf x})+\bf μ_z=μ_z 

 

Σ_z=E \left( ({\bf z-μ_z}) ({\bf z-μ_z})^T \right) = E \left ( ({\bf Ax}) ({\bf Ax})^T \right) = E(A{\bf xx}^TA^T)=AA^T

 

と求まります。 1つ目の平均に関しては\bf xは平均が0でしたね。分散共分散行列に関しては、{\bf xx}^T=Σ_x=I(単位行列)でした。

 

あとは、ひたすら式変形が待っています。

 

{\bf z}=A{\bf x+μ_z} ⇔ A^{-1}({\bf z-μ_z})=\bf x

 

これの微分を求めると多変数の微分を知っている必要がありますが、

 

dx_1dx_2...dx_N=|det(A^-1)|dz_1dz_2...dz_N

 

となります。これを標準多次元正規分布に辺ごとに乗じてやると

 

p( \bf x )=\frac{1}{(\sqrt{2π^2})^N} \exp \left( -\frac {\bf x^Tx} {2} \right)

 

 

p( \bf x )dx_1dx_2...dx_N=\frac{1}{(\sqrt{2π^2})^N} \exp \left( -\frac {\bf x^Tx} {2} \right)|det(A^{-1})|dz_1dz_2...dz_N ]

 

⇔  |det(A)|^{-1}=|det(A^{-1})|より

 

p( \bf x )dx_1dx_2...dx_N=\frac{1}{(\sqrt{2π^2})^N|det(A)|} \exp \left( -\frac {\bf x^Tx} {2} \right)dz_1dz_2...dz_N

 

 

p( \bf x )dx_1dx_2...dx_N=\frac{1}{(\sqrt{2π^2})^N \sqrt {|det(Σ)|} } \exp \left( -\frac {\bf x^Tx} {2} \right)dz_1dz_2...dz_N

 

ここまで式変形できたら、一般の多次元正規分布の確率密度関数f({\bf z})p({\bf x})との関係f({\bf z})dz_1...dz_N=f({\bf x})dx_1...dx_Nを使って

 

f({\bf z})=\frac{1}{(\sqrt{2π^2})^N \sqrt {|det(Σ)|} } \exp \left( -\frac {\bf x^Tx} {2} \right)

 

が得られます。あとは指数の中身に関してA^{-1}({\bf z-μ_z})=\bf xを代入すると

 

f({\bf z})=\frac{1}{(\sqrt{2π^2})^N \sqrt {|det(Σ)|} } \exp \left( -\frac {\bf (z-μ_z)^TΣ_z^{-1}(z-μ_z)} {2} \right)

 

が得られます。代入の部分は非常に簡単なので是非チャレンジしてみてください。

ここまでの数式が完全に追えたかは分かりませんが、きっと

 

f:id:s0sem0y:20161006094827p:plain

 

には怖気づかなくなっているのではないでしょうか。