固有値分解では,
行列が
「どの方向を,どれだけ伸ばすか」
を理解しました。
しかし固有値分解には,
- 正方行列にしか使えない
- 固有値が存在しない場合がある
という制限がありました。
特異値分解(Singular Value Decomposition, SVD)は,
この制限をすべて取り払った分解です。
この記事では,
- SVDに必要な追加知識
- 固有値分解との関係
- 特異値分解の定義
- 特異値分解の求め方
- 幾何学的な意味
の順に説明します。
0. SVDに必要な追加知識(最小限)
内積とノルム
ベクトル \(\mathbf{x}\) の長さ(ノルム)は
$$ |\mathbf{x}| = \sqrt{\mathbf{x}^\top \mathbf{x}} $$
で定義されます。
SVDでは,
- 長さ
- 直交(直角)
が重要になります。
転置行列
行列 \(A\) の転置を \(A^\top\) と書きます。
SVDでは,
- \(A^\top A\)
- \(A A^\top\)
という行列が中心的な役割を果たします。
ランク(直感だけ)
ランクとは,
- 独立な情報の数
- 非ゼロ特異値の個数
を表します。
証明は不要ですが,
「次元が途中で減る理由」
を理解するために使います。
1. 固有値分解との関係
固有値分解は,
\(A\mathbf{v} = \lambda \mathbf{v}\)
という式から出発しました。
これは,
- 入力と出力が同じ空間
- 正方行列
の場合にしか定義できません。
SVDでは,考え方を少し変えます。
「Aそのもの」ではなく, 「Aによってどれだけ長さが変わるか」
を調べる
そのために使うのが,
$$ A^\top A $$
です。
2. 特異値の定義(固有値から作る)
\(A^\top A\) は,
- 正方行列
- 対称行列
なので,必ず固有値分解ができます。
$$ A^\top A \mathbf{v} = \lambda \mathbf{v} $$
この固有値 \(\lambda\) は必ず
$$ \lambda \ge 0 $$
になります。
ここで,
$$ \sigma = \sqrt{\lambda} $$
と定義したものを
特異値と呼びます。
重要な対応関係
- 固有値 \(\lambda\):伸び率の2乗
- 特異値 \(\sigma\):実際の伸び率
3. 右特異ベクトルと左特異ベクトル
右特異ベクトル
\(A^\top A\) の固有ベクトル
$$ \mathbf{v} $$
を
右特異ベクトルと呼びます。
左特異ベクトル
右特異ベクトル \(\mathbf{v}\) に対して,
$$ \mathbf{u} = \frac{1}{\sigma} A \mathbf{v} $$
と定義すると,
\(\mathbf{u}\) は長さ1のベクトルになります。
これを
左特異ベクトルと呼びます。
4. 特異値分解の定義
以上をまとめると,任意の行列 \(A\) に対して,
$$ A = U \Sigma V^\top $$
と書けます。
ここで,
- \(U\):左特異ベクトルを並べた行列
- \(\Sigma\):特異値を並べた対角行列
- \(V\):右特異ベクトルを並べた行列
です。
行列の形
- \(U^\top U = I\)
- \(V^\top V = I\)
つまり,
直交行列です。
5. 特異値分解の求め方(手順)
手順1:\(A^\top A\) を計算する
まず,
$$ A^\top A $$
を計算します。
手順2:固有値分解を行う
$$ A^\top A \mathbf{v}_i = \lambda_i \mathbf{v}_i $$
を解きます。
手順3:特異値を求める
$$ \sigma_i = \sqrt{\lambda_i} $$
手順4:左特異ベクトルを作る
$$ \mathbf{u}_i = \frac{1}{\sigma_i} A \mathbf{v}_i $$
手順5:行列を組み立てる
$$ U = (\mathbf{u}_1,\mathbf{u}_2,\dots) $$
$$ \Sigma = \mathrm{diag}(\sigma_1,\sigma_2,\dots) $$
$$ V = (\mathbf{v}_1,\mathbf{v}_2,\dots) $$
6. 幾何学的な意味
SVDは,行列 \(A\) を
- \(V^\top\):座標の回転
- \(\Sigma\):各方向の伸縮
- \(U\):回転
に分解しています。
固有値分解との違い(直感)
- 固有値分解:向きが変わらない方向
- SVD:最も伸びる方向
SVDは,
「行列が最もエネルギーを持つ方向」
を教えてくれます。
7. ランクと特異値
- 非ゼロ特異値の個数
= 行列のランク
特異値が途中でゼロになるのは,
その方向には情報が存在しない
ことを意味します。
まとめ
- SVDは固有値分解の一般化
- \(A^\top A\) の固有値問題から作られる
- 正方・非正方を問わず必ず存在
- 回転+伸縮+回転として理解できる
- ランクは「有効な情報の次元」
SVDを理解すると,
- PCA
- Matrix Approximation
- 情報圧縮
- 合理的注意
など,幅広い分野が一本の線でつながります。



コメント