Zettelkasten

LoRA는 저랭크 행렬로 가중치 업데이트를 근사한다

·수정 2026.04.23·수정 3

요약

LoRA(Low-Rank Adaptation)는 사전학습된 모델의 가중치를 직접 수정하지 않고, 저랭크(low-rank) 행렬 분해를 통해 가중치 변화량을 효율적으로 학습하는 fine-tuning 기법이다.

본문

핵심 아이디어

기존 가중치 W0W_0를 고정하고, 업데이트 ΔW\Delta W를 두 개의 작은 행렬 AABB의 곱으로 표현한다:

h=W0x+ΔWx=W0x+BAxh = W_0 x + \Delta W x = W_0 x + BA x

여기서:

  • W0Rd×kW_0 \in \mathbb{R}^{d \times k}: 원본 가중치 (frozen)
  • BRd×rB \in \mathbb{R}^{d \times r}, ARr×kA \in \mathbb{R}^{r \times k}: 학습 가능한 저랭크 행렬
  • rmin(d,k)r \ll \min(d, k): 랭크 (보통 4, 8, 16 등 작은 값)

파라미터 효율성

예를 들어 d=k=4096d = k = 4096이고 r=8r = 8인 경우:

  • 전체 fine-tuning: 4096×4096=16,777,2164096 \times 4096 = 16,777,216 파라미터
  • LoRA: (4096×8)+(8×4096)=65,536(4096 \times 8) + (8 \times 4096) = 65,536 파라미터
  • 약 256배 파라미터 감소

초기화

  • AA: 정규분포로 초기화
  • BB: 0으로 초기화
  • 학습 시작 시 ΔW=BA=0\Delta W = BA = 0이므로 원본 모델과 동일하게 시작

참고