문제 상황
LM을 크게 만든다고 해서 사용자의 의도를 맞추는 것이 나아지지 않는다. 즉, LLM은 사용자에게untruthful, toxic, not helpful한 아웃풋을 생성할 수 있다. 이 맥락에서 모델은 사용자의 의도와 align하지 않다고 말한다. 이런 아웃풋을 생성할 수 있는 이유는 최근 여러 LLM에 사용된 언어 모델의 목적 함수는 "사용자의 지시문을 helpfully and safely 따라라"라는 목적을 포함하지 않기 때문이다. 이게 특히 문제되는 이유는 LM은 수백개의 application에서 배포되고 사용되기 때문이다.
본 논문에서 제안한 방안
LM의 아웃풋이 넓은 범위의 task에서 사용자 의도와 align될 수 있도록 "human feedback"을 사용한 fine-tuning 방식을 제안한다. (= RLHF)
여기서 사용자의 의도란,
1. explicit intention: following instruction
2. implicit intention: stay truthful/not being biased, toxic, and harmful

Step 1: Demonstration data를 수집하고 supervised policy를 학습한다
SFT 학습 단계
데이터 라벨링을 위해 40명을 screening test를 통해 고용한다.
OpenAPI에 제출된 prompt나 labeler가 작성한 prompt에 대해 모델이 내주길 바라는 desired output을 사람이 직접 작성하고 이를 모아 demonstration dataset을 만든다.
이 dataset으로 사용해 지도 학습으로 사전학습된 GPT-3를 fine tuning 해준다.
Step 2: Comparison data를 수집하고 RM을 학습한다
RM 학습
하나의 prompt에 대하 우리 모델이 생성한 여러 샘플을 비교한다. (Comparison data)
그리고 labeler가 output들의 순위를 매긴다.
이 dataset으로 RM을 학습시켜 human labeler들이 선호할 모델 output을 예측할 수 있도록 한다.
Step 3: 강화학습을 사용해 RM 모델을 policy에 대해 최적화한다
RM의 아웃풋을 scalar reward로 사용한다. 그리고 PPO로 reward를 최대화할 수 있도록 supervised policy를 fine-tune시킨다. 즉, supervised policy의 시작점인 SFT 모델을 점점 사람 취향에 맞는 policy로 바꿔가는 과정이다.
이론적으로 step 2와 step 3은 계속 반복될 수 있다.
1. 현재 가장 좋은 policy로부터 새로운 샘플을 생성
2. labeler가 그 응답들을 순위를 매겨 새로운 데이터 추가
3. 그 데이터를 이용해 새로운 RM을 학습
4. 그 RM으로 다시 policy를 PPO로 최적화
이 과정을 계속하면 점점 더 사람 선호를 잘 반영하는 policy 를 만들 수 있다.
그런데 실제 논문에서는 대부분의 comparison data는 SFT 모델로부터 얻는다. PPO policy에서 나온 샘플은 구하는데 비용이 많이 들어 SFT 모델 샘플을 더 많이 사용했다.
Labeler demonstration dataset으로 사전학습된 GPT-3를 fine tuning 한다.
실험 구성: 16 epochs, cosine learning rate decay, residual dropout of 0.2
RM의 목적: 사람이 어떤 응답을 선호할지를 예측하는 것
➝ "A와 B 중 사람이 A를 잘 고른다"라는 사건을 RM이 잘 맞추도록 두 보상값의 차이를 log odds로 해석해서 cross entropy로 학습한다.
SFT 모델의 마지막 unembedding layer를 제거한 후, 모델이 prompt와 response를 받았을 때 scalar 형태의 output을 내도록 한다.
RM은 하나의 인풋에 대해 두 개의 다른 output을 비교하며 훈련되다.
모델이 하나의 프롬프트에 대해 여러 응답 생성 후, 사람이 선호도에 따라 순위를 매긴다.
❗여기서 문제
그래서 이 문제를 해결하고자 프롬프트 단위로 묶어서 학습한다. 즉, comparison pair마다 RM을 매번 forward pass하지 않고 프롬프트가 생성한 응답 를 한 번에 모델에 넣는다. 그럼 RM은 각 응답에 대한 보상값을 를 한 번의 forward pass로 계산한다. 이제 이 개의 보상값으로부터 모든 pairwise loss를 동시에 만들고 이걸 다 더해 평균 낸다.
이제 PPO를 사용해 SFT model을 우리의 환경(bandit environment)에 맞게 fine tuning한다.
Bandit Environment:
매번 프롬프트 하나가 주어지고 → 정책이 응답을 생성 → 에피소드가 바로 종료되는 단일 스텝 환경
1. PPO 학습
2. PPO-ptx
_
🎯 최종 목적 함수

