Reward Models and Preference Data

마지막 수정:

reward-modelpreference-datarlhf

RLHF의 reward는 사람이 매 step마다 직접 주지 않는다. 먼저 사람이 비교한 데이터를 모으고, 그 비교를 흉내 내는 reward model을 학습한다.

prompt
  response A
  response B

human label:
  A가 B보다 좋다

이 데이터는 보통 chosen/rejected pair가 된다.

(prompt, chosen_response, rejected_response)

reward model이 하는 일

reward model은 prompt와 completion을 보고 scalar score를 낸다.

r(prompt, completion) -> score

학습 objective는 chosen score가 rejected score보다 높아지게 만드는 것이다.

score(chosen) > score(rejected)

그래서 reward model은 “정답 생성기”가 아니라 “이 답이 더 선호될 확률을 점수화하는 모델”에 가깝다.

Bradley-Terry 직관

두 답변의 점수 차이가 클수록 chosen이 더 선호될 확률이 커진다.

score(chosen) - score(rejected) 크게 양수
  -> chosen이 더 좋다고 강하게 예측

score(chosen) - score(rejected) 0 근처
  -> 둘 중 어느 쪽인지 애매함

loss는 이 차이를 키우는 방향으로 reward model을 업데이트한다.

reward model의 한계

human preference는 noisy하다.

사람마다 기준이 다르다
같은 사람도 다시 보면 다르게 고를 수 있다
긴 답변은 사실 확인 비용이 크다
안전성, 유용성, 간결성 기준이 충돌할 수 있다

또 reward model은 proxy objective다. 모델이 reward model의 약점을 찾아내면 실제 품질은 낮아지는데 reward만 높아질 수 있다.

reward model 이후

reward model을 만든 뒤에는 두 가지 길이 있다.

RLHF/PPO:
  policy가 rollout 생성 -> reward model이 scoring -> policy gradient update

best-of-N / rejection sampling:
  여러 답을 뽑고 reward model 점수가 높은 답만 선택하거나 SFT data로 사용

이후 DPO는 reward model을 명시적으로 학습하지 않고 preference pair에서 직접 policy objective를 만든다.

참고 자료

확인

  • reward model은 어떤 입력을 받아 어떤 출력을 내는가?
  • chosen/rejected pair에서 학습 신호는 어디서 생기는가?
  • reward model이 좋은 proxy가 아닐 때 어떤 문제가 생기는가?