moGue’s Garten

わりとアレな知識をアレな人向けになりふり構わず放出する

特異値分解

工学における線形代数に欠かせないのが特異値分解 (singular value decomposition: SVD) である.

特異値分解


任意の行列$A\in \mathbb{C}^{m\times n}$ について, あるユニタリー行列 $U\in \mathbb{C}^{m\times m}, V\in \mathbb{C}^{n\times n}$ が存在し, \begin{align} A = U D V^{\mathsf{H}} \end{align} という形にできる.ただし,$D \in \mathbb{C}^{m\times n}$ は対角成分のみ値を持つ*1


$A$ が正方行列でなおかつエルミート行列の場合, 上記はユニタリー対角化に一致する.このとき,$U=V$ となる. すなわち特異値分解は,エルミート性どころか,正方行列とも保証されていない一般の行列に対して,ユニタリー対角化を拡張したものであるとみなせる.

特異値

固有値分解において, 真ん中の対角行列 $D$ の対角成分が固有値を表すことは良く知られている. 正方行列では,非ゼロ固有値の個数が rank を表すこともまた,線形代数における基礎知識の一つである.

それに対して,特異値分解でできた $D$ の対角成分を特異値と呼ぶ. 非ゼロ特異値の個数は,元の行列 $A$ の rank に等しいことも知られている.

たとえば,$3\times 4$行列 $A$ を特異値分解した結果,[5, -3, 0] という特異値が得られたとする. これは,元の行列の rank が 2 であることを表す.

たとえば,$3\times 4$行列 $A$ を特異値分解した結果,[5, -3, 0.0000001] という特異値が得られたとする. これは,元の行列の rank が 3 であることを表す ... 果たしてそうだろうか.

[5, -3, 0.0000001]というのは確かにどれも非ゼロであるが, 最後の特異値はほかの2つの値に比べて著しく絶対値が小さい. 工学的な話をすると,数値計算の結果出てくる行列では, 数値誤差などにより「厳密に特異」なものはほとんど出てこない. 工学的に特異な行列とは,「特異値が厳密に0」なのではなく, 「特異値がある値 $\epsilon$ より小さい」を表すのである.

特異値分解工学的な rank を知るのに大いに役立つ,といえるだろう.

*1:$D$ は対角行列である,と言いたいが,対角行列は正方行列に定義されるものであるから,ここではそう呼ばないこととする.