7.2. Bases and Matrices in the SVD
선형대수학 글 목록
연결 강의: MIT 18.06 Linear Algebra - Lecture 29: Singular Value Decomposition
1. 이번 글의 위치
앞 글에서는 SVD의 기본 형태와 full-rank 2×2 예시를 봤다.
SVD의 핵심 형태는 다음이었다.
A=UΣVT
그리고 핵심 관계는 다음이었다.
Avi=σiui
이번 글에서는 강의의 다음 순서에 맞춰 rank가 부족한 행렬을 본다.
rank-deficient matrix에서는 null space가 등장하고, SVD는 네 기본 부분공간의 orthonormal basis를 한 번에 정리해 준다.
2. Rank-One Matrix 예시
다음 행렬을 보자.
A=[4836]
두 번째 행은 첫 번째 행의 2배이다.
[86]=2[43]
따라서 이 행렬의 rank는 1이다.
rank(A)=1
rank가 1이므로 row space와 column space는 각각 1차원이다.
null space와 left null space도 각각 1차원이다.
3. Row Space와 Null Space
row space는 행벡터들의 span이다.
이 행렬의 row space는 다음 벡터의 배수들로 이루어진다.
[43]
즉 row space는 R2 안의 하나의 직선이다.
SVD에서는 row space의 unit vector가 필요하다.
벡터 (4,3)의 길이는 5이다.
42+32=5
따라서 row space의 unit vector는 다음이다.
v1=[5453]
null space는 row space에 수직인 방향이다.
(4,3)에 수직인 unit vector는 다음처럼 잡을 수 있다.
v2=[53−54]
실제로,
[43][3−4]=12−12=0
이다.
따라서 v2는 null space 방향이다.
이제 V는 다음과 같다.
V=[545353−54]
이 행렬은 orthogonal matrix이다.
4. Column Space와 Left Null Space
column space는 열벡터들의 span이다.
이 행렬의 열벡터들은 모두 다음 방향의 배수이다.
[12]
예를 들어,
[48]=4[12]
이고,
[36]=3[12]
이다.
따라서 column space의 unit vector는 다음이다.
u1=51[12]
left null space는 column space에 수직인 방향이다.
(1,2)에 수직인 unit vector는 다음처럼 잡을 수 있다.
u2=51[2−1]
따라서,
U=51[122−1]
이다.
5. Singular Value 계산
singular value는 ATA의 eigenvalue에서 나온다.
먼저 ATA를 계산하자.
AT=[4386]
따라서,
ATA=[4386][4836]
계산하면,
ATA=[80606045]
이 행렬도 rank가 1이다.
따라서 eigenvalue 중 하나는 0이다.
trace는 다음이다.
80+45=125
고유값의 합은 trace와 같으므로, 다른 eigenvalue는 125이다.
λ1=125,λ2=0
singular values는 eigenvalue의 양의 제곱근이다.
σ1=125
σ2=0
따라서,
Σ=[125000]
이다.
6. Rank-One Matrix의 SVD 조립
이제 세 조각을 모으면 다음이다.
A=UΣVT
여기서,
U=51[122−1]
Σ=[125000]
이고,
VT=[545353−54]
이다.
곱을 확인해 보자.
먼저 UΣ를 계산하면,
UΣ=51[122−1][125000]
125=55이므로,
UΣ=[51000]
이제 VT를 곱하면,
UΣVT=[51000][545353−54]
계산 결과는 다음이다.
UΣVT=[4836]
즉 원래 행렬 A가 복원된다.
7. Rank-One SVD의 의미
이 예시에서는 singular value가 하나만 양수이다.
σ1=125,σ2=0
따라서 A의 핵심 작용은 하나의 방향에서만 일어난다.
입력공간의 row space 방향 v1은 column space 방향 u1으로 간다.
Av1=σ1u1
반면 null space 방향 v2는 0으로 간다.
Av2=0
그래서 Σ의 두 번째 diagonal entry가 0이다.
이것이 rank-deficient matrix에서 SVD가 null space를 처리하는 방식이다.
8. 네 기본 부분공간과 SVD
SVD는 네 기본 부분공간의 올바른 basis를 한 번에 제공한다.
A가 m×n 행렬이고 rank가 r이라고 하자.
그러면 V의 열벡터들은 Rn의 orthonormal basis를 이룬다.
앞쪽 r개는 row space의 basis이다.
v1,…,vr
뒤쪽 n−r개는 null space의 basis이다.
vr+1,…,vn
마찬가지로 U의 열벡터들은 Rm의 orthonormal basis를 이룬다.
앞쪽 r개는 column space의 basis이다.
u1,…,ur
뒤쪽 m−r개는 left null space, 즉 N(AT)의 basis이다.
ur+1,…,um
따라서 SVD는 다음 네 공간을 모두 정리한다.
- row space
- null space
- column space
- left null space
9. Dimension 정리
네 기본 부분공간의 차원은 다음과 같다.
| 공간 | 위치 | 차원 | SVD에서의 basis |
|---|
| row space | Rn | r | v1,…,vr |
| null space | Rn | n−r | vr+1,…,vn |
| column space | Rm | r | u1,…,ur |
| left null space | Rm | m−r | ur+1,…,um |
이 basis들이 좋은 이유는 모두 orthonormal하기 때문이다.
하지만 orthonormal인 것만으로는 충분하지 않다. Gram-Schmidt를 쓰면 어떤 subspace에서도 orthonormal basis를 만들 수 있다.
SVD의 특별한 점은 이 basis들이 행렬 A를 diagonal하게 만든다는 것이다.
즉,
Avi=σiui(i=1,…,r)
이고,
Avi=0(i=r+1,…,n)
이다.
각 vi는 대응되는 ui 방향으로만 간다. 서로 다른 방향끼리 섞이지 않는다.
10. Reduced SVD와 Full SVD
rank가 r인 행렬에서는 핵심 정보만 모아 reduced SVD로 쓸 수 있다.
A=UrΣrVrT
여기서,
Ur=∣u1∣∣u2∣⋯∣ur∣
Vr=∣v1∣∣v2∣⋯∣vr∣
이고,
Σr=σ10⋮00σ2⋮0⋯⋯⋱⋯00⋮σr
이다.
full SVD는 여기에 null space와 left null space의 basis까지 붙인 것이다.
A=UΣVT
계산이나 데이터 압축에서는 reduced SVD가 더 자주 쓰인다. 하지만 네 기본 부분공간을 모두 보려면 full SVD가 구조를 더 잘 보여준다.
11. Rank-One Terms로 보는 SVD
SVD는 다음처럼 rank-one matrix들의 합으로도 쓸 수 있다.
A=σ1u1v1T+σ2u2v2T+⋯+σrurvrT
rank-one 예시에서는 r=1이므로 다음 한 항만 남는다.
A=σ1u1v1T
실제로,
σ1=125=55
u1=51[12]
v1=[5453]
이므로,
σ1u1v1T=55⋅51[12][5453]
정리하면,
=5[12][5453]=[4836]
이다.
이 관점은 image compression과도 연결된다. 이미지를 행렬로 보면, 큰 singular value에 해당하는 rank-one term 몇 개만 남겨도 원래 이미지의 큰 구조를 보존할 수 있다.
12. 핵심 정리
SVD는 단순히 행렬을 세 조각으로 분해하는 공식이 아니다.
A=UΣVT
SVD는 네 기본 부분공간에 가장 좋은 orthonormal basis를 골라 주는 방법이다.
입력공간 쪽에서는 V가 다음을 제공한다.
- row space의 basis
- null space의 basis
출력공간 쪽에서는 U가 다음을 제공한다.
- column space의 basis
- left null space의 basis
그리고 A는 이 basis들 사이에서 아주 단순하게 작동한다.
Avi=σiui
row space 방향은 column space 방향으로 stretching되고, null space 방향은 0으로 간다.
이것이 SVD가 네 기본 부분공간, 고유값, 직교기저, 데이터 압축을 한 번에 연결하는 이유이다.