【分かった気がする!線形代数】 固有値分解から説明する,「特異値分解(SVD)とは何か」

線形代数

固有値分解では,

行列が
「どの方向を,どれだけ伸ばすか」

を理解しました。

しかし固有値分解には,

  • 正方行列にしか使えない
  • 固有値が存在しない場合がある

という制限がありました。

特異値分解(Singular Value Decomposition, SVD)は,
この制限をすべて取り払った分解です。

この記事では,

  1. SVDに必要な追加知識
  2. 固有値分解との関係
  3. 特異値分解の定義
  4. 特異値分解の求め方
  5. 幾何学的な意味

の順に説明します。


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\) を

  1. \(V^\top\):座標の回転
  2. \(\Sigma\):各方向の伸縮
  3. \(U\):回転

に分解しています。


固有値分解との違い(直感)

  • 固有値分解:向きが変わらない方向
  • SVD:最も伸びる方向

SVDは,

「行列が最もエネルギーを持つ方向」

を教えてくれます。


7. ランクと特異値

  • 非ゼロ特異値の個数
    = 行列のランク

特異値が途中でゼロになるのは,

その方向には情報が存在しない

ことを意味します。


まとめ

  • SVDは固有値分解の一般化
  • \(A^\top A\) の固有値問題から作られる
  • 正方・非正方を問わず必ず存在
  • 回転+伸縮+回転として理解できる
  • ランクは「有効な情報の次元」

SVDを理解すると,

  • PCA
  • Matrix Approximation
  • 情報圧縮
  • 合理的注意

など,幅広い分野が一本の線でつながります。

コメント

タイトルとURLをコピーしました