正定値行列・半正定値行列

正定値行列と半正定値行列の様々な性質について述べる。
なお、本稿では特に断りがない限り実行列のみを扱う。

目次

実対称行列の性質

正定値行列・半正定値行列は対称行列でもあるので、まずは準備として実対称行列において成り立つ性質を確認する。

定義

正方行列\(A\)が対称行列であるとは、

\begin{align*} A^\top = A \end{align*}

が成り立つことである。

固有値・固有ベクトル

一般に実行列の固有値は複素数値を取り得るが、実対称行列では固有値が実数にしかならないことを証明する。

\(A\)を実対称行列とし、\(\lambda,v\)を\(A\)の任意の固有対 (=固有値と固有ベクトル) とする。
このとき、

\begin{align*} v^\ast Av &= v^\ast \lambda v \\ &= \lambda v^\ast v \\ &= \lambda \|v\|^2 \end{align*}

という関係が成り立つ。(\(v^\ast\)は\(v\)の随伴、つまり複素共役の転置)
一方、\(A\)が実対称行列であることから、

\begin{align*} v^\ast Av &= \left(A^\ast v\right)^\ast v \\ &= (Av)^\ast v \\ &= (\lambda v)^\ast v \\ &= \bar{\lambda}v^\ast v \\ &= \bar{\lambda}\|v\|^2 \end{align*}

という関係も成り立つ。
固有ベクトルの定義から\(v\neq0\)なので、\(\lambda=\bar{\lambda}\)となり\(\lambda\)は実数であることがわかる。

また、固有ベクトルについて、

\begin{align*} A\bar{v} &= \overline{Av} \\ &= \overline{\lambda v} \\ &= \lambda\bar{v} \end{align*}

となることから、

\begin{align*} A(v+\bar{v}) &= Av + A\bar{v} \\ &= \lambda v + \lambda\bar{v} \\ &= \lambda(v+\lambda{v}) \end{align*}

となり、実ベクトル\(v+\bar{v}\)は\(\lambda\)に対応する固有ベクトルの一つになる。

対称行列の固有値・固有ベクトル

実対称行列の全ての固有値は実数である。
また、全ての固有ベクトルも実ベクトルから選ぶことができる。

対角化 (固有値分解)

実対称行列\(A\)が実直交行列\(P\)によって対角化できることを証明する。

対称行列の対角化 (固有値分解)

実対称行列\(A\)に対して、\(A=PDP^\top\)となるような実直交行列\(P\)と実対角行列\(D\)が存在する。

証明

\(A\)が\(1\times1\)行列の場合は自明。

\((n-1)\times(n-1)\)行列の場合に命題が成り立つとする。
\(A\)が\(n\times n\)行列のとき、\(A\)から固有対\((\lambda,v)\)を適当に一つ取る。ただし、\(v\)は\(\|v\|^2=1\)を満たす実ベクトルとなるように選ぶ。
また、 (実) 直交行列\(R\)を\(Rv=e_1\)となるように適当に取る。(\(e_i\)は第\(i\)成分が1でそれ以外が0となるようなベクトル)

\(B:=RAR^\top\)とすると、これもまた実対称行列になる。
\(B\)の\(i,j\)成分は、

\begin{align*} e_i^\top Be_j &= e_i^\top RAR^\top e_j \\ &= \left(RAR^\top e_i\right)^\top e_j \\ \end{align*}

となる。特に\(i=1\)のとき、

\begin{align*} e_1^\top Be_j &= \left(RAR^\top e_1\right)^\top e_j \\ &= \left(RAR^\top Rv\right)^\top e_j \\ &= \left(RAv\right)^\top e_j \\ &= \left(R(\lambda v)\right)^\top e_j \\ &= \lambda\left(Rv\right)^\top e_j \\ &= \lambda e_1^\top e_j \\ &= \lambda \delta_{1j} \\ \end{align*}

となる。
したがって、\(B\)は

\begin{align*} B = \left( \begin{array}{c:ccc} \lambda && 0 & \\ \hdashline \\ 0 && \tilde{B} & \\ \\ \end{array} \right) \end{align*}

のように表すことができる。
ここで\(\tilde{B}\)は\((n-1)\times(n-1)\)の対称行列なので、\(\tilde{B}=\tilde{Q}\tilde{D}\tilde{Q}^\top\)と対角化することができる。したがって、

\begin{align*} B &= \left( \begin{array}{c:ccc} \lambda && 0 & \\ \hdashline \\ 0 && \tilde{B} & \\ \\ \end{array} \right) \\ &= \left( \begin{array}{c:ccc} \lambda && 0 & \\ \hdashline \\ 0 && \tilde{Q}\tilde{D}\tilde{Q}^\top & \\ \\ \end{array} \right) \\ &= \left( \begin{array}{c:ccc} 1 && 0 & \\ \hdashline \\ 0 && \tilde{Q} & \\ \\ \end{array} \right) \left( \begin{array}{c:ccc} \lambda && 0 & \\ \hdashline \\ 0 && \tilde{D} & \\ \\ \end{array} \right) \left( \begin{array}{c:ccc} 1 && 0 & \\ \hdashline \\ 0 && \tilde{Q}^\top & \\ \\ \end{array} \right) \\ &= \left( \begin{array}{c:ccc} 1 && 0 & \\ \hdashline \\ 0 && \tilde{Q} & \\ \\ \end{array} \right) \left( \begin{array}{c:ccc} \lambda && 0 & \\ \hdashline \\ 0 && \tilde{D} & \\ \\ \end{array} \right) \left( \begin{array}{c:ccc} 1 && 0 & \\ \hdashline \\ 0 && \tilde{Q} & \\ \\ \end{array} \right)^\top \\ \end{align*}

