ホーム » 機械学習 » 多変量ガウスの標準化と特異値分解について

多変量ガウスの標準化と特異値分解について

こんにちは。

標準化は機械学習において非常に重要な概念です。スケール統一のためや学習速度の向上を目的に使われます。そこで今回は多変量ガウス分布の標準化などをやっていこうと思います。数式やいろんな公式が現れますが知らないものがあれば調べながら読むことをお勧めします。

定理

ある\mu\in\mathbf{R^n}\sum\in\mathbf{S^n}_{++}に対してX\sim N(\mu,\sum)とすると、B\in\mathbf{R^{n \times n}}が存在し次を満たす、Z = B^{-1}(X-\mu)とするとZ\sim N(0,1)

  • 共分散行列\sumがある正則行列Bを用いて\sum = BB^Tと分解できる(コレスキー分解)
  • Z=B^{-1}(X-\mu)を用いてXから異なるベクトルランダム変数Zを作る
ではまず、おなじみのLinear Algebraです。対称行列に関する以下の2つの性質
  • 任意の実対称行列A\in\mathbb{R}^{n \times n}は常にA = U\Lambda U^Tで表される、ここでUはfull-rank直行行列であり、その列にAの固有ベクトルを持ち\LambdaAの固有値を持つ対角行列である
  • もしAが正定値対称行列なら、すべての固有値は正である
共分散行列\sumは正定値なので1つ目の性質を使うことによりある適当な行列U,\Lambdaを用いて\sum = U\Lambda U^Tと書けます。また、2つ目の性質を使うことにより\Lambda ^ \frac{1}{2} \in\mathbb{R}^{n \times n}\Lambdaの各要素の二乗根に対応する要素として持つ対角行列とできます。\Lambda = \Lambda^{1/2}(\Lambda^{1/2})^Tなので代入すると

    \[\sum = U\Lambda U^T = U\Lambda^{1/2}(\Lambda^{1/2})^TU^T = U\Lambda^{1/2}(U\Lambda^{1/2})^T = BB^T\]


となります。ただしB=U\Lambda^{1/2}としました。余談ですが僕が今までやってきた中で知っておいたほうがいい分解をいくつかリストしておきます。
  • 対角化
  • 特異値分解(SVD)
  • QR分解
  • LU分解
  • コレスキー分解
特に上の2つは重要ですね、対角化は昔紹介したPCAの応用編で重要な概念になります。話が少し外れましたが上の式変形はコレスキー分解です。

逆行列の公式により、\sum^{-1} = B^{-T}B^{-1}となるので多変量ガウス分布の式は次のように書き換えられます

    \[P(x;\mu, \sum) = \frac{1}{(2\pi)^{n/2}|BB^T|^{1/2}}\exp{-\frac{1}{2}(x-\mu)^TB^{-T}B^{-1}(x-\mu)}\]

多変量標準ガウスに近づいたことがわかると思います。ここでお分かりかもしれませんが新しい変数をZ = B^{-1}(X-\mu)と定義します。X = [X_1 \cdots X_n]^T \in\mathbb{R^n}が同時密度関数f_X:\mathbf{R^n}\rightarrow\mathbf{R}によるベクトル値ランダム変数と仮定します。もしZ = H(X)\in\mathbf{R}ただしHは全単射で微分可能関数ならZは次の同時密度関数f_Z:\mathbf{R^n}\rightarrow\mathbf{R}を持ちます。
変数変換式を用いることでベクトル変数Zが次の同時密度を持つことがわかります。(ヤコビアンとかで調べてください。)

    \[p_Z(z) = \frac{1}{(2\pi)^{n/2}}\exp(-\frac{1}{2}z^Tz)\]

これはまさしくZ\sim N(0,1)です。

定理を実験

上記の定理を実際に確認してみます。作業過程は次の通り
  1. X\sim N(\mu,\sum),(\mu=[3,3]^T,\sum=diag(1,3))1000点作成する
  2. ここで作成したデータの平均\muを計算しておく
  3. 次に定理のSTEP1より共分散行列をコレスキー分解しBを求める
  4. 上記の\mu,Bを用いて新たな確率変数Z = B^{-1}(X-\mu)を作る
  5. 作った各データX,Zをscatter plotする
こんな感じになりまして。青の点がX\sim N(\mu,\sum)であり、赤の点がZ\sim N(0,I)となっていることがグラフから大体わかります。実際に出力させて確認してみてください。

データ変換行列Wとの関係

上ではどちらかというとデータを戻すという動作を行いました。いえ、標準化を戻すということにしておきます。次に標準化されたデータを変換し、その変換行列の性質を見ていきたいと思います。 今、三次元標準ガウス分布に従うデータZが1000点あるとします。そして、これを二次元に移す変換Wをかけた時のデータWZとWの関係を考察しましょう。たとえば
とういう変換をかけた場合、Cov(WZ,WZ)の固有ベクトルは
の各列ベクトルであり固有値は[ 55.27931408~,~4.49399939]です。ここでWの特異値分解W = U \sum Vを見てみます
この通りCov(WZ,WZ)の固有ベクトルはUの各列ベクトルに、固有値は特異値の平方に近い値になっていますね。数式を用いて確認してみましょう。Wの特異値分解をW = U\sum Vとし、Oは適当な零行列です

    \[WW^T = U\sum VV^T{\sum}^TV^T = U\sum{\sum}^TU^T\]

E(WZ)= WE(Z)=0であり
これより上記の予想が正しかったことがわかります。

特異値分解の関係

まずWZの共分散行列\Sigmaを対角化し\Sigma = PAP^{-1}となったとします。ここで線形変換行列WW = PA_{1/2}としておくと。ただし、A_{1/2}の各成分は行列Aのそれぞれの成分の正の平方根。WZ = PA_{1/2}Zの共分散を求めると
となります。つまり、W = PA_{1/2}とすることで,この形の共分散が達成されることがわかります。Pが直交行列であることを忘れずに。次にWの特異値を求めます。Wの特異値はWW^{T}の固有値の正の平方根です。まずWW^{T}を計算すると

    \[WW^{T} = PA_{1/2} A^{T}{1/2}P^{T} = PAP^{T}\]

これはWW^{T}の対角化そのものであるのでWの特異値はA{1/2}の対角成分となり、W^TWの固有値はWW^Tの固有値と一致するのでAの対角成分となります。つまり、\Sigmaの固有値の平方根がWの特異値となるんです。

対角化と特異値分解は奥が深いですね。ちなみに最近パソコンがかなり暑くなって調子が悪いです。でわ。

Reference


コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です