본문 바로가기
math4ai/Linear Algebra

M4AI) Singular Value Decomposition

by 잼민ai 2024. 7. 17.

안녕 오랜만이야.. 널 또 공부하게 될 줄은 몰랐는데 말이야..

 

본격적으로 SVD를 복습하기에 앞서, 지난 시간에 훑어본 eigen-decomposition의 한계를 먼저 살펴보도록 합시다. 

  • n×nn×n 행렬밖에 안 됨
  • symmetric한 애들한테 써먹을때 주로 유용함

SVD는 임의의 m×nm×n 행렬에 대해 적용할 수 있다는 장점이 있어요. Let's take a look into this step-by-step!

 

*이건 영상 레퍼런스인데 너무 도움 많이 돼서 가져옴! https://www.youtube.com/watch?v=vSczTbgc8Rc

 

본격적으로 SVD를 살펴보기 전에 먼저 두 가지 사실을 짚고 넘어가봅시다.

  • 행렬에 대해서는, 그냥 아무 숫자나 막 갖다 쓴 네모네모가 아닌 그 자체로 선형변환을 나타낸다는 생각을 견지하는 게 좋겠습니다! m×nm×n 행렬은 rank가 꼭 max(m,n)max(m,n)이 아니라는 데 주목해야겠습니다. 이것이 의미하는 바는, 이 행렬로 선형변환을 하면 차원이 늘어나거나 축소된다는 것이지요! 
  • Diagonal matrix는 eigenvector가 서로 orthogonal하다는 특징을 최대한 이용하기 위해, AAAAAAAA이 symmetric matrices라는 점에 주목해볼 겁니다.

자 그러면 대망의 SVD는 어떻게 나타내느냐!

A=UΣVA=UΣV(*)

헐랭 별거 없죠..? 각각이 뭐냐면,

U:m×m matrix of left singular vectorsΣ:m×n rectangular diagonal matrix containing singular valuesV:n×n matrix of right singular vectorsU:m×m matrix of left singular vectorsΣ:m×n rectangular diagonal matrix containing singular valuesV:n×n matrix of right singular vectors

흠 오키 근데 대체

singular가 뭐야...? 가 나의 첫 번째 의문이었음

 

일단 ΣΣ가 제일 특이해 보이니 이것부터 설명하고 넘어가지요. Eigendecomposition에서 ΛΛ는 eigenvalue로 구성된 diagnoal matrix였잖아요? 그거의 m×nm×n 버전이라고 생각하믄 됨!

이쯤에서 positive semidefinite의 개념을 소개해야 할 것 같은데요, 어떤 행렬 MM이 임의의 벡터 xRn에 대해 xMx0을 만족하면, M이 PSD라고 말합니다. 이런 행렬의 eigenvalue는 반드시 λ0이라는 특징이 있어요.

다시 돌아가서ㅋㅋ  AAAA의 eigenvector로 구성된 행렬이 각각 UV라고 했자네? 이 아이들 각각의 eigenvalue를 내림차순으로 정리했을 때, 각각의 λ1,,λmin(m,n)는 서로 동일하고 겹치지 않는 나머지 λmin(m,n)+1,,λmax(m,n)는 모두 0이래요. 말이 좀 어려웠는데 그냥 non-zero eigenvalue의 개수가 rank(A)임! 증명은 제게 묻지 말기.. 암튼 이때 λ1,,λmin(m,n)의 양의 제곱근을 바로 singular values라고 합니다! 얘네들로 구성된 행렬이 바로 Σ인 것이고..

 

좋다 각각의 component가 무엇인지는 알아봤으니.. SVD가 의미하는 바가 무엇인지를 이제 알아봐야 하지 않겠음? 다시 식 *로 돌아가서, 우리는 이제.. 오른쪽에서 왼쪽으로 식을 읽어나갈 겁니다ㅋㅋ

  1. 일단 V의 열들은 전부 orthogonal한 벡터잖아요? 여기에 전치를 취하면, orthogonal matrix의 특성으로 인해 V1이 되고 이는 곧 standard basis, 즉 우리가 알고 있는 xy축으로의 회전(rotation)을 의미합니다. 있어보이게 말한거지 그냥 xy 축으로 align 시켜준단 뜻임! 원래의 공간을 휘릭 돌려준 상태임.
  2. Σ는 준-대각행렬?ㅋㅋ이라서 σii 항을 제외하고는 전부 0입니다. 이는 곧 차원의 축소 또는 확장을 의미하구요. 그러고 차원을 축소/확장해줍니다. 3차원=>2차원으로 가는 경우면 공간을 찌그러뜨린 셈이네요.
  3. 마지막 U도 eigenvector로 구성돼있고 orthogonal matrix니까 얘 또한 회전을 의미하겠죠? 그럼 회전 =>축소/확장=>회전 일케 되겠네요!

자세한 시각화는 영상 참고..

결국 SVD는 선형변환을 단계적으로 decompose했다~ 라고 이해해도 되겠구만!

 

Application

식을 이렇게 많이 쓰더라구요

A=UΛV=σ1u1v1+σ2u2v2+

행렬을 singular value를 이용해 decompose한다고도 말할 수 있을 것 같은데, 제일 만만한 예시가 이미지 해상도 조절(?)인 듯합니다.

출처: 영상 캡쳐

hmmm~~ 아 그나저나 장발 예쁘다 두상이 예쁘니까 저게 되는 거겠지

이짓을 왜하나요~ 싶은데, 저렇게 k를 계속 올리다보면 데이터를 많이 압축한 상태긴 한데도 원본 이미지만큼이나 준수한 해상도를 가지는 경우가 있습니다. 그래서 데이터를 압축하는 데에 유용하게 활용된다고 하네용

 

 오늘은 여까지~

728x90