となる。ここで、

\begin{align*} Q &:= \left( \begin{array}{c:ccc} 1 && 0 & \\ \hdashline \\ 0 && \tilde{Q} & \\ \\ \end{array} \right)^\top \\ D &:= \left( \begin{array}{c:ccc} \lambda && 0 & \\ \hdashline \\ 0 && \tilde{D} & \\ \\ \end{array} \right) \end{align*}

とすると、\(B=Q^\top DQ\)と表すことができる。また、\(Q\)は直交行列で、\(D\)は対角行列である。
よって、

\begin{align*} A &= R^\top BR \\ &= R^\top Q^\top DQR \\ &= \left(QR\right)^\top DQR \\ \end{align*}

となるので、\(P=\left(QR\right)^\top\)とすればこれが命題を満たす直交行列になる。

対角化したときの\(D\)と\(P\)の性質について考える。
\(P\)の\(i\)列目の列ベクトルを\(p_i\)と表し、\(D\)の\(i,i\)成分を\(d_i\)と表す。
\(P\)は直交行列なので、

\begin{align*} Ap_i &= PDP^\top p_i \\ &= PDe_i \\ &= P(d_ie_i) \\ &= d_iPe_i \\ &= d_ip_i \end{align*}

が成り立ち、\(d_i\)は\(A\)の固有値に、\(p_i\)は\(A\)の固有ベクトルになることがわかる。

また、\(\lambda\)を\(A\)の固有値とすると、\(Av=\lambda v\)となるような\(v\neq0\)が存在するので、

\begin{align*} DP^\top v &= P^\top PDP^\top v \\ &= P^\top Av \\ &= P^\top (\lambda v) \\ &= \lambda P^\top v \\ \end{align*}

\begin{align*} (D-\lambda I)P^\top v &= 0 \\ \end{align*}

が成り立つ。\(P^\top v\neq0\)なので、

\begin{align*} 0 &= \det(D-\lambda I) \\ &= \prod_{i=1}^n (d_i-\lambda) \end{align*}

となり、\(D\)のいずれかの成分が\(\lambda\)と一致することがわかる。
これはつまり、\(D\)の対角成分は\(A\)の固有値と (値の重複を含めて) 一対一に対応することを意味する。

対称行列の対角化と固有値

実対称行列\(A\)を\(PDP^\top\)と対角化したとき、\(D\)の対角成分は\(A\)の固有値となり、\(P\)の列ベクトルは\(A\)の固有ベクトルとなる。
また、逆に\(A\)の任意の固有値は\(D\)のいずれかの対角成分に存在する。

\(A\)の0ではない固有値\(d_i\)の (重複を含めた) 個数が\(k\)であるとき (つまり\(A\)のランクが\(k\leq n\)のとき) 、\(d_{k+1}=d_{k+2}=\cdots=d_{n}=0\)となるように対角化すると、

\begin{align*} A &= PDP^\top \\ &= \sum_{i=1}^n d_ip_ip_i^\top \\ &= \sum_{i=1}^k d_ip_ip_i^\top \\ &= \tilde{P}\tilde{D}\tilde{P}^\top \\ \end{align*}

となり、\(k\times k\)行列\(\tilde{D}\)と\(n\times k\)行列\(\tilde{P}\)によって固有値分解することもできる。

対称行列の固有値分解 (縮小版)

ランクが\(k\leq n\)の\(n\times n\)実対称行列\(A\)に対して、

\begin{align*} A = PDP^\top \end{align*}

\begin{align*} I = P^\top P \end{align*}

となるような\(n\times k\)行列\(P\)と\(k\times k\)実対角行列\(D\)が存在する。

正定値行列・半正定値行列

正定値行列・半正定値行列の定義を確認し、その性質やそこから導き出される系を紹介する。

定義

実対称行列\(A\)が半正定値行列であるとは、任意の\(x\)に対して

\begin{align*} x^\top Ax \geq 0 \end{align*}

が成立することである。

同様に、実対称行列\(A\)が正定値行列であるとは、任意の\(x\neq0\)に対して

\begin{align*} x^\top Ax > 0 \end{align*}

が成立することである。
正定値行列は半正定値行列の一種である。

単位行列\(I\)は正定値行列である。

\begin{align*} x^\top Ix &= \|x\|^2 \\ &> 0 \end{align*}

全成分が1である行列\(J\) (all-ones matrixなどと呼ばれる) は半正定値行列である。

\begin{align*} x^\top Jx &= \sum_{i=1}^n\sum_{j=1}^nx_ix_j \\ &= \left(\sum_{i=1}^nx_i\right)^2 \\ &\geq 0 \end{align*}

錐結合

半正定値行列は錐結合に対して閉じている。つまり、\(A,B\)が半正定値行列のとき、任意の\(a,b\geq0\)に対して、\(aA+bB\)もまた半正定値行列になる。
これは、

\begin{align*} x^\top (aA+bB) x &= a\left(x^\top Ax\right) + b\left(x^\top Bx\right) \\ &\geq 0+0 \\ &= 0 \end{align*}

