G検定(ジェネラリスト検定)
とくいいちぶんかい
特異値分解
SVD
Singular Value Decomposition
特異値分解(SVD)は、どんな実行列Aでも、直交行列U・対角行列D・直交行列Vの転置の3つの積 A = U D V^T に分解する方法で、正方でない行列にも使える点で固有値分解より適用範囲が広い。
詳しい説明
行列を3つの行列の積に分ける
特異値分解(Singular Value Decomposition、SVD)は、行列を特異ベクトルと特異値に分解する方法です。行列Aがm×n行列のとき、特異値分解はAを次の3つの行列の積として書き表します。
A = U D V^T
- Uはm×mの直交行列です。Uの列を左特異ベクトルと呼びます。
- Dはm×nの対角行列です。対角に沿って並ぶ要素がAの特異値です。Dは必ずしも正方ではありません。
- Vはn×nの直交行列です。Vの列を右特異ベクトルと呼びます。V^TはVの転置です。
この定義は、イアン・グッドフェロー(Ian Goodfellow)、ヨシュア・ベンジオ(Yoshua Bengio)、アーロン・クールヴィル(Aaron Courville)の教科書『Deep Learning』(2016年)第2章2.8節に沿っています。
固有値分解との違い
固有値分解は、行列Aについて固有ベクトルを並べた行列Vと固有値のベクトルλを求め、A = V diag(λ) V^(-1) と書き直す方法です。特異値分解もAを行列の積に分ける点では似ていますが、固有値分解が同じ行列Vとその逆行列でAを挟むのに対し、特異値分解は左右に別々の直交行列UとVを置きます。
この違いから、使える範囲に差が出ます。
- すべての実行列は特異値分解を持ちます。固有値分解については同じことは言えません。
- 行列が正方でないとき固有値分解は定義されませんが、特異値分解なら使えます。
特異値と特異ベクトルの正体
特異値と特異ベクトルは、固有値分解の言葉で言い直せます。
- Aの左特異ベクトルは、AA^Tの固有ベクトルです。
- Aの右特異ベクトルは、A^TAの固有ベクトルです。
- Aの0でない特異値は、A^TAの固有値の平方根です。AA^Tの固有値についても同じことが成り立ちます。
Aがm×n行列でもAA^Tはm×m、A^TAはn×nの正方行列になるので、正方でない行列の性質を正方行列の固有値分解を通して調べられることになります。
何に役立つか
グッドフェローらは、特異値分解の最も有用な特徴の1つとして、正方でない行列に対して逆行列の考え方を部分的に一般化できることを挙げています。逆行列は正方行列にしか定義されませんが、特異値分解を使えば、正方でない行列にも逆行列に近い操作を考えられます。
主成分分析など、特異値分解を利用する次元削減の手法については、それぞれの語のページで扱います。
試験で問われること
G検定
- 特異値分解は行列Aを A = U D V^T の3つの行列の積に分解する。Uの列が左特異ベクトル、Vの列が右特異ベクトル、Dの対角要素がAの特異値である。
- UとVは直交行列、Dは対角行列である。Aがm×n行列ならUはm×m、Dはm×n、Vはn×nで、Dは正方とは限らない。
- すべての実行列は特異値分解を持つが、固有値分解はそうではない。正方でない行列では固有値分解が定義されず、特異値分解を使う。
- Aの左特異ベクトルはAA^Tの固有ベクトル、右特異ベクトルはA^TAの固有ベクトルであり、0でない特異値はA^TAの固有値の平方根である。
最終更新日: 2026/09/23