SDFT: 자기 증류로 망각 없이 학습하기
SOTAAZ·

SDFT: 자기 증류로 망각 없이 학습하기
복잡한 강화학습 없이, 모델이 스스로를 선생님 삼아 새로운 기술을 배우면서도 기존 능력을 유지하는 방법.
TL;DR
- 문제: 기존 SFT는 새로운 것을 배우면 이전 것을 잊음 (Catastrophic Forgetting)
- 해결: SDFT (Self-Distillation Fine-Tuning) - 자기 증류 미세조정
- 핵심: 모델이 demonstration을 조건으로 받아 스스로 학습 신호 생성 (On-policy)
- 결과: 망각 없이 여러 기술을 순차적으로 학습 가능
1. 왜 SFT는 망각을 유발하는가?
Supervised Fine-Tuning의 한계
기존 SFT 방식의 문제:
학습 데이터 분포 ≠ 모델의 현재 출력 분포Off-policy vs On-policy
Off-policy (SFT):
모델 출력: "The cat sat on the..."
정답 레이블: "A feline rested upon the..."
→ 모델의 자연스러운 출력 무시하고 강제 학습On-policy (SDFT):
모델 출력: "The cat sat on the mat."
학습 신호: 모델 자신의 출력에서 생성
→ 현재 분포를 유지하면서 개선2. SDFT: 자기 증류 미세조정
핵심 아이디어
모델에게 시연(demonstration)을 보여주고, 그 지식을 기반으로 모델 스스로가 학습 데이터를 생성하게 한다.
작동 방식
1. Demonstration 제공
[예시 입력] → [예시 출력]
2. 모델이 조건부 생성
π(y|x, demonstrations)
3. 생성된 데이터로 자기 학습
모델 출력 → 학습 신호수식으로 표현
기존 SFT 목표:
$$\mathcal{L}_\text{SFT} = -\mathbb{E}_{(x,y)\sim\mathcal{D}}[\log \pi_\theta(y|x)]$$
SDFT 목표:
$$\mathcal{L}_\text{SDFT} = -\mathbb{E}_{x\sim\mathcal{D}}[\log \pi_\theta(y|x)] \quad \text{where } y \sim \pi_\theta(\cdot|x, \text{demos})$$
차이점: $y$가 고정된 정답이 아니라 모델 자신이 생성한 출력.
3. 왜 SDFT가 효과적인가?
분포 유지의 중요성
SFT: P_model → P_new_data (기존 분포 파괴)
SDFT: P_model → P_model + Δ (기존 분포 보존하며 개선)자기 증류의 장점
RL과의 비교
강화학습도 on-policy지만:
- RL: 보상 함수 필요 (설계 어려움)
- SDFT: 보상 함수 불필요 (demonstration만 있으면 됨)
4. 실험 결과
연속 학습 성능
논문의 주요 실험 결과:
순차 학습 시나리오
작업 순서: Task A → Task B → Task C
SFT 결과:
- Task A: 90% → 60% → 40% (계속 하락)
- Task B: — → 85% → 55%
- Task C: — → — → 80%
SDFT 결과:
- Task A: 90% → 88% → 86% (거의 유지)
- Task B: — → 85% → 83%
- Task C: — → — → 82%5. 구현 개념
Pseudo-code
def sdft_training_step(model, input_x, demonstrations):
# 1. Demonstration을 조건으로 모델 출력 생성
with torch.no_grad():
# In-context learning으로 출력 생성
y_generated = model.generate(
input_x,
context=demonstrations,
temperature=1.0
)
# 2. 생성된 출력으로 학습 (on-policy)
loss = -model.log_prob(y_generated, given=input_x)
return loss핵심 구성요소
- Demonstration 조건화: 모델에 예시를 보여줌
- 자기 생성: 모델이 직접 출력 생성
- On-policy 학습: 생성된 출력으로 자기 학습
6. 한계와 고려사항
현재 한계
적용 시 고려사항
- Demonstration 선택: 대표적이고 다양한 예시 필요
- 생성 다양성: Temperature 조절로 다양한 출력 유도
- 학습률 조절: 너무 빠른 학습은 여전히 망각 유발
7. 실용적 시사점
언제 SDFT를 쓸까?
✅ 적합한 경우:
- 모델을 지속적으로 업데이트해야 할 때
- 새 도메인 적응이 필요하지만 기존 능력 유지 필요
- 보상 함수 설계가 어려운 상황
❌ 부적합한 경우:
- 완전히 새로운 능력 학습 (기존 모델에 관련 지식 없음)
- 빠른 one-shot 적응이 필요한 경우
미래 전망
SDFT는 대규모 언어 모델의 지속적 업데이트에 핵심 기술이 될 수 있다.
- 모델 업데이트: 새 지식 추가 시 전체 재학습 불필요
- 도메인 적응: 특정 분야 특화 시 범용 능력 유지
- 안전성: 기존의 안전 학습 결과 보존
핵심 정리
참고 자료
- 논문: Self-Distillation Enables Continual Learning
- 프로젝트 페이지: https://self-distillation.github.io/SDFT.html
- 저자: Idan Shenfeld, Mehul Damani, Jonas Hübotter, Pulkit Agrawal (MIT CSAIL)