となることから確かめられる。
錐結合に対して閉じた集合のことを凸錐と言う。半正定値行列全体の集合も凸錐になる。

固有値

\(\lambda, v\)を正定値行列\(A\)の任意の固有対とする。
このとき、

\begin{align*} 0 &< v^\top Av \\ &= v^\top \lambda v \\ &= \lambda\|v\|^2 \end{align*}

なので、

\begin{align*} 0 = \frac{0}{\|v\|^2} < \lambda \end{align*}

が成立する。したがって、正定値行列の固有値は全て正である。
同様に半正定値行列に関しては、固有値は全て非負であると言える。

逆に対称行列\(A\)の固有値が全て正ならば、\(A=PDP^\top\)と対角化したとき任意の\(x\neq0\)に対して、

\begin{align*} x^\top Ax &= x^\top PDP^\top x \\ &= \left(P^\top x\right)^\top D\left(P^\top x\right) \\ \end{align*}

となる。
\(y:=P^\top x\)とすると、\(P\)は直交行列であることから正則なので\(y\neq0\)が成り立つ。また、\(D\)は各成分が\(A\)の固有値と一致する対角行列なので、\(D = \mathrm{diag}(\lambda_1, \lambda_2, \cdots, \lambda_n)\)となる。
したがって、

\begin{align*} x^\top Ax &= \left(P^\top x\right)^\top D\left(P^\top x\right) \\ &= y^\top Dy \\ &= \begin{pmatrix}y_1 & y_2 & \cdots & y_n\end{pmatrix} \begin{pmatrix} \lambda_1 & 0 & \cdots & 0 \\ 0 & \lambda_2 & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & \lambda_n \\ \end{pmatrix} \begin{pmatrix}y_1 \\ y_2 \\ \vdots \\ y_n\end{pmatrix} \\ &= \begin{pmatrix}y_1 & y_2 & \cdots & y_n\end{pmatrix} \begin{pmatrix}\lambda_1y_1 \\ \lambda_2y_2 \\ \vdots \\ \lambda_ny_n\end{pmatrix} \\ &= \lambda_1y_1^2 + \lambda_2y_2^2 + \cdots + \lambda_ny_n^2 \end{align*}

となるが、\(y\neq0\)かつ、固有値は全て正なので、

\begin{align*} x^\top Ax &= \lambda_1y_1^2 + \lambda_2y_2^2 + \cdots + \lambda_ny_n^2 \\ &> 0 \end{align*}

となって、\(A\)は正定値行列であることがわかる。
同様に、対称行列\(A\)の固有値が全て非負ならば\(A\)が半正定値行列であることも言える。

正定値行列・半正定値行列の固有値

対称行列\(A\)について、Aが正定値行列であることと、\(A\)の固有値が全て正であることは同値。
また、\(A\)が半正定値行列であることと、\(A\)の固有値が全て非負であることは同値。

行列式

半正定値行列\(A=PDP^\top\)の行列式は

\begin{align*} \mathrm{det}(A) &= \mathrm{det}\left(PDP^\top\right) \\ &= \mathrm{det}\left(P\right)\mathrm{det}\left(D\right)\mathrm{det}\left(P^\top\right) \\ &= \mathrm{det}\left(D\right)\mathrm{det}\left(PP^\top\right) \\ &= \mathrm{det}\left(D\right)\mathrm{det}\left(I\right) \\ &= \prod_{i=1}^n\lambda_i \\ \end{align*}

となる。
特に\(A\)が正定値行列の場合、その固有値は全て正なので行列式は正となる。したがって、正定値行列は正則であると言える。
一方、一般の半正定値行列の場合は\(D\)の対角成分に0が含まれる可能性があることから、正則にならない場合がある。

正定値行列・半正定値行列の行列式

正定値行列\(A\)の行列式は、その固有値\(\{\lambda_i\}_{i=1}^n\)を用いて

\begin{align*} \mathrm{det}(A) &= \prod_{i=1}^n\lambda_i \\ \end{align*}

と表され、必ず非負になる。
特に\(A\)が正定値行列の場合、行列式は正。したがって正定値行列は正則。

逆行列

正定値行列\(A=PDP^\top\)では\(D\)の対角成分\(\lambda_i\)が全て正であることから、その逆数を取った行列が\(D^{-1}\)となるので、\(PD^{-1}P^\top\)が\(A\)の逆行列になることがわかる。
また、\(A^{-1}=PD^{-1}P^\top\)は固有値が全て正の対象行列なので、逆行列\(A^{-1}\)も正定値行列になる。

正定値行列の逆行列

正定値行列\(A\)の逆行列\(A^{-1}\)も正定値行列。

平方根

半正定値行列\(A\)を\(A=PDP^\top\)と分解したとき、\(D\)の対角成分\(\lambda_1, \lambda_2, \cdots, \lambda_n\)は\(A\)の固有値と一致するが、半正定値行列の固有値は非負なので、それぞれ\(\sqrt{\lambda_i}\)を定義することができる。したがって、

\begin{align*} D^{1/2} := \begin{pmatrix} \sqrt{\lambda_1} & 0 & \cdots & 0 \\ 0 & \sqrt{\lambda_2} & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & \sqrt{\lambda_n} \end{pmatrix} \end{align*}

と定義すれば、

