RLHF Loop
마지막 수정:
RLHF는 보통 세 단계로 설명된다.
1. SFT로 instruction-following policy를 만든다
2. preference data로 reward model을 만든다
3. policy가 만든 completion을 reward model 점수로 다시 학습한다
세 번째 단계가 RL loop다.
기본 루프
prompt batch
-> policy가 completion 생성
-> reward model이 completion scoring
-> reference model과 KL distance 계산
-> reward - KL penalty로 update signal 구성
-> policy gradient update
여기서 policy는 학습되는 모델이고, reference model은 보통 RL 시작 전 policy의 frozen copy다.
reference model이 필요한 이유
reward만 최대화하면 모델이 reward model의 빈틈으로 과하게 이동할 수 있다.
reward 높이기
좋은 답변 강화
또는 reward model이 좋아하는 이상한 패턴 exploit
KL penalty는 policy가 reference model에서 너무 멀어지지 않게 잡아준다.
effective reward = reward_model_score - beta * KL(policy || reference)
beta가 너무 크면 모델이 거의 변하지 않는다. 너무 작으면 reward hacking이나 언어 품질 붕괴가 생길 수 있다.
RLHF가 무거운 이유
RLHF는 단순히 loss 하나를 바꾸는 일이 아니다.
policy model
reward model
reference model
value model(PPO에서는 보통 필요)
rollout generation
reward scoring
distributed training
그래서 작은 실험은 TRL 같은 trainer abstraction이 유용하고, 대규모 학습은 Slime 같은 rollout/training infra 문제가 된다.
RLHF와 SFT의 차이
SFT는 정답 sequence를 보고 따라 한다.
target tokens -> cross entropy
RLHF는 policy가 직접 만든 답을 평가받고, 평가가 높은 행동을 더 가능하게 만든다.
sampled completion -> reward -> policy gradient
이 차이가 RLHF를 강력하게 만들지만 동시에 불안정하고 비싸게 만든다.
참고 자료
- OpenAI, Training language models to follow instructions with human feedback
- Hugging Face, The Illustrated RLHF
- 로컬 참고:
reference-books/rlhf-book/ch03-Training-Overview.md - 로컬 참고:
reference-books/rlhf-book/ch06-Reinforcement-Learning.md
확인
- RLHF loop에서 reference model은 어떤 역할을 하는가?
- reward만 최대화하면 왜 위험한가?
- SFT와 RLHF의 학습 데이터 생성 방식은 어떻게 다른가?