특잇값 분해(Singular value decomposition, SVD) - 뒤틀림 정도 찾기
0) 서론
저번 포스팅에서 직교 축 자체를 찾아보았습니다.
오늘은 이 찾은 직교 축(입력축)이 행렬 $A$에 의해 변환되었을 때 '어느 정도' 로 늘어나거나 줄어드는지, '어느 방향'의 출력축이 되는지 즉, 직교 축의 '뒤틀림 정도'를 찾아보겠습니다.(여기서 '뒤틀림'이란 방향과 크기 모두를 포함하고 있다는 것. 느낌적인 느낌으로 아시겠죠?)
1) 직교축 자체는 찾았지만...
직교하는 축 자체는 찾았습니다.
(일단 처음 찾은게 입력축($A^TA$의 EVD)이기도하니, 이젠 직교축을 입력축이라고 부르겠습니다.)
그러나 이 입력축이 행렬 $A$에 의해서 변환되었을 때 입력축이 변환된 출력축은 어떻게 뒤틀리는지 알지 못합니다.(물론 여기서는 뒤틀려도 직교이죠!)
뒤틀린다는건 방향도 바뀌고, 크기도 바뀐다는 말이죠.
그럼 이 입력축이 변환된 출력축이 어떻게 뒤틀리는지는 어떻게 알 수 있을까요?
일단, 모르겠으면 수식부터 찬찬히 살펴보는게 지름길입니다.
$Av_i = \lambda_i v_i$
바로 고유값 분해 식입니다.
자, 여기서 수식을 찬찬히 살펴보면, 고유값 분해는 당연히 양 변의 두 벡터가 같아야 하지만, 특이값 분해로 넘어오면서 축을 두개로 나누기로 했었죠?
그렇다면, 이제 양 변의 벡터도, 계수도 이름을 바꾸면
$Av_i = \sigma_i u_i$
이렇게 정리할 수 있겠죠?
(물론 수학에서 이름이 바뀌면 애초에 아예 다른 대상을 지칭하게 되는건 당연히 아시죠? 즉, $\sigma_i$와 $u_i$는 이제 완전히 다른 대상입니다.)
그리고 진짜 재밌게도 $A^TA$의 EVD가 입력축을 결정했잖아요? 근데, 스펙트럼 정리에 의해서 대칭 행렬의 고유값 분해 결과는 항상 정규직교 고유벡터를 가진다는 겁니다.
따라서 입력축은 무조건 정규직교 고유벡터이죠!
그렇다면 출력축은요?
출력축도 $AA^T$의 EVD 결과이므로 너무나도 당연히 정규직교 고유벡터입니다!
(여기서 용어 혼동이 올 수 있는데, 우리가 현재 포스팅에서 찾으려고 하는건 '입력축이 변환된 출력축'이고, 여기서 말하는 '출력축'은 출력축 자체를 의미하는 말이라 서로 완전히 다른 용어입니다. '입력축이 변환된 출력축'은 직교 기저이고, '출력축'은 정규 직교 기저입니다.)
어? 그러면 수식이 있고, 상수(정규 직교 벡터는 항상 크기가 1)가 정해졌으니까 뭔가 미지수를 구할 수 있을 것 같지 않나요!?
2) $\sigma_i$를 구해보자
이제 바로 σᵢ (시그마)의 정체를 밝히러 떠나봅시다.
$Av_i = \sigma_i u_i$
σᵢ는 변환 후 벡터의 '크기(길이)'를 나타냅니다. 따라서 위 방정식의 양변에 길이를 재는 연산(Norm, ||...||)을 적용하면 σᵢ를 구할 수 있습니다.
$ \|Av_i\| = \|\sigma_iu_i\| $
우변에서 σᵢ는 음이 아닌 스칼라이고, uᵢ는 길이가 1인 단위 벡터입니다. 따라서 ||σᵢuᵢ|| = σᵢ * ||uᵢ|| = σᵢ * 1 = σᵢ 입니다.
따라서
$ \sigma_i = \|Av_i\| $
즉, σᵢ의 정체는 우리가 찾은 특별한 입력축 vᵢ를 A로 변환시킨 결과물 벡터(입력축이 변환된 출력축)의 '길이' 입니다.
$\sigma_i$가 음이 아닌 스칼라인 이유는..
$\sigma_i$는 $\lambda_i$에서 온 거잖아요?
근데 $A^TA$행렬의 고유값인 $\lambda_i$가 0보다 크거나 같기 때문에 $\sigma_i$도 음이 아닌 스칼라인 거죠.
수식으로 보면
\begin{align}
(A^TA)v_i &= \lambda_i v_i \\
v_i^T(A^TA)v_i &= v_i^T(\lambda_i v_i) \\
(Av_i)^T(Av_i) &= \lambda_i (v_i^Tv_i) \\
\|A v_i\|^2 &= \lambda_i \\
\end{align}
따라서 $\lambda_i$는 무조건 0보다 크거나 같을 수밖에 없습니다.
그런데 이 길이는 우리가 이미 아는 값과 연결됩니다.
길이의 '제곱'을 계산해 봅시다.
$ \sigma_i^2 = \|Av_i\|^2 = (Av_i)^T(Av_i) = v_i^T(A^TA)v_i $
그런데 vᵢ는 $A^TA$의 고유벡터이므로, (AᵀA)vᵢ = λᵢvᵢ 입니다.
위 식에 대입하면: vᵢᵀ(λᵢvᵢ) = λᵢ(vᵢᵀvᵢ)
vᵢ는 길이가 1인 단위 벡터이므로, vᵢᵀvᵢ = 1 입니다.
최종적으로 $\sigma_i^2 = \lambda_i$, 즉 $\sigma_i = \sqrt{\lambda_i}$ 라는 사실을 알 수 있습니다.
따라서 σᵢ는 쉽게 $A^TA$의 고유값 λᵢ에 루트(√)를 씌우면 됩니다.
3) $u_i$를 구해보자
Avᵢ = σᵢuᵢ
여기서 uᵢ에 대해 정리하면 됩니다. σᵢ는 스칼라이므로 양변을 나눌 수 있습니다.
$ u_i = \frac{1}{\sigma_i}Av_i $
즉, 입력축이 변환된 출력축(Av_i)에서 그 값($\sigma_i$)을 나눠주면, 정규직교기저인 출력축 그 자체가 유도된다는 말입니다.
[더 자세하게는,
Full SVD의 경우 $U$행렬($u_i$가 모인 행렬)이 m x m이고, 따라서 0인 값들이 생겨 위의 식으로는 정의가 되지 않고 그람-슈미트 직교화 등의 방법을 쓰게 되지만(좌측 영공간의 직교 기저를 찾기 위해),
일반적인 Reduced SVD의 경우 $U$행렬을 m x n으로 만들고 $\sigma$값 자체가 0인 경우는 무시해 버립니다.(따라서 위 식은 100% 작동합니다.)
개념상으로는 Full SVD를 배우고, 이후의 행렬식 자체도 Full SVD를 기준으로 설명 하지만, 실제로 값을 계산하는 부분으로 가면 Reduced SVD를 쓸 것이므로 실제 $u_i$의 값이 정의되지 않는 상황은 오지 않을 것입니다.]
4) 마무리
오늘은 입력축이 출력축으로 변환될 때 얼마나 뒤틀리는지, 그 방향과 정도를 찾아보는 시간을 가졌습니다.
제일 앞서 선형 변환은 가장 크게 나눠 '회전'과 '확대/축소(스케일링)'가 있다고 했는데요
여기서 입력축이 출력축으로 변환될 때
방향은 A라는 선형 변환의 '회전'만큼 돌아가고
스케일링은 $sigma$값 만큼 된다는 걸 알 수 있었습니다.
'Study > Mathematics' 카테고리의 다른 글
| 특잇값 분해(Singular value decomposition, SVD) - 행렬 기반 접근으로 유도하기 (0) | 2025.11.20 |
|---|---|
| 특잇값 분해(Singular value decomposition, SVD) - 행렬식으로 만들기 (0) | 2025.11.19 |
| 특잇값 분해(Singular value decomposition, SVD) - 직교 축 찾기 (0) | 2025.11.17 |
| 특잇값 분해(Singular value decomposition, SVD) - 개념2 (0) | 2025.11.16 |
| 특잇값 분해(Singular value decomposition, SVD) - 개념 (0) | 2025.11.15 |