\begin{align*} A &= PDP^\top \\ &= PD^{1/2}D^{1/2}P^\top \\ &= PD^{1/2}P^\top PD^{1/2}P^\top \\ \end{align*}

となって、\(A\)の平方根\(A^{1/2}=PD^{1/2}P^\top\)が必ず存在することがわかる。
また、\(A^{1/2}\)は固有値が非負の対称行列なので、半正定値行列になる。\(A\)が正定値行列ならば、同様に\(A^{1/2}\)も正定値行列になる。

また、\(A=B^2\)となるような半正定値行列\(B\)が存在するとき、\(A=PDP^\top\)と固有値分解したときの\(D\)の各成分\(\lambda_i\)と\(P\)の列ベクトル\(p_i\)について

\begin{align*} 0 &= (A-\lambda_iI)p_i \\ &= (B^2-\lambda_iI)p_i \\ &= (B+\sqrt{\lambda_i}I)(B-\sqrt{\lambda_i}I)p_i \\ \end{align*}

となる。
\(\lambda_i>0\)のとき、\(B\)は半正定値行列なので、\(-\sqrt{\lambda_i}<0\)は\(B\)の固有値となり得ず\(B+\sqrt{\lambda_i}\)は正則。したがって、

\begin{align*} (B-\sqrt{\lambda_i}I)p_i &= (B+\sqrt{\lambda_i}I)^{-1}0 \\ &= 0 \end{align*}

が成り立つ。
\(\lambda_i=0\)のときは、

\begin{align*} \|Bp_i\|^2 &= p_i^\top B^\top Bp_i \\ &= p_i^\top Ap_i \\ &= p_i^\top (A-\lambda_iI)p_i \\ &= 0 \end{align*}

となるので、\((B-\sqrt{\lambda_i}I)p_i=Bp_i=0\)が成り立つ。
したがって、\(\{\sqrt{\lambda_i}\}_{i=1}^n\)と\(\{p_i\}_{i=1}^n\)は\(B\)の固有対となり、

\begin{align*} P^\top BP &= P^\top B \begin{pmatrix} p_1 & \cdots & p_n \end{pmatrix} \\ &= P^\top \begin{pmatrix} \sqrt{\lambda_1}p_1 & \cdots & \sqrt{\lambda_n}p_n \end{pmatrix} \\ &= \begin{pmatrix} \sqrt{\lambda_1}e_1 & \cdots & \sqrt{\lambda_n}e_n \end{pmatrix} \\ &= D^{1/2} \end{align*}

が成り立つ。よって\(B=PD^{1/2}P^\top\)となり、\(A\)の平方根は半正定値行列の範囲の中では一意になることがわかる。
このように、それ自体が半正定値行列となる平方根のことを主平方根と言う。

正定値行列・半正定値行列の平方根

半正定値行列\(A\)が直交行列\(P\)と対角行列\(D\)によって\(A = PDP^\top\)と対角化されるとき、\(A\)の半正定値な平方根 (主平方根)

\begin{align*} A^{1/2}=PD^{1/2}P^\top \end{align*}

が一意に存在する。
特に\(A\)が正定値行列の場合は、\(A^{1/2}\)も正定値行列になる。

同様に、半正定値行列には半正定値な\(n\)乗根が一意に存在するということも成り立つ。

なお、主\(n\)乗根について

\begin{align*} \det(A) &= \det\left(\left(A^{1/n}\right)^n\right) \\ &= \det\left(A^{1/n}\right)^n \\ \end{align*}

が成り立つが、主\(n\)乗根は半正定値であることから行列式が非負なので、

\begin{align*} \det\left(A^{1/n}\right) &= \det(A)^\frac{1}{n} \end{align*}

となる。

回転・伸縮による分解

\(R\)を直交行列とすると、\(1=\det(I)=\det(RR^\top)=\det(R)^2\)なので\(\det(R)=\pm1\)となる。
その中でも特に\(\det(R)=1\)となるような直交行列\(R\)を回転行列と言う。また、\(n\)次元の回転行列全体の集合を

\begin{align*} \mathrm{SO}(n) := \left\{ R\in \mathbb{R}^{n\times n} \middle| RR^\top=I \land \det(R)=1 \right\} \end{align*}

と表し、特殊直交群と呼ぶ。

半正定値行列\(A\)を\(A=PDP^\top\)と分解したとき、\(D,P\)は固有値の順番を入れ替えることで\(\det(P)=1\)となるように\(P\)を選ぶことができる。
\(R:=P^\top, S:=D^{1/2}\)とすると、

\begin{align*} A &= PDP^\top \\ &= R^\top SSR \\ &= (SR)^\top SR \end{align*}

と分解することができる。\(R\)は回転行列であり、\(S\)は各軸方向への伸縮を行う行列である。
この分解は半正定値行列の幾何学的な理解のために用いられることがある。

半正定値行列のCholesky分解

半正定値行列\(A\)に対して、

\begin{align*} A = LL^\top \end{align*}

となるような下三角行列\(L\)が存在することを証明する。

分解の存在

対角化

\(A\)を半正定値行列とする。
\(A\)は対称行列でもあるので、\(A=PDP^\top\)と対角化することができる。

\(D\)の各成分は非負なのでそれぞれ平方根を取った実行列\(D^{1/2}\)を定義することができ、\(A\)を

\begin{align*} A &= PDP^\top \\ &= PD^{1/2}D^{1/2}P^\top \\ &= PD^{1/2}\left(PD^{1/2}\right)^\top \\ \end{align*}

