개발_기록용

[선형대수학 정리] 18. 고윳값 분해 (eigen decomposition) 본문

선형대수학

[선형대수학 정리] 18. 고윳값 분해 (eigen decomposition)

나폴나폴 2024. 7. 24. 17:40
728x90

1. 배경

 


그래픽스 공부에 들어가기 전, 근본 중에서도 근본인 선형대수학을 먼저 파야겠다고 생각했다!
 
Chris Ohk 님의 Game Developer Roadmap 2022를 보고 내가 부족한 부분을 채워나가기로 결심했기 때문이다.
 

https://github.com/utilForever/game-developer-roadmap

 

GitHub - utilForever/game-developer-roadmap: Roadmap to becoming a game developer in 2022

Roadmap to becoming a game developer in 2022. Contribute to utilForever/game-developer-roadmap development by creating an account on GitHub.

github.com

.

2. 정리


 

고윳값 분해 (eigen decomposition)

 

 


2x2 짜리 행렬 A에 대해 고윳값과 고유벡터가 2개라 가정하자.

그럼 Av1= λv1, Av2= λv2 로 나타낼 수 있고

합치면 v를 column으로 하는

A[v1, v2] 으로 표기할 수 있다. 이를 행렬 V라 하자.


 


$$A[v_{1},v_{2}]=[\lambda_{1}v_{1},\lambda_{2}v_{2}]=[v_{1},v_{2}]
\begin{vmatrix}
\lambda_{1} & 0 \\
0 & \lambda_{2} \\
\end{vmatrix}$$

 

이렇게 주어진 식을 행렬 V를 끄집어 내어

λ가 포함된 행렬을 하나 더 만들 수 있다. 이를 행렬 Λ라 하자.

 

$$AV=\Lambda V$$


 

그러면 V는 고유벡터들로 이루어진 행렬이므로 각각 independent 하니

rank(V) = 2이고, full column rank이므로 invertable하다.


 

 

그래서 양쪽에 V의 역행렬을 곱하면

 

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

 

이와 같은 형태로 A에 관해 식을 정리하는 것을 고윳값 분해라 한다.

 

 

위의 식에서 Λ만 남도록 하면 양변에 V^{-1}V를 곱해서

 

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

 

로 정리할 수 있고, Λ는 n x n 대각행렬이라

이를 diagonalize (대각화) 라 하며

 

Λ를 위와 같이 정리할 수 있을 때

A는 diagonalizable 하다고 한다.

 


 

A가 고윳값분해가 가능하다는 것은

A가 diagonalizable 하다는 것

그리고 A는 independent한 eigen vector를 n개 갖는다는 것과 동치이다.


고윳값 분해의 장점

 

고윳값 분해를 했을 때의 장점을 알아보자.

 


① A의 k제곱의 계산이 매우 쉽다.

 

$$A^{k}=V\Lambda V^{-1}\cdot V\Lambda V^{-1}\cdot V\Lambda V^{-1}\cdot ... = V \Lambda^{k}V^{-1}$$

 

② A의 역행렬의 계산이 매우 쉽다.

 

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



③ determinant의 계산이 매우 쉽다.

 

det를 취하면 행렬의 곱을 분해할 수 있고

역행렬의 determinant는 역수이기 때문이다.

 

$$det(A)=det(V\Lambda V^{-1})=det(V)det(\Lambda)det(V^{-1})=det(\Lambda)=\lambda_{1} \lambda_{2}...\lambda_{n}$$

 

trace의 계산도 간단하다.

 

cyclic property를 사용하면

 

$$tr(A)=tr(V\Lambda V^{-1})=tr(\Lambda V^{-1}V)=tr(\Lambda)=\lambda_{1}+\lambda_{2}+...+ \lambda_{n}$$

 

rank - deficient 하면 det(A) = 0인데,

이는 영벡터인 고유벡터가 하나 이상 존재한다 와 동치이다.


 

고윳값 분해의 나머지 특징

 


① A의 고윳값은 A의 전치행렬의 고윳값과 같다.

 

$$det(A-\lambda I)=det((A-\lambda I)^{T})=det(A^{T}-\lambda I)$$

 

A가 직교행렬이면, 고윳값은 1과 -1이다.

 

Qv = λv 일 때, 크기를 구하고자 스스로 내적하면

 

$$(QV)^{T}QV=V^{T}Q^{T}QV=\left\|V\right\|^{2}_{2}=\lambda^{2} \left\|V\right\|^{2}_{2}$$



③ A가 P.S.D라는 것은 모든 고윳값이 0 이상인 것과 동치이다.

 

Diaogonalizable한 A의 non-zero인 고윳값의 수는 rank와 같다.

 

고윳값분해한 A에 대해 rank를 구해보면

V와 V^{-1}은 independent한 v벡터들로 이루어지니 무조건 full rank이다.

 

한편, rank는 곱해진 행렬들의 rank 중에서

제일 작은 것을 취하므로

 

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

 

그러면 행렬 Λ 에 대해 대각성분의 값들 중 0이 아닌 것의 수가

곧 rank(A)이다.


 

추가 내용

 

 

 

행렬 A가 Symmetric하면 무조건 diagonalizable 하고, V는 직교행렬이다.

 

A가 Symmetric하면

A의 전치 행렬과 A가 동일하고, 이는 행렬 Λ도 동일하다.

 

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

 

$$\therefore V^{-T}\Lambda V^{T}=V\Lambda V^{-1}$$

 

여기서 V의 역행렬과 V의 전치행렬이 동일하므로

V는 직교행렬 이라는 것도 유도할 수 있다.



그러면 V를 직교행렬 Q로 치환할 수 있고

Symmetric 행렬 A는

 

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

 

이라고 쓸 수 있다.


그러면 이를 쭉 전개했을 때

 

$$A=\lambda_{1}q_{1}q^{T}_{1}+\lambda_{2}q_{2}q^{T}_{2}+\lambda_{3}q_{3}q^{T}_{3}$$

 

과 같이 A를 rank-1 행렬들의 합으로 나타낼 수 있다.

 

Symmetric 행렬 A는 rank-1 행렬들의 합으로 나타낼 수 있다.

 

 

그러면 행렬 A에서 λ의 값이 작은 부분을 제거하여

데이터를 압축하는 원리로도 적용할 수 있다.

 

 

반응형
Comments