πRL : 학습된 RL policy
πSFT : Supervised Fine-Tuned policy
Dpretrain : pretraining 데이터 분포
β : KL penalty 계수
γ : pretraining loss 계수
본 논문에서의 Alignment란?
User intention과 일치하는 동작을 하도록 하는 것. User Intetion = Helpful, Honest, Harmless
➤ Human Labeler들이 평가 (instruction 뿐만 아니라 내재되어 있는 정보도 유추해야하므로
(다만, labeler들이 실제 prompt를 준 user가 아니므로 labeler들이 유추한 내용도 살짝 틀렸을 수도 있다.)
이걸 측정하려면 model의 output과 모델의 belief를 비교해야하는데 모델은 black box 모델이라 모델의 belief를 알 수 없다.
그래서 Honesty 대신 Truthfulness를 측정
➤ Closed domain task에서는 모델이 만들어내는 정보의 경향성을 평가
➤ TruthfulQA dataset으로 평가
output이 어느 곳에 쓰이는지에 따라 harmful한지 아닌지가 정해진다. 그래서 원래 사람이 ㅣ평가했는데 너무 많은 상황을 고려해야하므로 이 방식은 더이상 사용하지 않는다.
본 논문에서는
➤ 모델이 output이 사용자에게 도움되지 않거나, 취약층을 공격하거나 성적이고 폭력적인 문맥을 포함하는지 평가
➤ toxicity와 bias를 평가하기 위해 RealToxicityPrompts benchmark 사용
InstructGPT가 사람 기준에서 GPT-3보다 실제로 더 좋은 응답을 내는지를 다양한 프롬프트 세트와 지표로 평가한 부분이다.
두 모델의 기본 구조는 GPT-3로 같지만 InstructGPT가 human feedback으로 fine-tune 됐다는 점만 다르다.
같은 파라미터 수를 가진 InstructGPT, GPT-3, few-shot prompted GPT-3 중 InstructGPT의 성능이 가장 좋았다.
성능 뿐만 아니라, InstructGPT 모델은 labeler에 따르면 더 적절한 output을 생성하고 instruction에 명시된 제한사항을 더 잘 지킨다.
TruthfulQA benchmark에 대해 GPT-3보다 InstructGPT의 결과가 2배 정도 더 truthful하고 informative했다.
Input에서 보이지 않은 정보에 대해서는 output은 생성하면 안되는 API prompt distribution으로부터 나온 "closed-domain" task에서는 InstructGPT가 GPT-3보다 절반정도 덜 input에 없는 정보를 지어냈다.
Toxicity 측정 benchmark dataset: RealToxicity Prompts에 대해서는 InstructGPT의 성능이 더 좋다.
그렇지만 Winogender, Crow&Pairs과 같은 bias benchmark dataset에 대해서는 GPT-3보다 발전이 없다.
RLHF 사전학습에서 SQuAD와 같은 특정 NLP dataset에서는 성능 저하가 있었음. 이는 alignment procedure를 했을 때 발생할 수 있는 비용이다. 여기서 나온게 PPO-ptx인데 뒤에서 더 설명하겠다.
일반화 성능을 비교하기 위해 우리는 held-out labeler에 대한 예비 실험을 진행했는데 그 결과 training labelers와 마찬가지로 InstructGPT의 output을 더 선호했다.
(그러나 이 분야에서는 더 많은 연구가 필요하다. 더 큰 group의 사람들의 input에 대한 모델의 성능과 일반적으로 선호되는 행동양식을 원치 않는 사람들의 input은 어떻게 처리할 것인지 등등)
FLAN과 같은 public NLP tasks는 여러 NLP task로 구성되어 있고, 각 task마다 자연어 instruction이 있다. API prompt distribution에서는 우리의 FLAN 모델이 SFT baseline 보다도 안좋았고 labeler들은 InstructGPT를 더 선호했다.