성장通

고윳값 분해, 특이값 분해(SVD) 본문

ML&DL/머신러닝을 위한 수학

고윳값 분해, 특이값 분해(SVD)

백악기작은펭귄 2024. 3. 21. 17:26

고윳값 분해, 특이값 분해

고윳값 분해특이값 분해는 두 가지 강력한 행렬 분해 방법으로, 행렬의 분해 및 재구성을 통해 데이터를 더 잘 이해하고 머신러닝 및 딥러닝 모델의 성능을 향상시킬 수 있는 도구 중 하나이다. 특히 특이값 분해는 데이터 차원의 축소 및 압축, 잠재 요인 모델링, 노이즈 제거, 특징 추출 등에 사용할 수 있는 방법이므로 잘 알아두는 것이 좋다.


고윳값 분해

정방 행렬 $A$의 고유벡터로 이루어진 행렬 $V$와 각 고윳값을 대각성분으로 갖는 행렬 $\Lambda$에 대해 다음과 같은 식이 성립한다.

 

$$
AV = V\Lambda
$$

 

이때 만약 모든 고유벡터들이 선형 독립이라면 그 행렬의 고유벡터들이 벡터 공간의 기저를 형성한다는 것을 의미하며, 이러한 행렬의 고유벡터들을 열벡터로 하는 행렬 $V$를 사용하여 해당 행렬을 대각화 할 수 있다.

 

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

 

이처럼 정방행렬을 고윳값과 고유벡터를 이용하여 분해하는 것을 고윳값 분해(eigen decomposition, EVD)라고 한다. EVD를 사용하면 행렬의 성질을 쉽게 분석할 수 있고, 연산을 간단하게 만들 수 있다. EVD는 $A$가 대각화 가능할 때, 즉 $V$의 열벡터들이 서로 선형 독립일 때 수행할 수 있다.

 

기하학적으로 봤을 때, EVD의 결과인 $V\Lambda V^{-1}$은 각각 회전, 늘리기, 회전으로 볼 수 있다. 즉, 기존의 선형 변환을 세 단계로 나누어서 볼 수 있게 해 준다.

 

만약 $A$가 대칭 행렬(symmetric matrix)이라면 $A=A^T$이므로 다음이 성립한다.

 

$$
A = V\Lambda V^{-1} = A^T = (V\Lambda V^{-1})^T = (V^{-1})^T\Lambda^TV^T
$$

 

$\Lambda$는 대각 행렬이므로 $\Lambda^T$는 $\Lambda$이고 $(V^{-1})^T=(V^T)^{-1}$이므로 $V\Lambda V^{-1}=(V^{-1})^T\Lambda^T V^T=(V^T)^{-1}\Lambda V^T$가 된다. 따라서 행렬 $V$는 정방 행렬이자 직교 행렬(orthogonal matrix)로, $VV^T = V^TV=I$이며 $V^{-1}=V^T$가 성립하고 $A=V\Lambda V^T$가 성립한다.

 

특이값 분해

특잇값 분해(Singular Value Decomposition, SVD)는 EVD의 일반화된 분해 방법으로, 정방 행렬이 아닌 행렬에도 사용 가능하다. SVD는 임의의 $m \times n$ 차원의 행렬 $A$에 대해 다음과 같이 분해하는 것을 의미한다.

 

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

 

여기서 $A$는 $m\times n$ rectangular matrix, $U$는 $m\times m$ orthonormal matrix이며, $\Sigma$는 $m\times n$ diagonal matrix, $V$는 $n\times n$ orthogonal matrix이다.

 

우리는 2차원 실수 벡터 공간에서, 영벡터가 아닌 임의의 벡터 $v$에 대해, $v \cdot x = 0$ 즉, $v$에 직교하는 영벡터가 아닌 벡터 $x$를 항상 찾을 수 있음을 직관적으로 알 수 있다. 이는 그람-슈미츠 과정을 통해서도 확인할 수 있다.

 

* 그람-슈미츠 과정이란?

 

Rank, Basis, Span

Rank, Basis, Span Rank, Basis 그리고 Span은 선형 대수학에서의 핵심 개념 중 하나이다. 이는 행렬 기반으로 연산이 수행되는 대부분의 머신러닝 개념의 근간이 되므로 잘 알아두는 것이 좋다. Rank Rank(

kevin-rain.tistory.com

 

하지만 이러한 직교하는 두 벡터에 행렬 $A$로 선형 변환을 해주었을 때에도 이 둘이 항상 직교하는 것은 아니다. 그렇다면 선형 변환 전과 후 모두에도 직교하는 벡터를 어떻게 찾을 수 있을까?

 

SVD가 바로 서로 직교하는 벡터 집합에 대하여 선형 변환을 수행하였을 때, 그 크기는 변하지만 여전히 직교하는 직교 집합을 찾는 과정이다. 행렬 $A$의 분해 공식 $A = U \Sigma V^T$에서 $V$는 선형 변환 전 직교하는 벡터의 모음이며 $U$는 선형 변환 후 직교하는 벡터의 모음이다. 각 행렬을 이루는 벡터는 서로 직교하지만 그 크기는 $U$의 직교 벡터와 $V$의 직교 벡터가 다른데, 이 길이 차를 나타내는 배수(scaling factor)를 특이값(singular value)이라고 한다.

 

SVD는 입출력의 차원이 다른 경우에도 사용이 가능하며, 분해된 행렬을 다시 조합하는 과정에서 $U, \Sigma, V^T$의 일부만 사용해서 부분 복원함으로써 용량을 압축하는 등으로 이용할 수도 있다.

 

그림 출처: 공돌이의 수학정리노트 (Angelo's Math Notes)