Summary

특이값 분해(SVD)는 어떤 행렬이든 로 쪼개는 방법이다. 모든 선형변환을 “직교 회전 → 축마다 늘이기 → 직교 회전”의 3단계로 보는 셈이고, 늘이는 배율이 바로 특이값(singular value)이다. 정사각이 아니어도, 대각화가 안 되는 행렬이어도 항상 존재한다는 게 핵심.

용어 설명

  • singular value (특이값): 각 주축으로 얼마나 늘이는지 나타내는 배율 . 음수가 안 됨.
  • orthogonal matrix (직교행렬): 열들이 서로 수직이고 길이가 1인 행렬. , 즉 “길이·각도를 보존하는 회전(+뒤집기)”.
  • low-rank approximation (저랭크 근사): 큰 특이값 몇 개만 남겨서 행렬을 가볍게 근사하기.
  • pseudoinverse (유사역행렬): 역행렬이 없는(정사각이 아니거나 특이한) 행렬에도 쓰는 “역행렬 비슷한 것” .
  • rank (랭크): 0이 아닌 특이값의 개수. 행렬이 실제로 가진 “독립된 방향” 수.

Singular Value Decomposition (SVD)

1. 직관 (어떤 행렬이든 “회전 → 축별 스케일 → 회전”으로 분해)

행렬 를 곱한다는 건 곧 벡터 공간을 변형시키는 일이다. SVD는 이 변형이 아무리 복잡해 보여도 사실은 딱 세 동작의 조합이라고 말해준다.

  1. 회전(돌리기) — : 입력 공간을 빙 돌려서 “좋은 방향(주축)“이 좌표축에 맞도록 정렬.
  2. 축별 스케일(늘이기/줄이기) — : 축은 배, 축은 배… 이렇게 축마다 다른 배율로 늘인다.
  3. 다시 회전 — : 늘인 결과를 출력 공간에서 적절한 방향으로 다시 돌림.

그림으로 외우기

동그란 원(공)을 행렬로 변형하면 항상 타원이 된다. SVD는 그 타원을 정확히 묘사한다. 타원의 가장 긴 반지름 길이 = , 그다음 = , … 그리고 그 반지름들이 가리키는 방향이 의 열들이다. “원 → 타원, 타원의 반지름이 특이값” 이 한 문장만 기억해도 절반은 끝.

2. 정의 (A=UΣVᵀ, 각 인자 의미)

임의의 실수 행렬 는 다음처럼 분해된다.

  • : 직교행렬. 열 = 왼쪽 특이벡터(left singular vector), 출력 공간의 주축.
  • : 대각행렬. 대각 성분이 특이값 (큰 순서로 정렬).
  • : 직교행렬. 열 = 오른쪽 특이벡터(right singular vector), 입력 공간의 주축. (식에는 로 들어감)

예를 들어 라면 모양은 이렇다.

직교행렬은 “회전”, 는 “축별 늘이기”라는 1절의 직관과 정확히 대응한다. 또 를 특이값별 조각의 합으로도 쓸 수 있다(이게 4절 압축의 핵심).

3. 고윳값과의 관계 (AᵀA, AAᵀ의 고유분해)

자체는 정사각이 아닐 수 있어 고윳값을 직접 못 구한다. 그런데 와 는 항상 정사각 대칭행렬이라 고유분해가 깔끔하게 된다. 여기서 SVD가 튀어나온다.

정리하면,

  • 의 열 = 의 고유벡터
  • 의 열 = 의 고유벡터
  • — 특이값은 고윳값의 제곱근

Important

는 **대칭이고 양의 준정부호(positive semi-definite)**라서 고윳값이 항상 실수 . 그래서 제곱근을 씌운 특이값 도 항상 음수가 아니다. (고윳값은 음수·복소수도 되지만, 특이값은 절대 안 됨 — 이 차이가 시험 단골)

4. 쓰임 (저랭크 근사/PCA/pseudoinverse) + 예시 개념

  • 저랭크 근사 (low-rank approximation): 2절의 합 에서 큰 특이값 개만 남기면 원본을 거의 보존하면서 데이터가 확 줄어든다. 이게 Eckart–Young 정리: 랭크 로 줄일 때 그 근사가 (Frobenius 노름 기준) 최적이다.
    • 예: 1000×1000 흑백 이미지에서 특이값 상위 50개만 남기면, 눈에는 거의 같은데 저장량은 1/10 이하. 작은 특이값은 보통 “노이즈”라 버리면 노이즈 제거 효과도 난다.
  • PCA (주성분분석): 데이터를 평균 0으로 맞춘 뒤 SVD 하면, 의 열이 곧 주성분 방향, 특이값이 그 방향의 분산 크기. “데이터가 가장 많이 퍼진 방향 찾기” = 가장 큰 특이값 방향.
  • 추천 시스템: 사용자×영화 평점 행렬을 저랭크로 근사 → 빈칸(안 본 영화) 평점을 채워 추천. (Netflix류)
  • pseudoinverse (유사역행렬): ( 는 0 아닌 특이값을 역수로 바꾼 것). 해가 없거나 무수히 많은 에서 최소제곱(least squares) 해를 준다.
  • 랭크·조건수 진단: 0에 가까운 특이값 개수로 실제 랭크를 판단하고, (조건수)로 계산이 얼마나 불안정한지 본다.

5. 대각화와의 차이 (모든 m×n 가능 vs 정사각·고유벡터 필요)

고유분해 / 대각화 ()SVD ()
대상 행렬정사각 만모든
존재 조건고유벡터가 개 충분(대각화 가능)일 때만항상 존재
좌·우 기저같은 기저 하나(입력)와 (출력) 서로 다른 직교기저
기저 성질직교 보장 안 됨 (대칭행렬일 때만 직교)항상 직교
대각 성분고윳값 (음수·복소수 가능)특이값 (실수, 음수 아님)

핵심: 대각화는 “운이 좋아야” 되지만, SVD는 언제나 된다. 대칭이면서 양의 정부호인 행렬에서는 둘이 사실상 일치한다().

함정 모음

  • 는 유일하지 않다 — 특이값이 같거나 부호를 뒤집어도 되니 답이 여러 개. (특이값 자체는 유일)
  • 특이값은 큰 순서로 정렬되고 음수가 아님. 고윳값과 헷갈리지 말 것.
  • 인지 인지 식에서 전치 위치 주의.

6. 30초 요약 (bullets)

  • 한국어: 특이값 분해(SVD). 식: .
  • (), ()는 직교행렬(회전), ()는 특이값 을 가진 대각행렬(축별 스케일).
  • 직관: “회전 → 늘이기 → 회전 “. 원이 타원 되고, 타원 반지름 = 특이값.
  • 고윳값 연결: = 고유벡터, = 고유벡터, .
  • 쓰임: 저랭크 근사(압축·노이즈 제거, Eckart–Young), PCA, 추천, pseudoinverse (최소제곱), 랭크·조건수.
  • 대각화와 차이: 대각화는 정사각+고유벡터 충분일 때만, SVD는 항상 존재.
  • 함정: 특이값 (고윳값 아님), 부호·순서 자유.
  • 교과서: Strang, Ch 7.

관련 노트