こんしゅーの統計memo

統計学のmemoをしていきます

統計で使う行列の微分

統計で使いそうな行列の性質と公式を記載しておきます. 詳しくは統計のための行列代数(,)をご参照. 全体を通して実数の範囲で考えます.

ベクトルによる微分

ベクトル \boldsymbol{x}=(x _ 1,...,x _ N)^\top による微分は,微分の対象となる関数 f(\boldsymbol{x})\boldsymbol{x} の各要素 x _ i微分したものを並べたベクトル

\displaystyle{
  \dfrac{\mathrm{d}f(\boldsymbol{x})}{\mathrm{d}\boldsymbol{x}}
    =\left(\dfrac{\mathrm{d}f(\boldsymbol{x})}{\mathrm{d}x _ 1},...,\dfrac{\mathrm{d}f(\boldsymbol{x})}{\mathrm{d}x _ N}\right)^\top
}

と定義します. ここで,関数 f(\boldsymbol{x})スカラー値であることに注意します. この定義に従って,以下の典型的なベクトルによる微分の公式を導出します.

内積に対する微分

係数ベクトル \boldsymbol{a}=(a _ 1,...,a _ N)^\top\boldsymbol{x}=(x _ 1,...,x _ N)^\top内積 \boldsymbol{a}^\top\boldsymbol{x}\boldsymbol{x} による微分は,各 x_i微分

\displaystyle{
\dfrac{\mathrm{d}\boldsymbol{a}^\top\boldsymbol{x}}{\mathrm{d}x_i}=\dfrac{\mathrm{d}}{\mathrm{d}x _ i}\sum _ {j=1}^Na _ jx _ j=a _ i 
}

となることから,

\displaystyle{
  \dfrac{\mathrm{d}\boldsymbol{a}^\top\boldsymbol{x}}{\mathrm{d}\boldsymbol{x}}
    =\boldsymbol{a}
}

となります. 微分結果の係数ベクトル \boldsymbol{a} に転置がかかっていることに注意します.

二次形式に対する微分

N\times N の係数行列

\displaystyle{
  \boldsymbol{A}
    =\begin{pmatrix}A _ {11} & \cdots & A _ {1N}\\\vdots & \ddots & \vdots\\A _ {N1} & \cdots & A _ {NN}\\\end{pmatrix}
}

\boldsymbol{x}=(x _ 1,...,x _ N)^\top の二次形式 \boldsymbol{x}^\top\boldsymbol{Ax}\boldsymbol{x} による微分を求めます. 行列 \boldsymbol{A} による微分ではなくベクトル \boldsymbol{x} による微分であることに注意します. 内積微分と同様に各 x_i微分

\displaystyle{
  \dfrac{\mathrm{d}\boldsymbol{x}^\top\boldsymbol{Ax}}{\mathrm{d}x _ i}
    =\dfrac{\mathrm{d}}{\mathrm{d}x _ i}\sum _ {j,k=1}^Nx _ jA _ {jk}x _ k
    =\sum _ {j=1}^Nx _ jA _ {ji}+\sum _ {k=1}^NA _ {ik}x _ k
}

となるので,これを列ベクトルとして並べると

\displaystyle{
  \begin{pmatrix}
    \sum _ {j=1}^NA _ {j1}x _ j+\sum _ {k=1}^NA _ {1k}x _ k\\
    \vdots\\
    \sum _ {j=1}^NA _ {jN}x _ j+\sum _ {k=1}^NA _ {Nk}x _ k\\
  \end{pmatrix}
  = \boldsymbol{Ax}+\boldsymbol{A}^\top\boldsymbol{x}
  =(\boldsymbol{A}+\boldsymbol{A}^\top)\boldsymbol{x}
}

となります.よって,二次形式の微分

\displaystyle{
  \dfrac{\mathrm{d}\boldsymbol{x}^\top\boldsymbol{Ax}}{\mathrm{d}\boldsymbol{x}}
    =(\boldsymbol{A}+\boldsymbol{A}^\top)\boldsymbol{x}
}

となることがわかります.

加えて,行列 \boldsymbol{A} が対称な行列 A _ {ij} = A _ {ji} ならば \boldsymbol{A}=\boldsymbol{A}^\top なので,

\displaystyle{
  \dfrac{\mathrm{d}\boldsymbol{x}^\top\boldsymbol{Ax}}{\mathrm{d}\boldsymbol{x}}
    =2\boldsymbol{Ax}
}

となります.

行列による微分

ベクトルによる微分と同様に, M\times N 行列

\displaystyle{
  \boldsymbol{X}
    =\begin{pmatrix}
      X _ {11} & \cdots & X _ {1N} \\\vdots & \ddots & \vdots\\ X _ {M1} & \cdots & X _ {MN} \\
    \end{pmatrix}
}

による微分も,微分の対象となる関数 f(\boldsymbol{X})\boldsymbol{X} の各要素 X _ {ij}微分したものを並べた行列

\displaystyle{
  \dfrac{\mathrm{d}f(\boldsymbol{X})}{\mathrm{d}\boldsymbol{X}}
    =\begin{pmatrix}
      \dfrac{\mathrm{d}f(\boldsymbol{X})}{\mathrm{d}X _ {11}} & \cdots & \dfrac{\mathrm{d}f(\boldsymbol{X})}{\mathrm{d}X _ {1N}} \\\vdots & \ddots & \vdots\\ \dfrac{\mathrm{d}f(\boldsymbol{X})}{\mathrm{d}X _ {M1}} & \cdots & \dfrac{\mathrm{d}f(\boldsymbol{X})}{\mathrm{d}X _ {MN}} \\
    \end{pmatrix}
}

