특잇값 - Singular value
행렬 A의 특잇값(singular value; σ)은 ATA의 고윳값의 제곱근에 의해서 정의된다.
σi(A)=λi
(λi는 ATA의 고윳값)
예시
2×3 행렬 A :
A=[4811714−2]
ATA=⎣⎢⎡4111487−2⎦⎥⎤[4811714−2]=⎣⎢⎡801004010017014040140200⎦⎥⎤
λ={36,9,0}
∴σ1=6, σ2=3, σ3=0
특잇값 분해 - Singular Value Decomposition (SVD)
특잇값 분해(Singular Value Decomposition ; SVD)는 어떤 실수 m×n 행렬을 다음과 같이 세 행렬로 분해하는 방법이다.
A=U∑VT
- U : 정규 직교 벡터(왼쪽 특이 벡터;left singular vector)를 열로 가지는 m×m 직교 행렬
- V : 정규 직교 벡터(오른쪽 특이 벡터;right singular vector)를 열로 가지는 n×n 직교 행렬
- ∑ : 특잇값을 주대각 성분으로 가지는 m×n 대각 행렬
∑=diag(σ1,σ2,...,σr,0,...)
(σ1≥σ2≥⋯≥σr>0 and r=rank(A))
SVD는 정방 행렬이 아니더라도 항상 존재한다.
SVD 더 디테일한 개념
실수 행렬 A∈Rm×n는 다음과 같이 분해될 수 있다.
A=U∑VT
-
U∈Rm×m :
AAT의 고유벡터(left singular vector)를 열로 가지는 m×m 직교 행렬. 즉, UTU=I
-
V∈Rn×n :
ATA의 고유벡터(right singular vector)를 열로 가지는 n×n 직교 행렬. 즉, VTV=I
-
∑∈Rm×n :
다음과 같은 형태의 대각 행렬.
∑=⎝⎜⎜⎜⎛σ1σ2⋱σr⎠⎟⎟⎟⎞
(σ1≥σ2≥⋯≥σr>0 and r=rank(A))
각 σi는 ATA의 0이 아닌 고윳값의 제곱근이고, 이를 A의 특잇값(singular value)이라고 한다.
U의 열들은 AAT의 고유벡터이고 V의 열들은 ATA의 고유벡터이다.
AAT=(U∑VT)(U∑VT)T=U∑VTV∑TUT=U∑2UT
ATA=(U∑VT)T(U∑VT)=V∑TUTU∑VT=V∑2VT
이므로 ATA (or AAT)의 고윳값 λi는 다음을 만족한다.
λi=σi2 (σi는 A의 i번째 특잇값)
이를 이용하여 ATA의 고유벡터를 구하면 왼쪽 특이벡터(left singular vector) ui를 다음과 같이 계산할 수 있다.
ui=σiAvi
반대로 다음을 이용해 오른쪽 특이 벡터(right singular vector)도 구할 수 있다.
Avi=σiui
예제로 알아보기
예제 1 (2×2).
다음 행렬을 특잇값 분해 하여라.
A=[3023]
단계별 풀이.
Step 1: ATA 구하기
ATA=[3203][3023]=[323237]
Step 2: ATA의 고윳값 구하기
det(ATA−λI)=∣∣∣∣∣3−λ23237−λ∣∣∣∣∣=λ2−10λ+9=(λ−9)(λ−1)
⇒λ1=9, λ2=1⇒σ1=3, σ2=1
Step 3: ATA의 고유벡터 구하기
(ATA−9I)x=[−62323−2][x1x2]=[00]
{−6x1+23x2=023x1−2x2=0⇔3x1−x2=0
일반 해 : t(1,3)
v1=[13]
정규화 : v1=∣∣v1∣∣v1=[2123]
(ATA−I)x=[623232][x1x2]=[00]
{6x1+23x2=023x1+2x2=0⇔x1+31x2=0
일반 해 : t(−1,31)⇒t(−3,1)
v2=[−31]
정규화 : v2=∣∣v2∣∣v2=[−2321]
Step 4 : 왼쪽 특이벡터 ui=σi1Avi 계산
u1=σ11Av1=31[3023][2123]=[2321]
u2=σ21Av2=1[3023][−2321]=[−2123]
Step 5 : 결론
U=[u1,u2]=[2321−2123]
V=[v1,v2]=[2123−2321]
∑=diag(σ1,σ2,...,σr,0,...)=[3001]
∴A=U∑VT=[2321−2123][3001][21−232321]
특잇값 분해의 기하적 해석
m×n 행렬A에 대해서 우리의 목표는 AT와 A의 열 공간의 정규 직교 기저를 구하는 것이다.
이 행렬의 계수(rank)가 2라고 가정할 때, 벡터 v1, v2를 AT의 열 공간의 정규직교벡터라고 하자.
A의 열 공간에 놓인 A의 상(image)은 Av1, Av2이고, 이를 정규화 하면 다음과 같다.
u1=∣∣Av1∣∣Av1=σ1Av1 , u2=∣∣Av2∣∣Av2=σ2Av2
그러므로 우리는 다음을 알 수 있다.
A[v1,v2]=[u1,u2][σ100σ2]=[σ1u1, σ2u2]
이를 기하적으로 해석해보자.
A는 정규직교벡터 v1,v2를 스칼라 배 된 정규직교벡터 u1,u2로 사상(map)한다.
쉽게 말해 선형 변환 A는 정규직교벡터 v1,v2를 각각 σ1u1, σ2u2로 늘리고, 회전시킨다. 이 때, 직교성을 보존한 채 크기만 변화한다.
즉, V는 입력 평면의 좌표축, ∑은 스케일링, U는 결과 벡터가 놓이는 출력 평면의 좌표축이고, 이를 통해 SVD는 행렬 A를 다음 세 가지로 분해한 것이다.
A=U∑VT⇒ 회전(VT) → 스케일링(∑) → 회전(U)
<참고자료>
Steve J. Leon, Linear Algebra with Application, 10th edition, 2021.