からっぽのしょこ

読んだら書く!書いたら読む!同じ事は二度調べ(たく)ない

変数ベクトルと平均ベクトル・分散共分散行列の関係の導出

はじめに

 機械学習で登場する確率分布について色々な角度から理解したいシリーズです。

 この記事では、多次元ガウス分布やマハラノビス距離における二次形式の計算を確認します。

【他の記事一覧】

www.anarchive-beta.com

【この記事の内容】

変数ベクトルと平均ベクトル・分散共分散行列の関係の導出

 多変量正規分布(multivariate normal distribution)・多次元ガウス分布(multivariate Gaussian distribution)やマハラノビス距離(Mahalanobis' distance)における二次形式の計算を確認します。

変数とパラメータの関係

 平均ベクトルと分散共分散行列の定義を数式で確認します。

変数ベクトルの設定

  D 次元の変数を  D 次元ベクトル  \mathbf{x} とします。

 \displaystyle
\mathbf{x}
    = \begin{bmatrix}
          x_1 \\
          x_2 \\
          \vdots \\
          x_D
      \end{bmatrix}

 各次元の変数を  x_d で表します。

平均ベクトルとの関係

  \mathbf{x} の平均ベクトルを  D 次元ベクトル  \boldsymbol{\mu} とします。

 \displaystyle
\begin{aligned}
\boldsymbol{\mu}
   &= \mathbb{E}[\mathbf{x}]
\\
   &= \mathbb{E} \left[
          \begin{matrix}
              x_1 \\
              x_2 \\
              \vdots \\
              x_D
          \end{matrix}
      \right]
\\
   &= \begin{bmatrix}
          \mathbb{E}[x_1] \\
          \mathbb{E}[x_2] \\
          \vdots \\
          \mathbb{E}[x_D]
      \end{bmatrix}
\end{aligned}

途中式の途中式(クリックで展開)


  • 1:  \mathbf{x} の平均を  \boldsymbol{\mu} とおきます。
  • 2:  \mathbf{x} の要素を明示します。
  • 3: ベクトルの平均を要素ごとの平均に変形します。

 平均ベクトル(の各要素)は、各変数の平均で定義されます。

 各変数の平均を  \mu_d = \mathbb{E}[x_d] で置き換えます。

 \displaystyle
\boldsymbol{\mu}
    = \begin{bmatrix}
          \mu_1 \\
          \mu_2 \\
          \vdots \\
          \mu_D
      \end{bmatrix}


分散共分散行列との関係

  \mathbf{x} の分散共分散行列を  D \times D 行列  \boldsymbol{\Sigma} とします。

 \displaystyle
\begin{aligned}
\boldsymbol{\Sigma}
   &= \mathbb{E} \Bigl[
          (\mathbf{x} - \mathbb{E}[\mathbf{x}])
          (\mathbf{x} - \mathbb{E}[\mathbf{x}])^{\top}
      \Bigr]
\\
   &= \mathbb{E} \left[
          \begin{bmatrix}
              x_1 - \mathbb{E}[x_1] \\
              x_2 - \mathbb{E}[x_2] \\
              \vdots \\
              x_D - \mathbb{E}[x_D]
          \end{bmatrix}
          \begin{bmatrix}
              x_1 - \mathbb{E}[x_1] & 
              x_2 - \mathbb{E}[x_2] & 
              \cdots & 
              x_D - \mathbb{E}[x_D]
          \end{bmatrix}
      \right]
\\
   &= \mathbb{E} \left[
          \begin{matrix}
              (x_1 - \mathbb{E}[x_1]) (x_1 - \mathbb{E}[x_1]) & 
              (x_1 - \mathbb{E}[x_1]) (x_2 - \mathbb{E}[x_2]) & 
              \cdots & 
              (x_1 - \mathbb{E}[x_1]) (x_D - \mathbb{E}[x_D]) \\
              (x_2 - \mathbb{E}[x_2]) (x_1 - \mathbb{E}[x_1]) & 
              (x_2 - \mathbb{E}[x_2]) (x_2 - \mathbb{E}[x_2]) & 
              \cdots & 
              (x_2 - \mathbb{E}[x_2]) (x_D - \mathbb{E}[x_D]) \\
              \vdots & \vdots & \ddots & \vdots \\
              (x_D - \mathbb{E}[x_D]) (x_1 - \mathbb{E}[x_1]) & 
              (x_D - \mathbb{E}[x_D]) (x_2 - \mathbb{E}[x_2]) & 
              \cdots & 
              (x_D - \mathbb{E}[x_D]) (x_D - \mathbb{E}[x_D])
          \end{matrix}
      \right]
\\
   &= \begin{bmatrix}
          \mathbb{E}[(x_1 - \mathbb{E}[x_1]) (x_1 - \mathbb{E}[x_1])] & 
          \mathbb{E}[(x_1 - \mathbb{E}[x_1]) (x_2 - \mathbb{E}[x_2])] & 
          \cdots & 
          \mathbb{E}[(x_1 - \mathbb{E}[x_1]) (x_D - \mathbb{E}[x_D])] \\
          \mathbb{E}[(x_2 - \mathbb{E}[x_2]) (x_1 - \mathbb{E}[x_1])] & 
          \mathbb{E}[(x_2 - \mathbb{E}[x_2]) (x_2 - \mathbb{E}[x_2])] & 
          \cdots & 
          \mathbb{E}[(x_2 - \mathbb{E}[x_2]) (x_D - \mathbb{E}[x_D])] \\
          \vdots & \vdots & \ddots & \vdots \\
          \mathbb{E}[(x_D - \mathbb{E}[x_D]) (x_1 - \mathbb{E}[x_1])] & 
          \mathbb{E}[(x_D - \mathbb{E}[x_D]) (x_2 - \mathbb{E}[x_2])] & 
          \cdots & 
          \mathbb{E}[(x_D - \mathbb{E}[x_D]) (x_D - \mathbb{E}[x_D])]
      \end{bmatrix}
\end{aligned}

途中式の途中式(クリックで展開)


  • 1: 偏差ベクトル  \mathbf{x} - \mathbb{E}[\mathbf{x}] の縦ベクトルと横ベクトルの積の平均を  \boldsymbol{\Sigma} とおきます。
  • 2:  \mathbf{x} - \mathbb{E}[\mathbf{x}] の要素を明示します。
  • 3: 縦ベクトルと横ベクトルの積を計算します。
  • 4: 行列の平均を要素ごとの平均に変形します。

 分散共分散行列(の各要素)は、各変数の(組み合わせの)共分散(偏差の積の平均)で定義されます。

 各変数の(組み合わせの)共分散を  \sigma_{i,j} = \mathbb{E}[(x_i - \mathbb{E}[x_i]) (x_j - \mathbb{E}[x_j])] で置き換えます。

 \displaystyle
\boldsymbol{\Sigma}
    = \begin{bmatrix}
          \sigma_{1,1} & \sigma_{1,2} & \cdots & \sigma_{1,D} \\
          \sigma_{2,1} & \sigma_{2,2} & \cdots & \sigma_{2,D} \\
          \vdots & \vdots & \ddots & \vdots \\
          \sigma_{D,1} & \sigma_{D,2} & \cdots & \sigma_{D,D}
      \end{bmatrix}

 各変数の分散(同じ変数の共分散)を  \sigma_d^2 = \sigma_{d,d} = \mathbb{E}[(x_d - \mathbb{E}[x_d])^2] で置き換えます。

 \displaystyle
\boldsymbol{\Sigma}
    = \begin{bmatrix}
          \sigma_1^2   & \sigma_{1,2} & \cdots & \sigma_{1,D} \\
          \sigma_{2,1} & \sigma_2^2   & \cdots & \sigma_{2,D} \\
          \vdots & \vdots & \ddots & \vdots \\
          \sigma_{D,1} & \sigma_{D,2} & \cdots & \sigma_D^2
      \end{bmatrix}

  \boldsymbol{\Sigma} は正定値行列です。

精度行列との関係

  \mathbf{x} の精度行列を  D \times D 行列  \boldsymbol{\Lambda} とします。

 \displaystyle
\boldsymbol{\Lambda}
    = \boldsymbol{\Sigma}^{-1}

 精度行列は、分散共分散行列の逆行列で定義されます。

 (逆行列の各要素を元の要素を用いて表現するのは困難なので、)各要素を  \lambda_{i,j} で表します。

 \displaystyle
\boldsymbol{\Lambda}
    = \begin{bmatrix}
          \lambda_{1,1} & \lambda_{1,2} & \cdots & \lambda_{1,D} \\
          \lambda_{2,1} & \lambda_{2,2} & \cdots & \lambda_{2,D} \\
          \vdots & \vdots & \ddots & \vdots \\
          \lambda_{D,1} & \lambda_{D,2} & \cdots & \lambda_{D,D}
      \end{bmatrix}


 以上で、それぞれの関係を確認しました。

二次形式の計算

 平均ベクトルと分散共分散行列を用いた計算例を数式で確認します。

二次形式の設定

 偏差ベクトルと分散共分散行列の逆行列の2次形式を考えます。

 \displaystyle
\begin{aligned}
(\mathbf{x} - \boldsymbol{\mu})^{\top}
\boldsymbol{\Sigma}^{-1}
(\mathbf{x} - \boldsymbol{\mu})
   &= \begin{bmatrix}
          x_1 - \mu_1 & x_2 - \mu_2 & \cdots & x_D - \mu_D
      \end{bmatrix}
      \begin{bmatrix}
          \lambda_{1,1} & \lambda_{1,2} & \cdots & \lambda_{1,D} \\
          \lambda_{2,1} & \lambda_{2,2} & \cdots & \lambda_{2,D} \\
          \vdots & \vdots & \ddots & \vdots \\
          \lambda_{D,1} & \lambda_{D,2} & \cdots & \lambda_{D,D}
      \end{bmatrix}
      \begin{bmatrix}
          x_1 - \mu_1 \\
          x_2 - \mu_2 \\
          \vdots \\
          x_D - \mu_D
      \end{bmatrix}
\\
   &= \begin{bmatrix}
          \sum_{i=1}^D (x_i - \mu_i) \lambda_{i,1} & 
          \sum_{i=1}^D (x_i - \mu_i) \lambda_{i,2} & 
          \cdots & 
          \sum_{i=1}^D (x_i - \mu_i) \lambda_{i,D}
      \end{bmatrix}
      \begin{bmatrix}
          x_1 - \mu_1 \\
          x_2 - \mu_2 \\
          \vdots \\
          x_D - \mu_D
      \end{bmatrix}
\\
   &= \sum_{i=1}^D \sum_{j=1}^D
          (x_i - \mu_i) \lambda_{i,j} (x_j - \mu_j)
\end{aligned}

途中式の途中式(クリックで展開)


  • 1: 偏差ベクトル  \mathbf{x} - \boldsymbol{\mu} と精度行列  \boldsymbol{\Sigma}^{-1} の二次形式の式を立て、要素を明示します。
  • 2: 横ベクトルと行列の積を計算します。
  • 3: ベクトルの内積(横ベクトルと縦ベクトルの積)を計算します。

  1 \times D D \times D D \times 1 の計算なので、スカラです。

対角行列の場合

 無相関(共分散が0)  \sigma_{i,j} = 0 な分散共分散行列の場合を考えます。

 \displaystyle
\begin{aligned}
\boldsymbol{\Sigma}
   &= \begin{bmatrix}
          \sigma_1^2 & 0 & \cdots & 0 \\
          0 & \sigma_2^2 & \cdots & 0 \\
          \vdots & \vdots & \ddots & \vdots \\
          0 & 0 & \cdots & \sigma_D^2
      \end{bmatrix}
\\
   &= \mathrm{diag}(\sigma_1^2, \sigma_2^2, \cdots, \sigma_D^2)
\end{aligned}

 対角行列の逆行列は、対角要素の逆数を対角要素とする行列

 \displaystyle
\begin{aligned}
\boldsymbol{\Sigma}^{-1}
   &= \begin{bmatrix}
          \frac{1}{\sigma_1^2} & 0 & \cdots & 0 \\
          0 &  \frac{1}{\sigma_2^2} & \cdots & 0 \\
          \vdots & \vdots & \ddots & \vdots \\
          0 & 0 & \cdots &  \frac{1}{\sigma_D^2}
      \end{bmatrix}
\\
   &= \mathrm{diag} \left(
          \frac{1}{\sigma_1^2}, 
          \frac{1}{\sigma_2^2}, 
          \cdots, 
          \frac{1}{\sigma_D^2}
      \right)
\end{aligned}

になるので、二次形式は次のようになります。

 \displaystyle
\begin{aligned}
(\mathbf{x} - \boldsymbol{\mu})^{\top}
\mathrm{diag}(\sigma_1^2, \sigma_2^2, \cdots, \sigma_D^2)^{-1}
(\mathbf{x} - \boldsymbol{\mu})
   &= \begin{bmatrix}
          x_1 - \mu_1 & x_2 - \mu_2 & \cdots & x_D - \mu_D
      \end{bmatrix}
      \begin{bmatrix}
          \frac{1}{\sigma_1^2} & 0 & \cdots & 0 \\
          0 & \frac{1}{\sigma_2^2} & \cdots & 0 \\
          \vdots & \vdots & \ddots & \vdots \\
          0 & 0 & \cdots & \frac{1}{\sigma_D^2}
      \end{bmatrix}
      \begin{bmatrix}
          x_1 - \mu_1 \\
          x_2 - \mu_2 \\
          \vdots \\
          x_D - \mu_D
      \end{bmatrix}
\\
   &= \begin{bmatrix}
          (x_1 - \mu_1) \frac{1}{\sigma_1^2} & 
          (x_2 - \mu_2) \frac{1}{\sigma_2^2} & 
          \cdots & 
          (x_D - \mu_D) \frac{1}{\sigma_D^2}
      \end{bmatrix}
      \begin{bmatrix}
          x_1 - \mu_1 \\
          x_2 - \mu_2 \\
          \vdots \\
          x_D - \mu_D
      \end{bmatrix}
\\
   &= \sum_{d=1}^D
          (x_d - \mu_d) \frac{1}{\sigma_d^2} (x_d - \mu_d)
\\
   &= \sum_{d=1}^D
          \frac{(x_d - \mu_d)^2}{\sigma_d^2}
\end{aligned}

途中式の途中式(クリックで展開)


  • 1: 分散共分散行列  \boldsymbol{\Sigma} を対角行列とします。
  • 2: 他の要素は0になり消えるので、対応する次元の要素の積になります。
  • 3: 同じ次元の要素の積の和になります。

 「偏差の2乗」と「分散の逆数」の積の和になります。

スカラの場合

 無相関  \sigma_{i,j} = 0 で分散が一様  \sigma_d^2 = \sigma^2 な分散共分散行列の場合を考えます。

 \displaystyle
\begin{aligned}
\boldsymbol{\Sigma}
   &= \begin{bmatrix}
          \sigma^2 & 0 & \cdots & 0 \\
          0 & \sigma^2 & \cdots & 0 \\
          \vdots & \vdots & \ddots & \vdots \\
          0 & 0 & \cdots & \sigma^2
      \end{bmatrix}
\\
   &= \sigma^2
      \begin{bmatrix}
          1 & 0 & \cdots & 0 \\
          0 & 1 & \cdots & 0 \\
          \vdots & \vdots & \ddots & \vdots \\
          0 & 0 & \cdots & 1
      \end{bmatrix}
\\
   &= \sigma^2 \mathbf{I}
\end{aligned}

 対角行列の逆行列は、対角要素の逆数を対角要素とする行列

 \displaystyle
\begin{aligned}
\boldsymbol{\Sigma}^{-1}
   &= \begin{bmatrix}
          \frac{1}{\sigma^2} & 0 & \cdots & 0 \\
          0 & \frac{1}{\sigma^2} & \cdots & 0 \\
          \vdots & \vdots & \ddots & \vdots \\
          0 & 0 & \cdots & \frac{1}{\sigma^2}
      \end{bmatrix}
\\
   &= \frac{1}{\sigma^2}
      \begin{bmatrix}
          1 & 0 & \cdots & 0 \\
          0 & 1 & \cdots & 0 \\
          \vdots & \vdots & \ddots & \vdots \\
          0 & 0 & \cdots & 1
      \end{bmatrix}
\\
   &= \frac{1}{\sigma^2}
      \mathbf{I}
\end{aligned}

になるので、二次形式は次のようになります。

 \displaystyle
\begin{aligned}
(\mathbf{x} - \boldsymbol{\mu})^{\top}
(\sigma^2 \mathbf{I})^{-1}
(\mathbf{x} - \boldsymbol{\mu})
   &= \begin{bmatrix}
          x_1 - \mu_1 & x_2 - \mu_2 & \cdots & x_D - \mu_D
      \end{bmatrix}
      \begin{bmatrix}
          \frac{1}{\sigma^2} & 0 & \cdots & 0 \\
          0 & \frac{1}{\sigma^2} & \cdots & 0 \\
          \vdots & \vdots & \ddots & \vdots \\
          0 & 0 & \cdots & \frac{1}{\sigma^2}
      \end{bmatrix}
      \begin{bmatrix}
          x_1 - \mu_1 \\
          x_2 - \mu_2 \\
          \vdots \\
          x_D - \mu_D
      \end{bmatrix}
\\
   &= \begin{bmatrix}
          (x_1 - \mu_1) \frac{1}{\sigma^2} & 
          (x_2 - \mu_2) \frac{1}{\sigma^2} & 
          \cdots & 
          (x_D - \mu_D) \frac{1}{\sigma^2}
      \end{bmatrix}
      \begin{bmatrix}
          x_1 - \mu_1 \\
          x_2 - \mu_2 \\
          \vdots \\
          x_D - \mu_D
      \end{bmatrix}
\\
   &= \sum_{d=1}^D
          (x_d - \mu_d) \frac{1}{\sigma^2} (x_d - \mu_d)
\\
   &= \frac{1}{\sigma^2}
      \sum_{d=1}^D
          (x_d - \mu_d)^2
\end{aligned}

途中式の途中式(クリックで展開)


  • 1: 分散共分散行列  \boldsymbol{\Sigma} を分散  \sigma^2 と単位行列  \mathbf{I} の積とします。
  • 2: 他の要素は0になり消えるので、対応する次元の要素の積になります。
  • 3: 同じ次元の要素の積の和になります。
  • 4:  \sigma^2 は各次元と無関係なので  \sum_{d=1}^D の外に出せます。

 「偏差の2乗和」と「分散の逆数」の積になります。

単位行列の場合

 共分散が  \sigma_{i,j} = 0 で分散が  \sigma_d^2 = 1 な分散共分散行列の場合を考えます。

 \displaystyle
\boldsymbol{\Sigma}
    = \mathbf{I}
    = \begin{bmatrix}
          1 & 0 & \cdots & 0 \\
          0 & 1 & \cdots & 0 \\
          \vdots & \vdots & \ddots & \vdots \\
          0 & 0 & \cdots & 1
      \end{bmatrix}

 単位行列の逆行列は単位行列  \mathbf{I}^{-1} = \mathbf{I} なので、二次形式は次のようになります。

 \displaystyle
\begin{aligned}
(\mathbf{x} - \boldsymbol{\mu})^{\top}
\mathbf{I}^{-1}
(\mathbf{x} - \boldsymbol{\mu})
   &= \begin{bmatrix}
          x_1 - \mu_1 & x_2 - \mu_2 & \cdots & x_D - \mu_D
      \end{bmatrix}
      \begin{bmatrix}
          1 & 0 & \cdots & 0 \\
          0 & 1 & \cdots & 0 \\
          \vdots & \vdots & \ddots & \vdots \\
          0 & 0 & \cdots & 1
      \end{bmatrix}
      \begin{bmatrix}
          x_1 - \mu_1 \\
          x_2 - \mu_2 \\
          \vdots \\
          x_D - \mu_D
      \end{bmatrix}
\\
   &= \begin{bmatrix}
          x_1 - \mu_1 & x_2 - \mu_2 & \cdots & x_D - \mu_D
      \end{bmatrix}
      \begin{bmatrix}
          x_1 - \mu_1 \\
          x_2 - \mu_2 \\
          \vdots \\
          x_D - \mu_D
      \end{bmatrix}
\\
   &= \sum_{d=1}^D
          (x_d - \mu_d) (x_d - \mu_d)
\\
   &= \sum_{d=1}^D
          (x_d - \mu_d)^2
\end{aligned}

途中式の途中式(クリックで展開)


  • 1: 分散共分散行列  \boldsymbol{\Sigma} を単位行列  \mathbf{I} の積とします。
  • 2: 単位行列の性質  \mathbf{a} \mathbf{I} = \mathbf{a} より、変化しません。
  • 3-4: 同じ次元の要素の積の和になります。

 偏差の2乗和になります。

 この記事では、多次元ガウスやマハラノビス距離の二次形式の計算を確認しました。次の記事では、マハラノビス距離の定義を確認します。

参考文献

おわりに

 別シリーズで回帰モデルの記事を書いていた際に、試行錯誤の末にできた3次元マハラノビス距離のグラフの作り方を忘れる前に記事にしている途中に、その前の記事としてマハラノビス距離の定義の記事を書き始めて、その補助の記事としてガウス分布と共通する内容をまとめておいた方が話の流れがいいなと書いたのがこの記事です。

 8月10日はばってんの日ということで、ばってん少女隊のライブ映像をどうぞ♪

 半年ほど前に瀬田さくらさん(狐の姿)に魅せられて追い始めたのですが、先日引退を発表されまして、こんなことなら知らなければよかったとギリギリ間に合ってよかったの気持ちの狭間で揺蕩っている今日この頃です。

【次の内容】

www.anarchive-beta.com

www.anarchive-beta.com