と表すことができる。

QR分解

補題としてQR分解を証明する。

QR分解

任意の行列\(A\)に対して、

\begin{align*} A=QR \end{align*}

を満たすような直交行列\(Q\)と上三角行列\(R\)が存在する。

証明

\(A\)の大きさを\(n\times n\)として、\(A\)の列ベクトルを左から順に\(a_1, a_2, \cdots, a_n\)と表す。
\(\{a_1, \cdots, a_n\}\)から正規直交基底\(\{q_1, \cdots, q_n\}\)を次のように構成する。

k=1のとき

まずは

\begin{align*} q_1 &:= \frac{a_1}{\|a_1\|} \\ \end{align*}

と定義する。\(a_1=0\)の場合は任意の単位ベクトルを\(q_1\)とする。

\(a_k\in\mathrm{span}(q_1, \cdots, q_{k-1})\)のとき

\(a_k\in\mathrm{span}(q_1, \cdots, q_{k-1})\)のときは、単位ベクトル\(q_k\)を\(\{q_1, \cdots, q_{k-1}\}\)と直交するように適当に選ぶ。

なお、このとき

\begin{align*} a_k &= \sum_{i=1}^{k-1} c_iq_i \end{align*}

となるような実数\(\{c_1, \cdots, c_{k-1}\}\)が存在するが、\(q_i\)は直交しているので、両辺で\(q_j\)と内積を取ることで、

\begin{align*} a_k\cdot q_j &= \sum_{i=1}^{k-1} c_iq_i\cdot q_j \\ &= \sum_{i=1}^{k-1} c_i\delta_{ij} \\ &= c_j \\ \end{align*}

となる。したがって、

\begin{align*} a_k &= \sum_{i=1}^{k-1} c_iq_i \\ &= \sum_{i=1}^{k-1} (a_k\cdot q_i)q_i \end{align*}

が成り立つ。

\(a_k\notin\mathrm{span}(q_1, \cdots, q_{k-1})\)のとき

\(a_k\notin\mathrm{span}(q_1, \cdots, q_{k-1})\)のときは、

\begin{align*} \tilde{a}_k &:= a_k - \sum_{i=1}^{k-1} (a_k\cdot q_i)q_i \end{align*}

とすると\(\tilde{a}_k\neq0\)なので、

\begin{align*} q_k &:= \frac{\tilde{a}_k}{\|\tilde{a}_k\|} \end{align*}

と定義することができる。
このとき、\(i<k\)に対して\(\{q_1, \cdots, q_{k-1}\}\)が正規直交系であることを仮定すると、

\begin{align*} q_k\cdot q_i &= \frac{1}{\|\tilde{a}_k\|}\tilde{a}_k\cdot q_i \\ &= \frac{1}{\|\tilde{a}_k\|} \left( a_k\cdot q_i - \sum_{j=1}^{k-1} (a_k\cdot q_j)q_j\cdot q_i \right) \\ &= \frac{1}{\|\tilde{a}_k\|} \left( a_k\cdot q_i - \sum_{j=1}^{k-1} (a_k\cdot q_j)\delta_{ji} \right) \\ &= \frac{1}{\|\tilde{a}_k\|} \left( a_k\cdot q_i - a_k\cdot q_i \right) \\ &= 0 \\ \end{align*}

となるので、\(\{q_1, \cdots, q_k\}\)も正規直交系になる。
このように正規直交系を構成する方法をGram–Schmidtの正規直交化法と言う。

QR分解

これまでの手順から正規直交系\(\{q_1, \cdots, q_n\}\)を構成することができ、\(a_k\)は\(\{q_1, \cdots, q_n\}\)の合成によって

\begin{align*} a_k &= \tilde{a}_k + \sum_{i=1}^{k-1} (a_k\cdot q_i)q_i \\ &= \|\tilde{a}_k\|q_k + \sum_{i=1}^{k-1} (a_k\cdot q_i)q_i \\ \end{align*}

と表すことができる。
\(a_k\in\mathrm{span}(q_1, \cdots, q_{k-1})\)のときも\(\tilde{a}_k\)を定義することは可能で、その値は0になるので上記の式が成り立つ。

これらの係数を

\begin{align*} r_{kk} &= \|\tilde{a}_k\| \\ r_{ik} &= a_k\cdot q_i \end{align*}

と表すと、

\begin{align*} A &= \begin{pmatrix} a_1 & a_2 & \cdots & a_n \end{pmatrix} \\ &= \begin{pmatrix} q_1 & q_2 & \cdots & q_n \end{pmatrix} \begin{pmatrix} r_{11} & r_{12} & \cdots & r_{1n} \\ 0 & r_{22} & \cdots & r_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & r_{nn} \\ \end{pmatrix} \\ &=: QR \end{align*}

となり、\(Q\)は直交行列、\(R\)は上三角行列である。

下三角行列による分解

QR分解を用いると、\(\left(PD^{1/2}\right)^\top=QR\)となるような直交行列\(Q\)と上三角行列\(R\)を得ることができる。
したがって、

\begin{align*} A &= PD^{1/2}\left(PD^{1/2}\right)^\top \\ &= (QR)^\top QR \\ &= R^\top Q^\top QR \\ &= R^\top R \\ \end{align*}

が成り立つ。上三角行列の転置は下三角行列なので、\(L:=R^\top\)とすることで、

