특이값 분해

편집 역사 토론
수치해석 통계 마지막 수정: 2026-07-09 04:11:27

특이값 분해
Singular Value Decomposition
약칭SVD
분해 형태A = UΣVᵀ
적용 대상임의의 m×n 실/복소 행렬
관련 문제고유값 문제, QR 분해
대표 응용PCA, 저계수 근사, 모델차수축소

1. 개요[편집]

세상의 모든 행렬은 결국 “돌리고, 늘리고, 다시 돌리는” 것뿐이다.

특이값 분해(Singular Value Decomposition, SVD)는 임의의 m×nm \times n 행렬 AAA=UΣVTA = U\Sigma V^{\mathsf T} 형태로 분해하는 방법으로, UUVV는 직교(정규직교)행렬이고 Σ\Sigma는 음이 아닌 특이값을 대각선에 내림차순으로 담은 대각행렬이다. LU 분해QR 분해가 정사각·특정 조건의 행렬을 노리는 반면, SVD는 정사각이든 직사각이든, 특이하든 정칙이든 가리지 않고 항상 존재한다는 점에서 선형대수의 스위스 아미 나이프로 불린다.1

수학적으로는 AATA A^{\mathsf T}ATAA^{\mathsf T} A고유값 문제와 직결되어 있지만, 실무자 입장에서 SVD의 매력은 다른 데 있다. “이 행렬에서 진짜 중요한 방향이 뭐냐”를 특이값 크기순으로 줄 세워 주기 때문이다. 데이터 압축, 차원 축소, 잡음 제거, 유사역행렬 — 죄다 이 한 줄 세우기에서 파생된다.

2. 기하학적 의미[편집]

AA를 벡터에 곱하는 연산을 세 단계로 쪼갠 것이 SVD다.

  1. VTV^{\mathsf T}: 입력 공간에서 정규직교축을 골라 **회전(reflection 포함)**시킨다.
  2. Σ\Sigma: 각 축 방향으로 특이값 σi\sigma_i만큼 늘리거나 줄인다.
  3. UU: 출력 공간에서 다시 회전시킨다.

즉 임의의 선형변환은 “회전 → 축 스케일링 → 회전”의 합성으로 분해된다. 단위 구(unit sphere)를 AA로 변환하면 항상 타원체(hyperellipsoid)가 나오는데, 그 반축(semi-axis)의 길이가 바로 특이값 σ1σ20\sigma_1 \ge \sigma_2 \ge \cdots \ge 0이고, 반축의 방향이 UU의 열벡터다. 이 그림 하나만 머릿속에 있으면 SVD 관련 절반은 이해한 셈이다.

3. 저계수 근사와 에카르트-영 정리[편집]

SVD를 실전 병기로 만드는 핵심은 저계수 근사(low-rank approximation)다. AA를 특이값 순으로 랭크-1 조각들의 합으로 펼치면

A=i=1rσiuiviTA = \sum_{i=1}^{r} \sigma_i \, u_i v_i^{\mathsf T}

이고, 여기서 앞의 큰 kk개만 남긴 Ak=i=1kσiuiviTA_k = \sum_{i=1}^{k} \sigma_i u_i v_i^{\mathsf T}가 “랭크 kk짜리 최선의 근사”가 된다. 에카르트-영-미르스키(Eckart–Young–Mirsky) 정리는 이 AkA_k가 프로베니우스 노름과 스펙트럴 노름 모두에서 오차를 최소화하는 유일한 최적해임을 보장한다.2 버려진 오차의 크기는 정확히 잘라낸 특이값들로 결정된다.

AAk2=σk+1,AAkF=i>kσi2\|A - A_k\|_2 = \sigma_{k+1}, \qquad \|A - A_k\|_F = \sqrt{\sum_{i>k} \sigma_i^2}

특이값이 급격히 작아지는(스펙트럼이 빠르게 감쇠하는) 행렬일수록 적은 kk로 큰 정보를 담을 수 있다. 데이터가 “본질적으로 저차원”이라는 말은 곧 이 특이값 스펙트럼이 뚝 떨어진다는 뜻이다.

4. 조건수와 유사역행렬[편집]

