제목

  • 인간의 피드백(human feedback)을 이용하여 언어 모델이 명령을 잘 따르게끔(to follow instructions) 하도록 학습하는 방법에 대해서 다루는 OpenAI에서 작성한 논문이다.
    • 여기서 나오는 방법이 그 유명한 RLHF(Reinforcement Learning from Human Feedback)이다.
  • 이 방법을 이용해 GPT-3에 지도학습을 한 모델을 InstructGPT라고 한다.

결과 선요약

  • Labeler는 GPT-3보다 InsturctGPT가 내놓은 출력을 더 선호한다.
    • 1.3B InstructGPT가 few-shot을 넣어준 175B GPT-3나 SFT(supervised fine-tuning)을 진행한 175B GPT-3보다도 더 괜찮은 출력을 하는 것 같다.
  • InstructGPT가 GPT-3보다 truthfulness, toxicity에 대한 역량이 더 높다.
    • truthfulness 점수는 약 2배정도 높고, toxic한 output을 25% 덜 만들어낸다고 한다.
    • 그러나, bias 점수는 GPT-3랑 비슷한 편이라고 한다.
    • 기존의 LM은 다음 토큰 예측 작업만 한 거에 비해서, InstructGPT는 “사용자의 명령을 helpfully and safely 따르는 것”이 목적이 되기 때문이라고 말한다.
  • performance regression을 최소화하는 RLHF fine-tuning 방법을 제안했다.
    • 공개 NLP 벤치마크를 GPT-3에 적용했을 때보다 InsturctGPT에 적용했을 때 성능이 더 적게 상승한다?
    • 이걸 ‘alignment tax’라고 부르는데, 모델이 “사용자의 명령을 잘 따르도록” 학습이 되었기 때문에 약간의 성능 손해를 본다는 개념이다.
    • PPO 알고리즘이 아닌 PPO-ptx라는 방법을 써서 이를 최소화할 수 있다고 한다.
  • InsturctGPT는 fine-tuning되지 않은 것에 대해서도 일반화 능력이 있다.
    • ex. 코드 요약, code에 대한 질의응답, 다른 언어의 instruction 수행하기, …
    • 학습 데이터셋 분포에는 이런 데이터가 굉장히 rare한데 이런 것도 잘하더라.
    • GPT-3도 할 수는 있긴 한데 prompting을 굉장히 신경써주어야 한다.

방법

간단요약

  1. labeler가 프롬프트에 대한 적절한 출력(바람직한 행동에 대한 설명, demonstrations of the desired behavior)을 만들고, 이를 이용해 GPT-3를 fine-tune한다.
  2. 모델 출력을 (labeler가) 비교한 데이터셋을 만들고, 이을 이용해 RM(reward model)을 학습한다.
  3. RM이 내놓은 scalar 출력을 최적화하기 위해 PPO 알고리즘을 적용하여 supervised policy(아마, GPT-3)를 학습한다.

데이터셋 만들기

  • (1)에서 프롬프트에 대한 적절한 출력 쌍으로 데이터셋을 만드는데, 이를 어떻게 만들었는지에 관하여
  • 처음에는 labeler가 직접 prompt를 작성했다고 한다.
  • Playground라는 인터페이스로 넘어온 API 요청에 대해서만 수집했다고 한다.
    • InstructGPT의 초기버전을 올려놓은 인터페이스로, 우리가 원래 쓰는 ChatGPT랑은 다른 인터페이스인듯하다.
  • 이로부터 총 3개의 데이터셋을 만든다.
    • SFT 데이터셋: 13K개의 훈련용 프롬프트. 출처: API + labeler-written
    • RM 데이터셋: 33K개의 훈련용 프롬프트. 출처: API + labeler-written
      • labeler가 모델 출력에 따른 순위를 매겨놓음.
    • PPO 데이터셋: 31K개의 훈련용 프롬프트. 출처: API
      • 어떤 human label도 존재하지 않는다.

학습 방법

SFT

  • GPT-3을 SFT 데이터셋으로 지도학습을 진행한다.
  • 원래 1 에폭만 돌려도 오버피팅되는데, RM 점수나 인간 선호 점수(human preference ratings)는 에폭을 더 돌리는 게 낫다는 걸 발견해서, 총 16 에폭으로 학습

RM

  • 위에서 학습한 SFT 모델에 마지막 레이어(final unembedding layer)를 제거한 모델을 기반으로 학습을 한다.
    • 별도의 언어모델을 가져오도록 하면 된다.
    • RM의 크기는 6B을 사용한다. (175B 모델은 써봤는데 안 좋아서 안 쓴다고 한다. 부록 C 참고.)
    • 그러면 175B InstructGPT는 RM을 어떻게 사용하는거지?
  • labeler가 입력 프롬프트 에 대해서 보다 더 선호한다고 라벨링한 상황이다.
  • 따라서 에 대한 점수가 에 대한 점수보다 높으면 높을수록 loss 함수의 값이 작아진다.|
    • 가 크면 클수록, 의 값이 에 가까워지고 의 값은 에 가까워진다.
  • 하나의 입력 프롬프트 에 대해서 개의 예시 출력을 생성하고, 2개씩 점수를 비교해서 개로 나누는 것이다.

RL(Reinforcement Learning)

  • 먼저 PPO 모델은 SFT로 학습한 모델(=SFT 모델)을 복사한 모델을 기반으로 학습을 한다.
    • 아래 목적함수를 최대화(maxmize)하는 것이 목표다.
  • 입력 가 주어질 때 RL policy 로부터 생성된
    • Reward Model 에 넣었을 때 점수가 높아야 하며
    • 에 비해 원래 SFT 모델 에 대해서도 가능성이 높은 출력이어야 한다.
      • 논문에서는 per-token KL penalty라고 소개한다.
      • 의의: 성능이 어느정도 보장된 원래 모델을 크게 벗어나지 않도록 학습되기를 바란다.
  • 아래 항은 기존 PPO에서 performance regression을 줄이기 위해 새로 추가한 항으로,
    • 으로 pretrain 데이터셋으로부터 LM(Language Modeling)을 수행하도록 한다.
    • 이 방법까지 적용한 PPO 알고리즘을 “PPO-ptx”라고 소개한다.
    • continual learning의 일환?

요약

  1. GPT-3을 지도학습하여 SFT 모델을 만든다.
  2. (1)에서 얻은 SFT 모델의 마지막 레이어를 제거하여 RM을 만든다.
    • labeler가 더 선호하는 출력을 더 높은 점수를 주도록 학습한다.
  3. (1)에서 얻은 SFT 모델을 복사하여 PPO 모델을 학습시킨다.
    • RM에서 높은 점수를 받는 출력이면서도 원래 SFT가 출력할법한 출력을 뱉도록 학습한다.
  • 즉, PPO 모델을 학습시키려면, PPO 모델 / SFT 모델 / RM, 총 3개의 모델을 동시에 사용해야한다.

레퍼런스