\begin{align*} A &= R^\top R \\ &= LL^\top \end{align*}

と表すことができる。

逆に、\(n\times m\)行列\(B\)によって\(A=BB^\top\)と表されるとき、任意の\(x\)に対して

\begin{align*} x^\top Ax &= x^\top BB^\top x \\ &= \left(B^\top x\right)^\top B^\top x \\ &= \left\|B^\top x\right\|^2 \\ &\geq 0 \end{align*}

となるので、\(A\)は半正定値行列になる。(このとき\(A\)を\(B\)のGram行列という)
当然、\(B\)が\(n\times n\)の下三角行列である場合も\(A\)は半正定値行列になる。

半正定値行列のCholesky分解

半正定値行列\(A\)に対して、\(A=LL^\top\)を満たすような下三角行列\(L\)が存在する。
また逆に下三角行列\(L\)に対して\(A:=LL^\top\)は半正定値行列になる。

したがって、半正定値行列\(A\)は下三角行列\(L\)によってパラメーター化可能であると言える。言い換えれば、\(L\)を下三角行列の範囲で変動させたとき、\(A=LL^\top\)はあらゆる半正定値行列になり得ることになる。
\(A\)の成分が\(n^2\)個であるのに対して、\(L\)の下三角成分は\(\frac{1}{2}n(n+1)\)個であり、およそ半分のパラメーターで表現することが可能になる。また、\(L\)は下三角行列でさえあれば良いので、下三角成分は実数全体の値を独立に取ることができ、パラメーター同士に特に制約条件は課されない。

分解の一意性

半正定値行列の場合この分解は一意にはならないことに注意が必要である。
例えば、

\begin{align*} A = \begin{pmatrix} 0 & 0 \\ 0 & 1 \end{pmatrix} \end{align*}

に対しては、

\begin{align*} L = \begin{pmatrix} 0 & 0 \\ 0 & 1 \end{pmatrix} \end{align*}

\begin{align*} L = \begin{pmatrix} 0 & 0 \\ 1 & 0 \end{pmatrix} \end{align*}

の2つの下三角行列で\(A=LL^\top\)が成立する。

正定値行列のCholesky分解

正定値行列も半正定値行列の一種なので、下三角行列による分解が可能である。

\begin{align*} A = LL^\top \end{align*}

正定値行列においては、特に対角成分が正となる\(L\)が存在することを示す。

分解の存在

正定値行列\(A\)を下三角行列\(L\)によって\(A=LL^\top\)と分解したとき、\(A\)は正則なので

\begin{align*} 0 &\neq \det(A) \\ &= \det(LL^\top) \\ &= \det(L)^2 \end{align*}

となるが、下三角行列の行列式は対角成分の積であることが帰納的に言えるので、\(L\)の対角成分は0以外の値を取ることになる。

ここで、次のような直交行列を考える。

\begin{align*} F = \begin{pmatrix} \mathrm{sign}(L_{1,1}) & 0 & \cdots & 0 \\ 0 & \mathrm{sign}(L_{2,2}) & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & \mathrm{sign}(L_{n,n}) \\ \end{pmatrix} \end{align*}

