2022년 5월에 발표된 논문.
논문 링크: arXiv: 2203.02155, NIPS: Paper-Conference.pdf, Github: openai/following-instructions-human-feedback
InstructGPT는
GPT-3가 발표되고 2년이 지난 시점에서 openai에서 강화학습이라는 키를 들고 GPT의 발전 방향을 수립한 모델로, 기존의 GPT-3를 갖다가 대화형으로 tuning한 framework이다.
GPT-3의 문제점은 사실을 지어내거나, 편향적이거나, 유해한 텍스트를 생성하거나, 사용자의 지시를 따르지 않는 경우가 발생한다는 것이다.
일반적으로 언어 모델의 크기가 클수록 모델 성능이 좋다.
하지만 언어 모델이 더 크다고 해서 반드시 사용자의 의도를 더 잘 따르는 것은 아니었다. 이와 같은 문제는 사용자와 모델 사이의 '일치성' 문제라고 볼 수 있다.
alignment, 즉 인간의 의도에 맞게 동작하도록 언어모델을 조정하는 것을 목표로 함
기업이 고객 중심으로 전략을 수립하고 솔루션을 개발하는 것처럼, LM 학습도 사용자 중심으로 바라보자라는 것이 이 논문의 목적임을 이해할 수 있겠다.
[목표: GPT-3 를 사용자의 입맛에 맞게 fine-tuning해보자]
InstructGPT가 훈련된 방식
Step1: Supervised fine tuning(SFT)
라벨러가 작성한 프롬프트 + OpenAI API를 통해 제출된 프롬프트를 사용하여 만든 데이터셋을 pretrained된 GPT-3에 넣어서 fine-tuning하는 것
Step2: Reward Model(RM)
어떤 prompt에 대한 응답을 언어 모델이 생성했을 때 그 응답에 대한 reward 점수를 예측하는 것, 사용자가 생성된 응답에 점수를 매기고 이를 바탕으로 RM이 보상을 최적화하여, 언어 모델이 앞으로 더 나은 답변을 생성하도록 학습하게 된다.
Step3: Proximal policy optimization(PPO)
강화학습 알고리즘 PPO를 사용하는 단계
customer로부터 받는 새로운 prompt에 대해서 특정 policy에 따라 답변을 생성하고, 이를 다시 RM에 넣어서 reward를 계산한 다음ㅇ, reward 점수가 최적화될 수 있도록 policy를 업데이트하는 과정
이 연구에서는 두 가지의 데이터셋을 수집하였다.
(1) 연구에 참여한 Labeler들이 작성한 프롬프트 데이터셋
(2) 실제 사용자가 OpenAI 사이트에서 기존의 모델을 사용하며 생성한 프롬프트 데이터셋
프롬프트 데이터셋이란, '다양한 토픽과 주제에 대한 [질문/답변], [명령 / 답변], [제안 / 답변] 등의 형태로 구성된 텍스트 데이터셋을 의미한다.
프롬프트의 예시 :
점심으로 먹을 음식 5개만 리스트 뽑아줘
인생에 대한 짧은 시를 써줘
인공지능 토끼에 대한 랩을 써줘
이러한 프롬프트와, 프롬프트에 대한 답변이 쌍으로 있으면 프롬프트 데이터가 된다.
(1) 고용된 Labeler들이 작성한 프롬프트 데이터셋
모든 라벨러들에게 질문이 주어지면 가장 최선의 답변을 작성하여 프롬프트 데이터를 만들도록 지시했으며, 불명확한 질문에 대해서는 답변하지 않고 넘길 것을 요청했다고 한다. 또 라벨러들이 의도치 않게 사실과 다른 답변이나, 유해한 답변을 생성할 것을 대비해 별도의 지시 사항이 적힌 가이드도 제공했다고 한다.
(2) 실제 사용자(customer)들이 OpenAI 사이트에서 작성한 데이터셋
Table1: 프롬프트 카테고리의 분포, Table2: 예시
<학습에서 사용된 전체적인 데이터셋의 크기>
SFT, RM, PPO의 각 단계에서 사용된 데이터의 크기
SFT 학습으로 약 12k개의 데이터셋이 사용되었으며, RM 학습에는 약 32k개, PPO 학습에는 약 31k개의 데이터셋이 사용되었다. 여기서 RM을 학습할 때는 한 모델이 생성한 여러 문장 간의 비교 순위를 매기는 작업이 필요하므로 RM에서 데이터의 실제 크기는 더 클 수 있다고 언급한다.
더하여 데이터셋에 대한 다른 특징으로는 SFT 학습에서는 라벨러가 생성한 데이터가 유저가 생성한 것보다 더 많고, RM과 PPO에서는 유저가 생성한 데이터셋이 라벨러가 생성한 것보다 더 많다.
SFT에서 라벨러가 생성한 데이터가 더 많은 이유로 논문에서는 프롬프트의 형식을 잘 학습하기 위해서이다. 유저가 생성한 데이터보다 라벨러가 생성한 데이터가 조금 더 정제된 프롬프트 데이터일 확률이 높고, 또 라벨러가 몇 가지 예시와 함께 프롬프트를 제시한 문장(few-show examples)에 대한 데이터도 만들었기 때문에 이것을 이용한 양질의 학습을 할 수 있게 하기 위해 의도한 것이라 한다.
논문에는 학습에 사용된 프롬프트 데이터셋의 96% 이상이 영어로 쓰여졌으나 모델의 성능을 테스트 할 때는 다른 언어도 사용했으며 프로그래밍 언어로 된 문제도 테스트했다고 언급한다.
학습에 사용된 모델은 세 가지로 분류할 수 있다. 앞서 언급한 Step 1) Supervised fine tuning, Step 2) Reward model, Step 3) Proximal policy optimization이다.
Supervised fine-tuning, 말 그대로 지도학습을 이용한 파인 튜닝이다.
데이터셋: 앞서 언급한 두 가지의 프롬프트 데이터와 그에 대한 응답의 경우에는 40명의 라벨러들이 직접 response를 작성한 것으로 만들어진 데이터셋-13k(13000개)을 사용하였다.
이렇게 만들어진 데이터셋을 가지고 pre-training된 GPT-3모델을 supervised learning 방식(사전학습과 동일한 랭귀지 모델링 오브젝티브를 수행)으로 fine-tuning하였다.
(본 논문에서 SFT가 어떤 방식을 통해 학습되었는지 정확히 공개하지는 않았다.)
인간의 선호도를 반영한 비교군 데이터를 구축하고 reward model을 학습하는 단계이다.
데이터셋: 비교군(comparison) 데이터, 각 prompt에 대응하는 4~9개의 response 생성 결과물을 대상으로 labeler가 선호도 순위를 매김 (총 33k prompts - API/labeler 작성)
InstructGPT의 주요한 이점들
방법론
평가 지표
이 논문이 기여한 바
이 모델의 한계는 다음과 같습니다.
prompt: 명상을 한 후에, 양말을 먹는 게 왜 중요하냐라고
질문을 하게 되면
GPT-3나 Instruct-GPT나 이상한 전제를 사실로 받아들이고 이야기를 하는 경향이 있음.
그리고 너무 hedge한 답변을 하는 경우, - 너무 위험한 걸 피하는, 애둘러서 말하는 경향은 labeler들이 이 모델을 갖다가 리워드를 할 때 좀 겸손하게 돌려서 말하는, 답변에 대해서 reward를 많이 해주는 경향이 있었기 때문에
그래서 이런 결과가 나온 것 같다고 한다.
PPO, PTX(빨간색이 unstructGPT)인데 정말로 더 bias된 답변을 주었음.
InstructGPT의 성능
실제 평가에서 1.3B 파라미터의 InstructGPT 모델은 175B 파라미터의 GPT-3보다 선호되었다.
⇒ RLHF를 이용하면 적은 파라미터를 이용해 기존의 모델보다 더 좋은 성능을 낼 수 있다.