SVD는 수치해석적 건강 진단서이기도 하다. 행렬의 조건수(condition number)는 최대·최소 특이값의 비로 정의된다.

κ(A)=σmaxσmin\kappa(A) = \frac{\sigma_{\max}}{\sigma_{\min}}

이 값이 크면 선형 시스템이 병적(ill-conditioned)이라 작은 입력 오차가 해에서 폭발한다. 가우스 소거법으로는 잘 안 보이던 이 위험을 SVD는 특이값 목록만 보면 바로 알려준다.

정칙이 아니거나 직사각인 행렬의 “역행렬 대용”인 무어-펜로즈 유사역행렬(pseudoinverse)도 SVD로 깔끔하게 정의된다.

A+=VΣ+UTA^{+} = V \Sigma^{+} U^{\mathsf T}

여기서 Σ+\Sigma^{+}는 0이 아닌 특이값을 역수로 바꾼 것이다. 이것이 최소자승법의 정규방정식 해를 안정적으로 주며, 랭크 결핍(rank-deficient) 문제에서 작은 특이값을 잘라내는 절단 SVD(truncated SVD)는 역문제 정규화의 표준 도구다.

5. 응용[편집]

  • 주성분 분석(PCA): 데이터를 중심화한 뒤 SVD하면 VV의 열이 곧 주성분 방향, 특이값 제곱이 분산이 된다. 통계와 머신러닝의 차원 축소는 사실상 SVD의 다른 이름이다.
  • 이미지 압축: 이미지 행렬을 저계수 근사하면 상위 특이값 몇십 개만으로 원본과 구분하기 힘든 그림을 복원한다. 교과서 예제 단골 손님.3
  • 모델차수축소(MOR)와 POD: 전산유체역학의 대규모 스냅샷 데이터에 SVD를 적용하는 적합직교분해(Proper Orthogonal Decomposition, POD)는 수백만 자유도의 유동장을 지배하는 소수의 모드를 뽑아낸다. 이는 축소차수모델(ROM), 디지털 트윈, 유동 제어의 뼈대가 된다.
  • 추천 시스템: 넷플릭스 프라이즈로 유명해진 잠재 요인 모델이 SVD 계열의 행렬 분해다.

6. 계산과 현실[편집]

이론상 ATAA^{\mathsf T}A의 고유값을 구하면 되지만, 실무에서 그렇게 하면 조건수가 제곱으로 나빠져 정밀도를 날려 먹는다. 그래서 실제로는 골룹-라인시(Golub–Kahan) 이중대각화 후 QR 알고리즘 계열로 특이값을 잡는 방식이 LAPACK 등에 표준 구현돼 있다. 초대형 희소·저계수 문제에는 랜덤화 SVD(randomized SVD)가 사실상 국룰이 됐다. 어느 쪽이든 “그냥 np.linalg.svd 부르면 되는 거 아냐?”라는 말이 통하는 건, 뒤에서 수십 년치 수치해석 노하우가 갈려 들어갔기 때문이다.4

7. 관련 문서[편집]

8. Footnotes[편집]

  1. SVD의 존재 증명은 컴팩트 집합 위 연속 함수의 최댓값 존재라는, 놀랍도록 소박한 도구만으로 끝난다. 정작 그렇게 겸손하게 태어난 정리가 현대 데이터 과학의 절반을 먹여 살린다.

  2. 에카르트(Carl Eckart)와 영(Gale Young)이 1936년에 프로베니우스 노름 버전을 증명했고, 미르스키(Leon Mirsky)가 1960년에 임의의 유니터리 불변 노름으로 일반화했다. 그래서 요즘은 세 사람 이름을 다 붙여 부르는 게 예의다.

  3. 다만 JPEG가 SVD를 쓰는 건 아니다. JPEG는 DCT 기반이다. “이미지 압축 = SVD”라고 시험지에 쓰면 반은 맞고 반은 틀린다.

  4. 특이값이 서로 매우 가까울 때 대응하는 특이벡터를 안정적으로 뽑는 문제는 지금도 수치선형대수의 골칫거리다. 값은 쉽게 나와도 방향은 예민하다.