\(L':=LF\)としたとき、\(A = LL^\top = LFF^\top L^\top = L'L'^\top\)となり、

\begin{align*} L'_{i,i} &= L_{i,i}F_{i,i} \\ &= L_{i,i}\mathrm{sign}(L_{i,i}) \\ &= |L_{i,i}| \\ &> 0 \end{align*}

となる。
よって、正定値行列\(A\)については、特に対角成分が正となる下三角行列\(L'\)によって\(A=L'L'^\top\)と分解することができる。

分解の一意性

正定値行列\(A\)が、対角成分が正の2つの下三角行列\(L_1, L_2\)によって分解可能であるとする。
つまり、

\begin{align*} A &= L_1L_1^\top \\ A &= L_2L_2^\top \end{align*}

が成り立つとする。

このとき、\(A\)が正則であることから\(L_1, L_2\)も正則なので、\(L_1^{-1}, L_2^{-1}\)が存在し、

\begin{align*} I &= L_1^{-1}L_1L_1^\top\left(L_1^\top\right)^{-1} \\ &= L_1^{-1}L_2L_2^\top\left(L_1^\top\right)^{-1} \\ &= L_1^{-1}L_2\left(L_1^{-1}L_2\right)^\top \\ &=: MM^\top \end{align*}

となる。この関係から、\(M:=L_1^{-1}L_2\)は直交行列になる。
また、\(L_1\)は下三角行列なので、\(L_1^{-1}\)も下三角行列。また下三角行列同士の積も下三角行列なので、\(M\)は下三角行列となる。
\(M\)は下三角行列かつ直交行列なので、各成分が\(\pm1\)の対角行列でしかあり得ない。

下三角行列同士の積

下三角行列\(A, B\)の積\(AB\)も下三角行列である。

証明

\(A\)は下三角行列なので、その成分\(A_{ij}\)は\(i<j\)ならば0になる。(\(B\)も同様)
\(AB\)の各成分は、

\begin{align*} (AB)_{ij} &= \sum_{k=1}^n A_{ik}B_{kj} \end{align*}

となる。
ここで\(i<j\)の場合を考えると、どんな\(k\)に対しても\(i<k\)あるいは\(k<j\)が成り立つので、\(AB_{ij}=0\)になる。
したがって、\(AB\)は下三角行列である。

なお、\(i=j\)のときは、

\begin{align*} (AB)_{ii} &= \sum_{k=1}^n A_{ik}B_{ki} \\ &= \sum_{k=1}^{i-1} A_{ik}B_{ki} + A_{ii}B_{ii} + \sum_{k=i+1}^n A_{ik}B_{ki} \\ &= \sum_{k=1}^{i-1} A_{ik}0 + A_{ii}B_{ii} + \sum_{k=i+1}^n 0B_{ki} \\ &= A_{ii}B_{ii} \\ \end{align*}

となり、\(AB\)の対角成分は\(A,B\)の対角成分の積になる。

下三角行列の逆行列

下三角行列\(A\)の逆行列\(A^{-1}\)も下三角行列である。
また、\(A^{-1}\)の対角成分は、\(A\)の対角成分の逆数である。

証明

下三角行列の逆行列も下三角行列

\(A\)には逆行列が存在するので、\(A\)は正則である。
帰納的に、下三角行列の行列式は対角成分の積であることが言えるので、正則な下三角行列では対角成分は0にならない。つまり、任意の\(i=1,\cdots,n\)に対して\(A_{ii}\neq0\)である。

\(B\)を\(A\)の逆行列として、\(B\)が下三角行列にならないと仮定する。
つまり、\(B_{i'j'}\neq0\)となるような\(i'<j'\)の組が存在することになる。
そのような\(i',j'\)が複数存在する場合、\(i'\)が最小になるように選ぶものとする。つまり、\(i<i'\)のときは、下三角行列と同様に\(i<j\)に対して\(B_{ij}=0\)が成立する。特に、\(i<i'<j'\)なので、\(B_{ij'}=0\)が成立する。

したがって、\(AB\)の\(i',j'\)成分は、

\begin{align*} 0 &= I_{i'j'} \\ &= (AB)_{i'j'} \\ &= \sum_{k=1}^n A_{i'k}B_{kj'} \\ &= \sum_{k=1}^{i'-1} A_{i'k}B_{kj'} + A_{i'i'}B_{i'j'} + \sum_{k=i'+1}^n A_{i'k}B_{kj'} \\ &= \sum_{k=1}^{i'-1} A_{i'k}0 + A_{i'i'}B_{i'j'} + \sum_{k=i'+1}^n 0B_{kj'} \\ &= A_{i'i'}B_{i'j'} \\ \end{align*}

となる。
最初に示したように、\(A_{i'i'}\neq0\)なので、\(A_{i'i'}B_{i'j'}\neq0\)となって上記の式は矛盾する。
つまり、\(B\)が下三角行列にならないと仮定が誤っていたことがわかる。

下三角行列の逆行列の対角成分は、元の行列の対角成分の逆数

下三角行列同士の積の対角成分は、2つの下三角行列の対角成分の積なので、

\begin{align*} 1 &= I_{ii} \\ &= (AB)_{ii} \\ &= A_{ii}B_{ii} \\ \end{align*}

となり、\(B_{ii}=\frac{1}{A_{ii}}\)が成立する。

更に、前提から\(L_1\)の対角成分は全て正なので、\(L_1^{-1}\)の対角成分も全て正。
また、\(L_2\)の対角成分は全て正なので、\(M=L_1^{-1}L_2\)の対角成分も正になる。
したがって、\(M=I\)となる。

つまり、

\begin{align*} I = M = L_1^{-1}L_2 \end{align*}

となるので、\(L_1=L_2\)が成立する。

よって、正定値行列\(A\)に対する「対角成分が正の下三角行列」による\(A=LL^\top\)の分解は一意になる。
このような下三角行列による分解をCholesky分解と言う。

(正定値行列の) Cholesky分解

正定値行列\(A\)に対して、\(A=LL^\top\)を満たし、対角成分が全て正となるような下三角行列\(L\)が一意に存在する。

特異値分解 (SVD)

せっかくなので、半正定値行列の固有値分解を用いて、任意の\(m\times n\)行列\(A\)が特異値分解(Singular Value Decomposition, SVD) 可能であることも証明しておこう。

full SVD

\(m\geq n\)とする。(\(m<n\)なら転置に対して特異値分解を行えば良い)
\(A^\top A\)は\(n\times n\)対称行列であり、\(x^\top A^\top Ax = \|Ax\|^2\geq0\)となることから半正定値行列である。よって、\(A^\top A=VDV^\top\)と固有値分解することができ、\(D\)の各成分は非負である。
\(D\)は各成分が\(d_1\geq d_2\geq\cdots\geq d_n\geq0\)となるように選ぶことにし、\(\sigma_i:=\sqrt{d_i}\)とする。また、\(n<i\leq m\)に対しては\(\sigma_i:=0\)とする。

\(\sigma_i\neq0\)のとき、\(V\)の列ベクトル\(v_i\)に対して\(u_i:=\frac{1}{\sigma_i}Av_i\)と定める。このとき、

\begin{align*} (Av_i)^\top (Av_j) &= v_i^\top A^\top Av_j \\ &= v_i^\top VDV^\top v_j\\ &= e_i^\top De_j \\ &= d_i\delta_{i,j} \\ &= \sigma_i^2\delta_{i,j} \\ \end{align*}

となることから、\(\{u_i\}_i\)は正規直交系になると言える。
また、\(\sigma_i=0\)のときは、\(j\neq i\)なる\(u_j\)全てと直交するように単位ベクトル\(u_i\)を適当に選ぶ。このときも、\(i\leq n\)ならば

\begin{align*} \|Av_i\|^2 &= \sigma_i^2 \\ &= 0 \end{align*}

となるので、\(Av_i=\sigma_i u_i\)が成り立つ。
このようにして得られた\(u_i\)を用いて、各列ベクトルが\(u_i\)になるように\(m\times m\)行列\(U\)を構成すると、\(U\)は直交行列になる。

このとき、\(1\leq i\leq m\)と\(1\leq j\leq n\)に対して、

\begin{align*} \left(U^\top AV\right)_{i,j} &= e_i^\top U^\top AVe_j \\ &= u_i^\top Av_j \\ &= u_i^\top (\sigma_ju_j) \\ &= \sigma_j\delta_{i,j} \\ \end{align*}

となるので、\(m\times n\)行列\(\Sigma\)を\(\Sigma_{i,j}=\sigma_j\delta_{i,j}\)となるように定めれば、

\begin{align*} U^\top AV &= \Sigma \\ \end{align*}

つまり、

\begin{align*} A &= U\Sigma V^\top \\ \end{align*}

が成り立つ。
\(\Sigma\)の成分の中で\(0\)ではないものを(非零) 特異値と言う。

特異値分解

実\(m\times n\)行列\(A\)に対して、\(A=U\Sigma V^\top\)となるような

  • \(m\times m\)直交行列\(U\)
  • \(n\times n\)直交行列\(V\)
  • \(i\neq j\)のときに\(\Sigma_{i,j}=0\)となるような\(m\times n\)行列\(\Sigma\)

が存在する。
なお、各\(\Sigma_{i,i}\)の中で\(0\)ではないものを (非零) 特異値と言い、その値は\(A^\top A\)や\(AA^\top\)の\(0\)ではない固有値の平方根に等しい。

thin SVD

\(A^\top A\)のランクを\(k\leq n\)としたとき、特異値分解を行うと

\begin{align*} A &= U\Sigma V^\top \\ &= \left( \begin{array}{ccc:ccc} u_{1,1} & \cdots & u_{1,k} & u_{1,k+1} & \cdots & u_{1,m} \\ \vdots && \vdots & \vdots && \vdots \\ u_{m,1} & \cdots & u_{m,k} & u_{m,k+1} & \cdots & u_{m,m} \\ \end{array} \right) \left( \begin{array}{ccc:ccc} \sigma_1 &&& 0 & \cdots & 0 \\ & \ddots && \vdots && \vdots \\ && \sigma_k & 0 & \cdots & 0 \\ \hdashline 0 & \cdots & 0 & 0 & \cdots & 0 \\ \vdots && \vdots & \vdots && \vdots \\ 0 & \cdots & 0 & 0 & \cdots & 0 \\ \end{array} \right) \left( \begin{array}{ccc} v_{1,1} & \cdots & v_{n,1} \\ \vdots && \vdots \\ v_{1,k} & \cdots & v_{n,k} \\ \hdashline v_{1,k+1} & \cdots & v_{n,k+1} \\ \vdots && \vdots \\ v_{1,n} & \cdots & v_{n,n} \\ \end{array} \right) \\ \end{align*}

と表すことができる。
ここで、\(U,V\)の\(a\)列目から\(b\)列目までを取り出した行列を\(U_{a:b},V_{a:b}\)と表すことにする。\(\tilde{\Sigma}:=\mathrm{diag}(\sigma_1,\cdots,\sigma_k)\)とすると、

\begin{align*} A &= \left( \begin{array}{c:c} U_{1:k} & U_{k+1:m} \end{array} \right) \left( \begin{array}{c:c} \tilde{\Sigma} & 0 \\ \hdashline 0 & 0 \end{array} \right) \left( \begin{array}{c} V_{1:k}^\top \\ \hdashline V_{k+1:n}^\top \end{array} \right) \\ &= \left( \begin{array}{c:c} U_{1:k} & U_{k+1:m} \end{array} \right) \left( \begin{array}{c:c} \tilde{\Sigma}V_{1:k}^\top \\ \hdashline 0 \end{array} \right) \\ &= U_{1:k}\tilde{\Sigma}V_{1:k}^\top \end{align*}

と表すことができる。
ここで、\(\tilde{\Sigma}\)の対角成分は全て正である。
また、\(U\)の列ベクトルが正規直交系であることから\(U_{1:k}\)の列ベクトルも正規直交系となり、したがって\(U_{1:k}^\top U_{1:k}=I\)が成り立つ。\(V\)についても同様に\(V_{1:k}^\top V_{1:k}=I\)が成り立つ。

このような形式の特異値分解はthin SVDあるいはeconomy SVDなどと呼ばれる。

特異値分解 (縮小版)

実\(m\times n\)行列\(A\)に対して、

\begin{align*} A=U\Sigma V^\top \end{align*}

\begin{align*} I=U^\top U \end{align*}

\begin{align*} I=V^\top V \end{align*}

となるような

  • \(m\times k\)行列\(U\)
  • \(n\times k\)行列\(V\)
  • \(k\times k\)対角行列\(\Sigma\)

が存在する。またこのとき、\(\Sigma\)の対角成分は全て正になる。

参考

正定値行列・半正定値行列

QR分解

Cholesky分解