본문 바로가기
Study/머신러닝

SVD와 Eckart-Young 정리: low-rank란?

by 김카비 2026. 4. 16.

1. 행렬 = 공간 변환

행렬 M에 벡터 x를 곱한다는 건 공간을 변환하는 것이다:

y = Mx

SVD는 이 변환이 사실 세 단계로 분해된다는 것을 보여준다.


2. SVD 직관: 회전-늘리기-회전

M = U Σ Vᵀ
x → Vᵀx  →  ΣVᵀx  →  UΣVᵀx
  [회전]    [늘리기]    [회전]

1단계 Vᵀ: 입력 공간에서 회전 좌표계를 재정렬하는 것. 길이 변화 없음.

2단계 Σ: 각 축방향으로 늘리기 Σ는 대각행렬인데, 대각 원소들이 전부 같을 필요가 없다:

Σ = [100   0    0  ]
    [0     50   0  ]
    [0     0    0.1]

각 σ값이 그 방향의 중요도다. σ가 크면 그 방향으로 공간을 많이 늘린다는 뜻이고, σ가 0에 가까우면 그 방향은 변환에 거의 영향을 주지 않는다.

3단계 U: 출력 공간에서 회전 늘린 결과를 원래 공간으로 돌려놓는 것.


3. Low-rank = 중요도가 소수에 몰려있다

High-rank (중요도가 퍼져있음)

σ₁=100, σ₂=98, σ₃=95, σ₄=91 ...
→ 많은 방향이 다 중요함
→ 몇 개만 잘라내면 오차가 큼

Low-rank (중요도가 몰려있음)

σ₁=100, σ₂=98, σ₃=0.001, σ₄=0.0003 ...
→ 사실상 2개짜리 정보
→ 나머지 잘라내도 오차가 거의 없음

M을 풀어쓰면 사실 rank-1 행렬들의 합이다:

M = σ₁u₁v₁ᵀ  +  σ₂u₂v₂ᵀ  +  σ₃u₃v₃ᵀ  + ...
     [중요]        [중요]       [거의 0]

σ값이 작은 항들은 M에 거의 영향을 주지 않는다. 그러면 상위 r개만 써도 충분하지 않을까?


4. Eckart-Young 정리: 그게 최적임을 증명한다

rank-r 행렬 중에서 M과 가장 가까운 것은, SVD 상위 r개를 쓴 근사가 유일한 최적해다

수식으로:

argmin ‖M - M̃‖_F  =  σ₁u₁v₁ᵀ + ... + σᵣuᵣvᵣᵀ
rank(M̃) ≤ r

여기서 Frobenius norm은 행렬 간의 거리다:

‖A - B‖²_F = 모든 원소의 차이의 제곱합

그리고 그때의 오차는:

‖M - M̃‖_F = √(σᵣ₊₁² + σᵣ₊₂² + ...)

버린 singular value들의 크기가 곧 오차다. σ값이 작은 것들을 버렸으니, low-rank일수록 오차가 작다.


5. Low-rank = 변화가 작다는 뜻이 아니다

중요한 오해 하나:

  • rank: 변화의 방향 수
  • singular value: 변화의 크기

방향이 2개(low-rank)여도 σ₁이 100이면 그 방향으로는 변화가 매우 크다. GPS 없이 길을 찾는다고 할 때 "동쪽으로 100km, 북쪽으로 50km"는 방향이 2개(low-rank)지만 이동 거리는 엄청 클 수 있다.

LoRA에서 ΔW가 low-rank라는 건 fine-tuning이 별 의미 없다는 게 아니라, 변화가 넓게 퍼지지 않고 몇 개의 핵심 방향에 집중된다는 뜻이다.


6. SVD는 항상 존재하는가?

SVD는 완전히 증명된 수학적 정리다. 임의의 실수 행렬에 대해 항상 존재함이 보장된다.

증명의 핵심 아이디어는 귀납법이다. 단위구(compact set) 위에서 연속함수의 최댓값은 반드시 존재한다는 최댓값 정리로 첫 번째 singular value의 존재를 보장하고, 그 성분을 빼낸 뒤 같은 과정을 반복하면 전체 분해가 완성된다.

계산도 어렵지 않다:

U, S, Vt = np.linalg.svd(W)  # 한 줄이면 끝

7. 그럼 LoRA에서 ΔW가 low-rank임도 증명됐나?

아니다. 여기서 구분이 중요하다:

상태
SVD가 항상 존재한다 ✅ 수학적 증명
rank-r 근사의 최적성 (Eckart-Young) ✅ 수학적 증명
ΔW가 실제로 low-rank다 ❌ 경험적 관찰

Eckart-Young 정리는 이미 알고 있는 행렬을 rank-r로 근사할 때 SVD가 최적임을 보장한다. ΔW가 처음부터 low-rank인지는 전혀 별개의 문제다.

LoRA가 작동하는 건 수학적 증명이 아니라 "해봤더니 됐다"에 가깝다. SVD와 Eckart-Young은 그게 왜 말이 될 수 있는지의 직관을 제공하는 배경 지식이다.

댓글