特異値分解

提供: miniwiki
2018/8/19/ (日) 17:41時点におけるAdmin (トーク | 投稿記録)による版 (1版 をインポートしました)
移動先:案内検索
ファイル:Singular-Value-Decomposition.svg
特異値分解の図示。2次元の実ベクトル空間上のせん断写像 [math]M = \begin{bmatrix}1&1\\0&1\end{bmatrix}[/math] による単位円の変形。MV* による等長変換(この図では回転)、Σ による伸縮(この図では単位円が楕円に変形されていて、その長径と短径が特異値に相当する)、U による等長変換(この図では回転)の合成に分解される。

特異値分解(とくいちぶんかい、: singular value decomposition; SVD)とは、線形代数学における、複素数あるいは実数を成分とする行列に対する行列分解の一手法である。信号処理統計学の分野で用いられる。特異値分解は、行列に対するスペクトル定理の一般化とも考えられ、正方行列に限らず任意の形の行列を分解できる。

特異値分解定理

M階数 rmn 列の行列とする。ただし、行列の要素は Kであり、K実数体 R または複素数体 C のいずれかであるとする。このとき、

[math]M = U\Sigma V^*[/math]

という M の分解が存在する[1][2]。 ここで Umm 列のユニタリ行列V*nn 列のユニタリ行列 V随伴行列複素共役かつ転置行列)。さらに半正定値行列 MM*(あるいは M*M)の正の固有値平方根 σ1 ≥ … ≥ σr > 0 が存在して、q = min(m, n), σr+1 = … = σq = 0 とおけば、mn 列の行列 Σ は以下の形になる。

[math] \Sigma = \begin{cases} \begin{bmatrix} \Delta & O \end{bmatrix} & (m \gt n) \\ \Delta & (m = n) \\ \begin{bmatrix} \Delta \\ O \end{bmatrix} & (m \lt n) \end{cases} \quad \text{where } \Delta = \operatorname{diag}(\sigma_1, \sigma_2, \dotsc, \sigma_q) [/math]

ここで Δσ1, ..., σq を対角成分とする qq 列の対角行列、部分行列 O零行列である。 この分解を特異値分解σ1, ..., σq を行列 M特異値と呼ぶ。

入力情報を n 成分の列ベクトル v として表し、出力として Mv が得られるようなモデルを考えると、行列 M の特異値分解によって得られるユニタリ行列と特異値について以下のような解釈を与えることができる。

  • 行列 V の各列は、M入力空間の正規直交基底を表す。
  • 行列 U の各列は、M出力空間の正規直交基底を表す。
  • 特異値は増幅率を表し、入力成分がそれぞれ何倍されて出力されるかを表す。

Σ の対角成分の並びは自由だが、応用上は取り扱いを簡単にするため降順に並べることが多い。こうすると、UV は一意には定まらないが、Σ は一意に定まる。

特異値、特異ベクトルと特異値分解との関係

MKm×n 上の行列とする。ある非負の実数 σ に対し、

[math]\begin{align} Mv &= \sigma u \\ M^*u &= \sigma v \end{align}[/math]

という条件を満たす Km 上の単位ベクトル uKn 上の単位ベクトル v の組が存在するとき、実数 σ を(ベクトル u, v に対応する)行列 M特異値 (singular value) と呼ぶ。またベクトル u, v を、それぞれ σ左特異ベクトル (left-singular vector)右特異ベクトル (right-singular vector) と呼ぶ。

任意の特異値分解

[math]M = U\Sigma V^{*}[/math]

において、Σ の対角成分は M の特異値に等しく、ユニタリ行列 U, V の列ベクトルは、それぞれ左特異ベクトル、右特異ベクトルを並べたものである。すなわち、

  • m × n 行列 M は、少なくともひとつ、多くとも q = min(m, n) 個の異なる特異値を持つ。
  • 常に Km 上のユニタリ基底が存在して、それは M の左特異ベクトルから成る。
  • 常に Kn 上のユニタリ基底が存在して、それは M の右特異ベクトルから成る。

1つの特異値に対し、2つ以上の線形独立な右(あるいは左)特異ベクトルが存在する場合、その特異値は縮退 (degenerate) しているという。縮退のない特異値に対しては常に、左右の特異ベクトルがそれぞれ(位相 e の違いを除いて)唯一つ存在する。結果として、もし行列 M のすべての特異値が正であり縮退のない場合、特異値分解は(ユニタリ行列 U, V の各列にかかる位相 ek の違いを除いて)唯一つに定まる。

