요약
LoRA(Low-Rank Adaptation)는 사전학습된 모델의 가중치를 직접 수정하지 않고, 저랭크(low-rank) 행렬 분해를 통해 가중치 변화량을 효율적으로 학습하는 fine-tuning 기법이다.
본문
핵심 아이디어
기존 가중치 W0를 고정하고, 업데이트 ΔW를 두 개의 작은 행렬 A와 B의 곱으로 표현한다:
h=W0x+ΔWx=W0x+BAx
여기서:
- W0∈Rd×k: 원본 가중치 (frozen)
- B∈Rd×r, A∈Rr×k: 학습 가능한 저랭크 행렬
- r≪min(d,k): 랭크 (보통 4, 8, 16 등 작은 값)
파라미터 효율성
예를 들어 d=k=4096이고 r=8인 경우:
- 전체 fine-tuning: 4096×4096=16,777,216 파라미터
- LoRA: (4096×8)+(8×4096)=65,536 파라미터
- 약 256배 파라미터 감소
초기화
- A: 정규분포로 초기화
- B: 0으로 초기화
- 학습 시작 시 ΔW=BA=0이므로 원본 모델과 동일하게 시작
참고