と定義します. ここでも,関数 f(\boldsymbol{X})スカラー値であることに注意します. この定義に従って,以下の典型的な行列による微分の公式を導出します.

行列の Trace

まず,行列積のトレースを,行列の要素の和で表しておきます. \boldsymbol{A}N\times M 行列,\boldsymbol{X}M \times L 行列,\boldsymbol{B}L \times K 行列とします. 行列 \boldsymbol{A}i,j 要素を  [ \boldsymbol{A} ] _ {ij} と表すと,行列 \boldsymbol{A} のトレース \mathrm{tr}(\boldsymbol{A})

\displaystyle{
  \mathrm{tr}(\boldsymbol{A}) = \sum _ i [\boldsymbol{A}] _ {ii} = \sum _ i A _ {ii}
}

で定義されます.

行列積 \boldsymbol{AX} を和で表すと

\displaystyle{
  [\boldsymbol{AX}] _ {ij} = \sum _ {k=1}A _ {ik}X _ {kj}
}

と表されます.したがって,

\displaystyle{
  \mathrm{tr}(\boldsymbol{AX})
    =\sum _ i[\boldsymbol{AX}] _ {ii}
    =\sum _ i\sum _ kA _ {ik}X _ {ki}
}

となります.

同様に行列積 \boldsymbol{AXB}

\displaystyle{
  [\boldsymbol{AXB}] _ {ij} = \sum _ k\sum _ lA _ {ik}X _ {kl}B _ {lj}
}

と表されるので,

\displaystyle{
  \mathrm{tr}(\boldsymbol{AXB})
    =\sum _ i[\boldsymbol{AXB}] _ {ii}
    =\sum _ i\sum _ k\sum _ lA _ {ik}X _ {kl}B _ {li}
}

となります.

Trace の微分

行列積 \boldsymbol{AX} のトレース \mathrm{tr}(\boldsymbol{AX})X _ {mh}微分すると, X _ {mh} の係数を抜き出せばよいから,

\displaystyle{
  \dfrac{\mathrm{d}}{\mathrm{d}X _ {mh}}\mathrm{tr}(\boldsymbol{AX})
    =\dfrac{\mathrm{d}}{\mathrm{d}X _ {mh}}\sum _ i\sum _ kA _ {ik}X _ {ki}
    =A _ {hm}
}

となるので,

\displaystyle{
  \dfrac{\mathrm{d}\mathrm{tr}(\boldsymbol{AX})}{\mathrm{d}\boldsymbol{X}}
    =\boldsymbol{A}^\top
}

となります. 同様に,\boldsymbol{XB} のトレースの微分から

\displaystyle{
  \dfrac{\mathrm{d}}{\mathrm{d}X _ {mh}}\mathrm{tr}(\boldsymbol{XB})
    =\dfrac{\mathrm{d}}{\mathrm{d}X _ {mh}}\sum _ i\sum _ kX _ {ik}B _ {ki}
    =B _ {hm}
}

となるので,

\displaystyle{
  \dfrac{\mathrm{d}\mathrm{tr}(\boldsymbol{XB})}{\mathrm{d}\boldsymbol{X}}
    =\boldsymbol{B}^\top
}

がわかります.

また,行列積 \boldsymbol{AXB} のトレース \mathrm{tr}(\boldsymbol{AXB})X _ {mh}微分すると

\displaystyle{
  \dfrac{\mathrm{d}}{\mathrm{d}X _ {mh}}\mathrm{tr}(\boldsymbol{AXB})
    =\dfrac{\mathrm{d}}{\mathrm{d}X _ {mh}}\sum _ i\sum _ k\sum _ lA _ {ik}X _ {kl}B _ {li}
    =\sum _ iA _ {im}B _ {hi} 
    =[\boldsymbol{BA}] _ {hm}
}

と計算できるので,

\displaystyle{
  \dfrac{\mathrm{d}\mathrm{tr}(\boldsymbol{AXB})}{\mathrm{d}\boldsymbol{X}}
    =(\boldsymbol{BA})^\top=\boldsymbol{A}^\top\boldsymbol{B}^\top
}

がわかります.

二次形式の微分

ベクトルによる微分と表記を変え,N\times N の係数行列

\displaystyle{
  \boldsymbol{X}
    =\begin{pmatrix}X _ {11} & \cdots & X _ {1N}\\\vdots & \ddots & \vdots\\X _ {N1} & \cdots & X _ {NN}\\\end{pmatrix}
}

\boldsymbol{a}=(a _ 1,...,a _ N)^\top の二次形式 \boldsymbol{a}^\top\boldsymbol{Xa}\boldsymbol{X} による微分を求めます. X _ {mh}微分すると,

\displaystyle{
  \dfrac{\mathrm{d}\boldsymbol{a}^\top\boldsymbol{Xa}}{\mathrm{d}X _ {mh}}
    =\dfrac{\mathrm{d}}{\mathrm{d}x _ i}\sum _ {j,k=1}^Na _ jX _ {jk}a _ k
    =a _ ma _ h
}

となります. したがって,これらの要素を行列に表すと

\displaystyle{
  \dfrac{\mathrm{d}\boldsymbol{a}^\top\boldsymbol{Xa}}{\mathrm{d}\boldsymbol{X}}
    =\begin{pmatrix}
      a _ 1a _ 1 & \cdots & a _ 1a _ N \\
      \vdots & \ddots & \vdots\\
      a _ Na _ 1 & \cdots & a _ Na _ N \\
    \end{pmatrix}
}

となるので,

\displaystyle{
  \dfrac{\mathrm{d}\boldsymbol{a}^\top\boldsymbol{Xa}}{\mathrm{d}\boldsymbol{X}}
    =\boldsymbol{aa}^\top
}

となることがわかります.