縮退のある特異値 σdeg に対して、左特異ベクトル u1, u2 の正規化された線型結合 uc = αu1 + βu2 を考えると、左特異ベクトルの線型結合 uc もまた特異値 σdeg の左特異ベクトルとなっている。同様のことが右特異ベクトルについても成り立つ。特異値分解のユニタリ行列 V, U の特異値 σdeg に対応する列ベクトルは、特異ベクトルの線型結合の中から自由に選ぶことができるため、結果として行列 M の分解は一意ではなくなる。

固有値分解正方行列に対してのみ適用できるのに対し、特異値分解は任意の矩形行列に対して適用が可能である。また、行列 M正定値エルミート行列(したがって正方行列)である場合、M の固有値は実数かつ非負であり、このとき M の特異値と特異ベクトルはそれぞれ M の固有値と固有ベクトルに一致する。

幾何的な意味

行列 UV はユニタリ行列だから、U の列ベクトル u1,...,um は、体 Km 上の正規直交基底を成し、V の列ベクトル v1,...,vn は、体 Kn 上の正規直交基底を成す。

ベクトル xMx に写す線形変換(線型写像) [math]T: K^{n} \rightarrow K^{m}[/math] は、これらの正規直交基底を用いて簡単な形に表される。すなわち、 [math]T(v_{i}) = \sigma_{i} u_{i}[/math], ここで i = 1,...,min(m,n) に対しては σi は Σ の i 番目の対角成分、i > min(m,n) に対し T(vi) = 0。

このことから、特異値分解定理の幾何的な意味は以下のように説明できる。線型写像 [math]T: K^{n} \rightarrow K^{m}[/math] に対し、次のような性質を持つ正規直交基底 KmKn が存在する。ここに、TKni 番目の基底ベクトルを Kmi 番目の基底ベクトルについて σi 倍したものに写す。σi は負でない数。つまり、これらの基底を用いて、写像 T は、負でない数を成分に持つ対角行列で表される。

特異値分解の応用

擬似逆行列

特異値分解を用いて、擬似逆行列を計算することができる。行列 M の擬似逆行列は、その特異値分解 [math] M = U\Sigma V^*[/math] を用いて

[math] M^+ = V \Sigma^+ U^*, \,[/math]

と表せる。ここに Σ+ は、Σ の零でない成分の逆数を成分とする行列の転置である。この擬似逆行列を用いて、線形最小二乗法を行うことができる。

値域、零空間、行列の階数

特異値分解を用いて、行列 [math]M[/math]値域零空間を表現することができる。[math]M[/math] の特異値の中で零になるものに対応する右特異ベクトルが零空間の基底となる。[math]M[/math] の特異値の中で零でないものに対応する左特異ベクトルが値域の基底となる。すなわち [math]M[/math]行列の階数は、零でない特異値の数と一致する。さらに、[math]M[/math][math]M^*M[/math][math]M M^*[/math] の階数は一致し、 [math]M^*M[/math][math]M M^*[/math] の固有値は一致する。

数値計算上では、特異値を用いて行列の有効な階数を求めることができる。数値計算上では丸め誤差の影響で、階数が退化した行列に対し、非常に小さいが零ではない特異値が得られてしまう場合に有効である。

行列の近似

行列 [math]M[/math] を、ある特定の階数 [math]r[/math] を持つ別の行列 [math]\tilde{M}[/math] で近似すると便利な場合がある。この場合の近似を[math]\mbox{rank}(\tilde{M}) = r[/math] という条件のもとで [math]M[/math][math]\tilde{M}[/math] の差(フロベニウスノルム)が最小なものという意味であるとすると、行列 [math]M[/math] の特異値分解によって、[math]\tilde{M}[/math] を求めることができる。すなわち、

[math] \tilde{M} = U \tilde{\Sigma} V^* [/math]

ここに、 [math]\tilde{\Sigma}[/math] は、[math]\Sigma[/math] から大きい方から数えて [math]r[/math] 個の特異値を残して、それ以外の特異値を零とおいたもの。

脚注

参考文献

関連項目