特異値分解の定義,性質,具体例

行列の特異値分解(singular value decomposition, SVD)について,定義・性質・具体例を整理しました。

特異値分解とは

特異値分解とは,m×nm\times n 行列 AAA=UΣVA=U\Sigma Vと分解することです。ただし,

  • UUm×mm\times m の直交行列(各列が互いに直交する行列 →直交行列の定義と性質
  • VVn×nn\times n の直交行列
  • Σ\Sigma は図のような行列 特異値分解 つまり「非対角成分は 00,対角成分は非負で大きさの順に並んだ行列。

です。任意の行列はこのように分解できます。また,Σ\Sigma の対角成分で 00 でないもの(00 を含めることもある)を特異値と言います。

特異値分解の具体例

A=(222211111111)A=\begin{pmatrix}2&2&2&2\\1&-1&1&-1\\-1&1&-1&1\end{pmatrix} の特異値分解(の1つ)は,

A=(1000121201212)(4000022000000)(12121212121212121212121212121212)A= \begin{pmatrix}1&0&0\\0&\frac{1}{\sqrt{2}}&\frac{1}{\sqrt{2}}\\0&-\frac{1}{\sqrt{2}}&\frac{1}{\sqrt{2}}\end{pmatrix}\begin{pmatrix}4&0&0&0\\0&2\sqrt{2}&0&0\\0&0&0&0\end{pmatrix}\begin{pmatrix}\frac{1}{2}&\frac{1}{2}&\frac{1}{2}&\frac{1}{2}\\\frac{1}{2}&-\frac{1}{2}&\frac{1}{2}&-\frac{1}{2}\\\frac{1}{2}&\frac{1}{2}&-\frac{1}{2}&-\frac{1}{2}\\\frac{1}{2}&-\frac{1}{2}&-\frac{1}{2}&\frac{1}{2}\end{pmatrix}

です。よって,AA の特異値は,44222\sqrt{2} です。

なお,上の等式が正しいこと,および右辺の1つ目と3つ目の行列が直交行列であることは簡単な計算で確認できます。

特異値分解の性質

  • AA が与えられたとき,特異値を定める行列 Σ\Sigma は一意に決まりますが,直交行列 U,VU,V は一意に定まるとは限りません。

  • 行列の(00 でない)特異値の数は,その行列のランクと一致します。→行列のランクの意味(8通りの同値な定義)

  • 「行列の特異値の二乗和」は「その行列の全成分の二乗和」と等しいです。さきほどの具体例ではどちらも24になっています。この値の平方根を行列のフロベニウスノルムと言います。→行列のフロベニウスノルムとその性質)

固有値分解と特異値分解

  • 行列の固有値分解は正方行列に対してのみ定義されますが,特異値分解は正方行列でなくてもできます。

  • AA が対称行列のとき,AA の固有値と特異値は一致します。対称行列は直交行列で対角化できるからです。→対称行列の固有値と固有ベクトルの性質の証明

  • AAA^{\top}A00 でない固有値の正の平方根」は AA の特異値です。理由は,A=UΣVA=U\Sigma V特異値分解できるとき AA=V(ΣΣ)VA^{\top}A=V^{\top}(\Sigma^{\top}\Sigma) V固有値分解できるからです。同様に,AAAA^{\top}00 でない固有値の正の平方根も AA の特異値です。後ほどもう少し詳しく説明します。

特異値分解の計算方法

AAA^{\top}A の固有値分解と AAAA^{\top} の固有値分解ができれば,AA の特異値分解 A=UΣVA=U\Sigma V が計算できる。

説明

任意の行列が特異値分解できることは認める。つまり,A=UΣVA=U\Sigma V と分解できるとして,U,Σ,VU,\Sigma,V の計算方法の例を示す。

AA=(UΣV)(UΣV)=VΣΣVA^{\top}A=(U\Sigma V)^{\top}(U\Sigma V)=V^{\top}\Sigma^{\top}\Sigma V

より,(AA)V=V(ΣΣ)(A^{\top}A)V^{\top}=V^{\top}(\Sigma^{\top}\Sigma)

これは,VVii 行目を vundefinedi\overrightarrow{v}_i とおくと、 (AA)vundefinedi=σi2vundefinedi(A^{\top}A)\overrightarrow{v}_i=\sigma_i^2\overrightarrow{v}_i と書ける。

つまり,対称行列 AAA^{\top}A を直交行列で対角化したときの直交行列が VV^{\top} で対角行列が ΣΣ\Sigma^{\top}\Sigma となる。つまり,特異値と VV が分かる。ちなみに viv_i のことを右特異ベクトルと呼ぶ。

同様に,(AA)U=U(ΣΣ)(AA^{\top})U=U(\Sigma\Sigma^{\top}) より対称行列 AAAA^{\top} を直交行列で対角化したときの直交行列が UU で対角行列が ΣΣ\Sigma\Sigma^{\top} となる。つまり,特異値と UU が分かる。ちなみに UU の列ベクトルのことを左特異ベクトルと呼ぶ。

特異値分解は,行列の低ランク近似や擬似逆行列の計算などに使われます。