보상 모델은 LLM 답변을 읽고 얼마나 좋은지 점수 하나로 매기는 모델이다. 사람의 선호를 흉내 내도록 따로 학습해 사람 대신 대량으로 채점하며, RLHF 학습의 채점관으로 쓰고 여러 답변 중 가장 나은 답을 고르거나 응답을 자동으로 채점할 때도 쓴다.
| 채점 방식 | 장점 | 한계 |
|---|---|---|
| 사람 평가 | 가장 정확함 | 느리고 비쌈 |
| 보상 모델 | 빠르게 대량 채점 | 학습 데이터의 편향을 그대로 따름 |
| LLM 심판 | 평가 기준을 글로 지시 | 호출 비용이 들고 판정이 흔들림 |
| 규칙 기반 검증 | 판정이 확실함 | 정답이 있는 작업에만 쓸 수 있음 |
절대 점수를 매기게 하면 사람마다 기준이 다르다. 그래서 같은 질문에 대한 두 응답을 보여 주고 더 나은 쪽을 고르게 해서 비교 데이터(preference pair)를 모은다.
보상 모델은 보통 사전학습된 LLM 위에 점수 하나를 내는 출력층을 붙여 만든다. 사람이 고른 응답이 고르지 않은 응답보다 점수가 높게 나오도록 배우기 때문에, 점수 값 자체보다 응답 사이의 점수 차이가 의미 있다.
Anthropic의 HH-RLHF 같은 공개 선호도 데이터셋과 Hugging Face trl의 RewardTrainer를 쓰면 직접 학습할 수 있다. 데이터는 질문, 고른 응답(chosen), 고르지 않은 응답(rejected) 세 칸이면 된다. 학습이 끝나면 목적에 맞춰 아래처럼 쓴다.
| 용도 | 방법 | 이럴 때 |
|---|---|---|
| RLHF 학습 | PPO 같은 강화학습의 보상으로 사용 | 모델 성향 자체를 바꿀 때 |
| Best-of-N | 답을 여러 개 만든 뒤 최고점만 채택 | 추가 학습 없이 품질을 올릴 때 |
| 자동 채점 | 평가셋 응답에 점수를 매겨 비교 | 프롬프트·모델 버전을 비교할 때 |
보상 모델은 사람의 판단을 흉내 낸 것일 뿐이라 빈틈이 있다. LLM은 그 빈틈을 파고들어, 실제로 더 좋은 답을 내기보다 답을 길게 늘이거나 듣기 좋은 말만 하는 식으로 점수를 올린다. 이것을 보상 해킹(reward hacking)이라고 한다.
이를 막으려고 RLHF에서는 원래 모델에서 너무 멀어지지 않도록 KL 페널티를 함께 걸고, 보상 모델 여러 개를 앙상블해 한 모델의 약점을 덮는다. 점수는 오르는데 답변 품질이 떨어지는 것 같으면 샘플을 사람이 직접 읽어 봐야 한다.
보상 모델을 학습한 뒤 강화학습까지 돌리는 과정은 단계가 많고 학습이 불안정하다. DPO는 같은 비교 데이터로 LLM을 바로 학습해서 보상 모델 단계를 없앤다. 수학이나 코드처럼 정답을 확인할 수 있는 작업이라면 테스트 통과 여부 같은 규칙 기반 보상이 더 믿을 만하다.
| 방식 | 보상 모델 | 맞는 상황 |
|---|---|---|
| RLHF (PPO) | 필요 | 세밀한 조정, 자원 여유가 있을 때 |
| DPO | 불필요 | 간단하고 안정적인 선호 학습 |
| 규칙 기반 보상 | 불필요 | 정답을 검증할 수 있는 작업 |
보상 모델은 사람이 직접 대화하는 모델이 아니라 LLM을 만들고 다듬는 과정 뒤에서 돌아간다. 사람 대신 많은 응답을 빠르게 채점해야 하는 자리라면 어디든 들어간다.
| 어디서 | 어떻게 쓰나 |
|---|---|
| 모델 미세조정 | 모델이 낸 답마다 점수를 매겨 강화학습 보상으로 넘기고, KL 페널티를 같이 건다 |
| 학습 데이터 거르기 | 한 질문에 답을 여러 개 만든 뒤 점수 높은 것만 남겨 다음 미세조정 데이터로 쓴다 |
| 답변 생성 단계 | 답 후보를 여러 개 만든 뒤 최고점 하나만 내보낸다 (Best-of-N) |
| 모델·프롬프트 평가 | 버전을 바꿀 때마다 평가셋 점수를 비교하고, 점수가 이상하게 튀면 사람이 샘플을 읽는다 |