특잇값 분해(Singular value decomposition, SVD) - 개념
0) 서론
오늘은 특잇값 분해(SVD)에 대해서 포스팅을 해보려고 합니다.
보통은 '특이값 분해'라고 쓰는 경우도 많은데, 공식 명칭(이랄까.. 맞춤법 규정상?)은 사이시옷이 들어간 형태라고 하네요!
특잇값 분해는 고윳값 분해에서 한발 더 나아간 내용이므로, 먼저 고윳값 분해 관련 포스팅(피보나치 수열을 선형대수로 풀어보자)을 보고 오시면 좋을 것 같습니다.
위의 포스팅은 독립된 고윳값 분해에 관련된 포스팅은 아니지만, 피보나치 수열을 선형대수로 풀어보기 위해 꼭 거쳐야 하는 고윳값 분해에 대해서 설명하고 있어 개념 이해도 쉬울 뿐더러 '피보나치 수열'이라는 직접적인 예시도 들고 있어, 링크에서 바로 이동하는 '고윳값 분해'파트만 보셔도 좋고, 아예 포스팅 전체를 보셔도 좋을 것 같습니다!
어찌되었든, 특잇값 분해에 대해서 한번 알아볼까요?
1) 고유값 분해를 기억하시나요?
$ Av=\lambda v $로 정의되었는데요
여기서 '행렬곱'이란 특정 공간에서의 '선형변환'을 의미한다고 본다면 이 식은
벡터 $v$를 행렬 $A$로 변환($Av$)한 결과가 원래 벡터 $v$의 방향은 그대로 둔 채 크기만 λ배 한 것과 같은 벡터 $v$가 있니?
라고 물어보는 식이 됩니다.
그리고 "네 있어요!"하면서 벡터 $v$를 찾으면 등호 관계에 따라 $\lambda$도 결정되게 되죠.
우리는 이 과정에서 결정된 벡터 $v$를 '고유벡터' 그리고 스칼라 값인 $\lambda$를 '고유값'이라고 부릅니다.
다시 말해 이 고윳값 분해(EVD)의 가장 큰 목적은 바로
행렬의 변환을 거쳐도 변하지 않는 벡터(고유벡터(아이겐 벡터;아이젠 벡터;eigen vector))를 찾기
였습니다.
그리고 이 벡터에 상수배만큼 곱해주는 부분이 고윳값(eigen value)이었구요.
그리고 이것을 약간 다르게 표현해 보자면
행렬 $A$가 가하는 변환의 '본질적인 축'(characteristic axes)을 찾는 것
이라고 볼 수 있습니다.
그리고 n x n 행렬에서는 무조건 축이 n개가 나오죠.
2) 기하학적으로 다시 설명해볼까요?
행렬 A를 하나의 '공간 변환기'라고 상상해 봅시다. 이 변환기는 벡터들을 입력받아 새로운 위치로 이동시키는 역할을 합니다.
예를 들어, 2차원 평면의 모든 점(벡터)들을 어딘가로 옮기는 것이죠.
이 변환이 시작되면, 대부분의 벡터들은 원래와 다른 방향으로 휙 돌아가 버립니다.
그런데 이 혼란스러운 움직임 속에서도, 마치 폭풍의 눈처럼 고요하게 자신의 방향을 유지하는 특별한 벡터들(v)이 존재할 수 있습니다.
이 벡터들은 변환 A를 거치더라도 방향이 바뀌지 않고, 단지 그 자리에서 늘어나거나(λ>1), 줄어들거나(0<λ<1), 혹은 방향이 반대로 뒤집힐(λ<0) 뿐입니다.
바로 이 변환의 '숨겨진 축'과도 같은 특별한 벡터를 고유벡터(v)라고 부르고, 그 축 방향으로의 '변화율' 혹은 '힘의 크기'를 고윳값(λ)이라고 부릅니다.
결국 고유값 분해란, 어떤 복잡한 선형 변환(A)의 가장 본질적인 '축'과 '힘'을 찾아내는 과정이라고 할 수 있습니다.
자, 이렇게 고윳값 분해는 "A로 변환해도 자기 자신과 평행한 방향(v)이 존재하는가?"에 대한 질문이 그 시작이었습니다.
3) 특이값 분해?
자, 여기서 사람들이 생각합니다.
음? 그러면 행렬 $A$로 변환해도 방향이 동일한 벡터도 찾을 수 있으면, 행렬 $A$로 변환해도 동일하게 '직교'하는 축들도 찾을 수 있는거 아냐?
직교성(Orthogonality)에 관련된 건 직교성 관련 포스팅(푸리에 급수에서 나온 파트기는 하지만..)을 한번 보고 오시면 바로 이해가 되실 겁니다.(물론 가신 김에 푸리에 파트를 전부 보고 오셔도 참 좋습니다)
간단하게 말해서 서로 수직으로 만나는가(좀 더 어렵게 말해서 공간상 Mutually Exclusive, 상호 배타적인가)를 말하는 겁니다.
(추가적으로 직교기저(Orthogonal basis)라는 용어는 컨설팅 용어인 MECE(Mutually Exclusive Collectively Exhaustive)랑 정확하게 매치된답니다!(직교는 위에서 말했다 시피 ME, 기저는 각 축의 최소단위로 기저들을 조합하면 CE가 되죠!) 재미있지 않나요?)
그리고 다시 말해보자면,
고윳값 분해를 해서 '직교축'도 찾을 수 있나?
가 되겠죠?
그러나 위에서 우리가 살펴보았듯이, 고윳값 분해는 애초에 '행렬 $A$'에 내재되어 있는 '본질적인 축'을 찾아내는 겁니다.
따라서, 대칭 행렬(Symmetric matrix)에서는 이 '본질적인 축'이 직교하기 때문에 고윳값 분해 만으로도 직교축을 찾을 수 있습니다.
하지만 안타깝게도 비대칭 행렬(Asymmetric matrix)에서는 EVD만으로는 직교축을 찾을 수가 없었지요..
그래서 사람들은
현재 '직교축'을 나타내는 벡터를 어떤 행렬로 선형변환 하더라도 그 결과가 계속해서 '직교축'을 나타내 주는 벡터(와 그 값)를 찾고 싶어졌습니다.
그리고 여기서 태동한 것이 바로 '특잇값 분해(SVD)'랍니다!
(자세히 보면, '행렬의 본질적인 축' 만으로는 행렬 변환 이후의 '직교성'을 정의할 수가 없습니다. 그래서 여기서 우리는 '현재 직교축'을 나타내는 벡터를 추가해서 '행렬 변환 후에도 직교인 축'을 찾아내려고 하는 겁니다.)
4) 마무리
무조건 첫 포스팅은 '짧게' 가려고 노력하고 있습니다.
애초에 요 근래에 다루는 내용들이 포스팅 단 하나만으로는 절대로 다룰 수 없는 내용들이기도 하구요!
오늘은 이 특잇값 분해가 왜 발생했는지, 그리고 본질적으로 무엇인지 개념을 살펴보았습니다!
'Study > Mathematics' 카테고리의 다른 글
| 특잇값 분해(Singular value decomposition, SVD) - 직교 축 찾기 (0) | 2025.11.17 |
|---|---|
| 특잇값 분해(Singular value decomposition, SVD) - 개념2 (0) | 2025.11.16 |
| 푸리에 오디세이(Fourier Odyssey): 라플라스 변환(Laplace Transform) (0) | 2025.11.14 |
| 푸리에 오디세이(Fourier Odyssey): 푸리에 변환 for 컴퓨터(Fourier Transform for computer) (0) | 2025.11.13 |
| 푸리에 오디세이(Fourier Odyssey): 복소 푸리에 변환(Complex Fourier Transform) (0) | 2025.11.12 |
