본문 바로가기

특이값 분해(Singular Value Decomposition)

특이값 분해(Singular Value Decomposition; SVD)는 임의의 행렬을 세 개의 다른 행렬로 분해하는 기법으로, 특이값 분해를 살펴보기 앞서 고유값 분해의 개념을 먼저 이해하는 것이 좋다. 

 

고유값 분해(Eigenvalue Decomposition)

임의의 벡터 $\mathbf{v}$가 있다고 하자. 임의의 정방 행렬(Square Matrix) $A$는 벡터 $\mathbf{v}$에 대해 함수로서 작용한다. 다시 말해, 행렬은 벡터를 변환시켜 다른 벡터를 출력한다(Linear Transformation).

 

$$A \mathbf{v} = \mathbf{v}'$$

 

행렬 $A$에 의해 변환된 벡터 $\mathbf{v}'$는 대부분 $\mathbf{v}$와 다른 크기와 방향을 가지게 된다. 그러나 수많은 벡터 중 어떤 벡터는 $A$에 의해 변환된 결과가 이전의 $\mathbf{v}$와 평행할 수 있다. 이처럼 변환 전과 후가 평행한, 방향이 변하지 않는 벡터 $\mathbf{v}$를 고유벡터라고 한다. 

 

따라서 임의의 정방 행렬 $A$에 대해, 다음을 만족하는 0이 아닌 벡터 $\mathbf{v}$가 존재한다면 $\lambda$는 행렬 $A$의 고유값(Eigenvalue), $\mathbf{v}$는 고유벡터(Eigenvector)라 할 수 있다. 식을 만족하는 고유벡터는 무수히 많으며 이에 따라 고유값 역시 고유벡터와 쌍으로 존재한다. 고유값과 고유벡터의 기하학적 의미에 대해서는 이곳에 잘 정리되어 있다.

 

$$A \mathbf{v} = \lambda \mathbf{v}$$

 

행렬 분해 기법으로서 고유값 분해(Eigenvalue Decomposition; EVD)는 위의 내용을 단지 행렬의 관점에서 바라본 것이다. 임의의 정방 행렬 $A$에 대해 우리는 다음 식을 만족하는 고유값과 고유벡터 행렬을 얻을 수 있다. 

 

$$A = V \Lambda V^{-1}$$

 

 

특이값 분해(Singular Value Decomposition)

문제는 고유값 분해가 정방 행렬에만 적용된다는 것인데, 이는 분해 과정에서 역행렬 계산이 필요하기 때문이다. 임의의 행렬이 역행렬을 가지기 위해서는 행과 열의 수가 같은 정방 행렬이어야 한다. 한편, 특이값 분해는 행과 열의 개수가 다른 직사각형 형태의 행렬에 적용할 수 있다. 특이값 분해는 기본적으로 임의의 $m * n$ 행렬 $A$를 아래와 같은 세 개의 행렬로 분해한다.

 

$$A=U\Sigma V^T$$

 

각 행렬 $U, \Sigma, V$ 의 특성은 다음과 같다. 

$$U: m * m\ \text{orthogonal matrix}$$

$$\Sigma: m * n\ \text{diagonal matrix}$$

$$V: n * n\ \text{orthogonal matrix}$$

 

계산 과정

아래 $2 * 3$ 행렬 $A$가 있다.

 

$$A = \begin{pmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \end{pmatrix}$$

 

정방 행렬이 아니기 때문에 고유값 분해를 할 수 없다. 그러나 $AA^T$는 어떨까?

 

$$A A^T  = \begin{pmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \end{pmatrix} * \begin{pmatrix} 1 & 4 \\ 2 & 5 \\ 3 & 6 \end{pmatrix} =  \begin{pmatrix} 17 & 22 & 27 \\ 22 & 29 & 36 \\ 27 & 36 & 45 \end{pmatrix}$$

 

이처럼 $A$를 특정한 방식으로 변환하면 대칭인 정방 행렬이 되며 고유값 분해가 가능하다. 이제 $A=U\Sigma V^T$를 다음과 같이 표현할 수 있다.

 

$$AA^T=U\Sigma V^T(U\Sigma V^T)^T =U\Sigma V^T (V^T)^T \Sigma^T U^T = U \Sigma \Sigma^T U^T$$

 

앞서 살펴본 것과 같이 $AA^T$는 대칭 정방 행렬이므로, 고유값 분해의 성질에 따라 $U$는 $AA^T$의 고유벡터 행렬이자 직교 행렬이다. 같은 방식으로 $A^TA$를 분해하면 직교하는 고유벡터 행렬 $V$를 얻을 수 있다. 이때 $AA^T$와 $A^TA$의 고유값은 동일하다. 따라서 우리는 $AA^T$와 $A^TA$를 분해함으로써 $U$와 $V$, $\Lambda$를 구할 수 있고, $\Lambda = \Sigma \Sigma^T$이므로 $\lambda$에 제곱근을 취해 $\sigma$를 구할 수 있다.

 

수학적 증명이 필요하다면 아래 페이지를 참고하자.

 

 

Proof of the Singular Value Decomposition

The existence claim for the singular value decomposition (SVD) is quite strong: “Every matrix is diagonal, provided one uses the proper bases for the domain and range spaces” (Trefethen & Bau III, 1997). MIT professor Gilbert Strang has a wonderful lec

gregorygundersen.com

 

 

*공부중에 고유값 분해를 대칭 행렬에만 적용 가능한 것으로 설명하는 유튜브 영상을 봤는데, 기본적으로 고유값 분해는 모든 정방 행렬에 적용되는 것이 맞다. 다만, 대칭 행렬의 경우 유용한 수학적 성질(직교 대각화 가능)을 가지므로 더 자주 활용된다.