[논문 리뷰] Training language models to follow instructions with human feedback

seon·2025년 4월 27일
1

AI

목록 보기
16/21
post-thumbnail

2022년 5월에 발표된 논문.

논문 링크: arXiv: 2203.02155, NIPS: Paper-Conference.pdf, Github: openai/following-instructions-human-feedback

1. Introduction

InstructGPT는

GPT-3가 발표되고 2년이 지난 시점에서 openai에서 강화학습이라는 키를 들고 GPT의 발전 방향을 수립한 모델로, 기존의 GPT-3를 갖다가 대화형으로 tuning한 framework이다.

GPT-3의 문제점은 사실을 지어내거나, 편향적이거나, 유해한 텍스트를 생성하거나, 사용자의 지시를 따르지 않는 경우가 발생한다는 것이다.

일반적으로 언어 모델의 크기가 클수록 모델 성능이 좋다.

하지만 언어 모델이 더 크다고 해서 반드시 사용자의 의도를 더 잘 따르는 것은 아니었다. 이와 같은 문제는 사용자와 모델 사이의 '일치성' 문제라고 볼 수 있다.

이 논문의 목적

alignment, 즉 인간의 의도에 맞게 동작하도록 언어모델을 조정하는 것을 목표로 함

기업이 고객 중심으로 전략을 수립하고 솔루션을 개발하는 것처럼, LM 학습도 사용자 중심으로 바라보자라는 것이 이 논문의 목적임을 이해할 수 있겠다.

2. Approach

[목표: 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를 업데이트하는 과정

2.1 Dataset


이 연구에서는 두 가지의 데이터셋을 수집하였다.

(1) 연구에 참여한 Labeler들이 작성한 프롬프트 데이터셋

(2) 실제 사용자가 OpenAI 사이트에서 기존의 모델을 사용하며 생성한 프롬프트 데이터셋

프롬프트 데이터셋이란, '다양한 토픽과 주제에 대한 [질문/답변], [명령 / 답변], [제안 / 답변] 등의 형태로 구성된 텍스트 데이터셋을 의미한다.

프롬프트의 예시 :

점심으로 먹을 음식 5개만 리스트 뽑아줘

인생에 대한 짧은 시를 써줘

인공지능 토끼에 대한 랩을 써줘

이러한 프롬프트와, 프롬프트에 대한 답변이 쌍으로 있으면 프롬프트 데이터가 된다.

(1) 고용된 Labeler들이 작성한 프롬프트 데이터셋

  • Plain : 여러 주제에 대해 형식에 구애받지 않고 자유롭게 작성
  • Few-shot : 지시 형식으로 작성한 뒤, 그에 관한 몇 가지 예시를 같이 작성
  • User-based : 기존의 유저들이 OpenAI 사이트에서 작성한 프롬프트를 참고해 작성

모든 라벨러들에게 질문이 주어지면 가장 최선의 답변을 작성하여 프롬프트 데이터를 만들도록 지시했으며, 불명확한 질문에 대해서는 답변하지 않고 넘길 것을 요청했다고 한다. 또 라벨러들이 의도치 않게 사실과 다른 답변이나, 유해한 답변을 생성할 것을 대비해 별도의 지시 사항이 적힌 가이드도 제공했다고 한다.

(2) 실제 사용자(customer)들이 OpenAI 사이트에서 작성한 데이터셋

Table1: 프롬프트 카테고리의 분포, Table2: 예시

<학습에서 사용된 전체적인 데이터셋의 크기>

SFT, RM, PPO의 각 단계에서 사용된 데이터의 크기

  • 관련 내용

SFT 학습으로 약 12k개의 데이터셋이 사용되었으며, RM 학습에는 약 32k개, PPO 학습에는 약 31k개의 데이터셋이 사용되었다. 여기서 RM을 학습할 때는 한 모델이 생성한 여러 문장 간의 비교 순위를 매기는 작업이 필요하므로 RM에서 데이터의 실제 크기는 더 클 수 있다고 언급한다.

더하여 데이터셋에 대한 다른 특징으로는 SFT 학습에서는 라벨러가 생성한 데이터가 유저가 생성한 것보다 더 많고, RM과 PPO에서는 유저가 생성한 데이터셋이 라벨러가 생성한 것보다 더 많다.

SFT에서 라벨러가 생성한 데이터가 더 많은 이유로 논문에서는 프롬프트의 형식을 잘 학습하기 위해서이다. 유저가 생성한 데이터보다 라벨러가 생성한 데이터가 조금 더 정제된 프롬프트 데이터일 확률이 높고, 또 라벨러가 몇 가지 예시와 함께 프롬프트를 제시한 문장(few-show examples)에 대한 데이터도 만들었기 때문에 이것을 이용한 양질의 학습을 할 수 있게 하기 위해 의도한 것이라 한다.

논문에는 학습에 사용된 프롬프트 데이터셋의 96% 이상이 영어로 쓰여졌으나 모델의 성능을 테스트 할 때는 다른 언어도 사용했으며 프로그래밍 언어로 된 문제도 테스트했다고 언급한다.

2.2 Models


학습에 사용된 모델은 세 가지로 분류할 수 있다. 앞서 언급한 Step 1) Supervised fine tuning, Step 2) Reward model, Step 3) Proximal policy optimization이다.

Step1 - SFT

Supervised fine-tuning, 말 그대로 지도학습을 이용한 파인 튜닝이다.

데이터셋: 앞서 언급한 두 가지의 프롬프트 데이터와 그에 대한 응답의 경우에는 40명의 라벨러들이 직접 response를 작성한 것으로 만들어진 데이터셋-13k(13000개)을 사용하였다.

이렇게 만들어진 데이터셋을 가지고 pre-training된 GPT-3모델을 supervised learning 방식(사전학습과 동일한 랭귀지 모델링 오브젝티브를 수행)으로 fine-tuning하였다.

  • 1.3B, 6B, 175B 총 3가지 버전의 모델을 학습
  • 16 epochs를 학습시켰으며, cosine learning rate decay를 사용했고, 0.2의 residual dropout을 사용
  • valid 데이터셋에 대한 RM score로 최종 SFT 모델 선정

(본 논문에서 SFT가 어떤 방식을 통해 학습되었는지 정확히 공개하지는 않았다.)

Step2 - RM

인간의 선호도를 반영한 비교군 데이터를 구축하고 reward model을 학습하는 단계이다.

데이터셋: 비교군(comparison) 데이터, 각 prompt에 대응하는 4~9개의 response 생성 결과물을 대상으로 labeler가 선호도 순위를 매김 (총 33k prompts - API/labeler 작성)

  • labeler가 선호하는 답변을 예측하는 Reward Model을 학습
  • 입력: prompt, response / 출력:reward값
  • loss: 2개씩 response 조합을 생성하여 1대1 비교 → prompt 당 (k,2) 개의 비교군이 생성됨
  • 앞 단게의 SFT(6B) 모델 파라미터로 초기화
  • 1 epoch만 학습(과적합 방지)

Step3 - PPO

  • 앞서 학습된 RM을 reward functino으로 활용하여, 강화학습의 PPO 알고리즘으로 보상(reward)을 최대화하도록 GPT-3를 fine-tuning (31k prompts) → 완성된 모델이 바로 InstructGPT
  • 초기 policy: 데이터 + 사전학습 시 활용된 데이터의 10%로 GPT-3를 2 epoch만큼 SFG(1.3B, 6B, 175B)
  • 학습된 RM을 value function으로 하여 PPO를 통한 policy 최적화
    • 아래 목적함수를 최대화하는 방향으로 업데이트
    • KL penalty term 추가: policy의 급격한 변화를 방지하기 위해 파라미터 변동 폭을 제한
    • 특정 task에서 성능 저하 관측 → pretraining gradients를 PPO gradients와 mix하는 PPO-ptx 제안
    • 256k 에피소드

3. Evaluation

InstructGPT의 주요한 이점들

3.1 Method

방법론

  • HHH: Helpful, Honest, Harmless
    • Helpful은 지시를 제대로 따르는지, 그리고 지시에 암묵적인 그런 의도들을 이해하고 있는지,
      Honest는 이상한 말을 일부러 만들어내지 않는지,
      Harmless은 부적절한 아웃풋을 생산해내지는 않는지를 의미한다.
  • training 과정에 참여하지 않았던 labeler들이 평가를 한 결과를 활용함
    • 전체적 퀄리티 - 1-7점
    • 나머지 평가 지표 - binary값(기인지 아닌지)

평가 지표

  • 평가를 할 때 사용한 프롬프트: openaI API(실제 사용자들), public NLP datasets
  • Bias/Toxicity를 평가할 때 average entropy라는 것을 사용했다는 것이 주목할만한 부분임.
    • entropy가 높으면 높을수록, 즉 불확실하면 불확실할 수록 덜 bias됐다고 본다.
      즉 entropy가 낮은 값이 더 좋은 것.
    • 3가지 instruction 타입으로 평가함: 1)그대로 instruction을 주는 것 2)respectful하게 답변을 달라는 식으로 instruction을 주는 것 3)bias되게 공격적으로 답변을 달라고 하는 방식

3.2 Contributions

이 논문이 기여한 바

  1. 여기서 평가를 했던 held out labler들은
    instruct gpt 모델을 기존에 pretrain된 gpt-3 모델보다 훨씬 더 선호를 하였다.
    - 85(∓3)%가 선호함
    - gpt 모델을 few-shot, supervised fine-tuning한 경우에도 선호하였다.(71(∓4%))
  2. held out labler 들에게도 굉장히 잘 일반화가 되었다.
    • reward 모델이 예측하는 과정에서 train과정에서 labler/train에 참여하지 않았던 labler 예측값이 차이가 없었다.
  3. Public NLP 데이터셋 자체가 실세계에서 사용하는 prompt들을 잘 반영x → 그래서 Flan, T0 모델을 가지고 GPT-3 모델을 pretrain한 다음에 선호도를 계산했을 때도 InstructGPT가 더 선호를 받는 경향이 있었다.
  4. GPT-3보다 InstructGPT가 더 진실된 답변을 하는 경향 → QA 데이터셋을 돌려본 결과
    답변을 못할 때는 진실되게 모른다고 답변
  5. Toxicity에서도 좀 더 개선된 경향을 보임

5. Limitations

이 모델의 한계는 다음과 같습니다.

  1. 실수
    • False premise, 즉 전제 자체가 잘못된 걸 그대로 받아들이는 경향
    • overly hedge, 라는 거는 너무 안전하게 답변을 굉장히 모호하게 피해서 하는 경향
    • 그리고 여러가지 constraint가 있을 때는 성능이 떨어지는 경향을 보였다.
    예시)
    prompt: 명상을 한 후에, 양말을 먹는 게 왜 중요하냐라고 
    
    질문을 하게 되면
    
    GPT-3나 Instruct-GPT나 이상한 전제를 사실로 받아들이고 이야기를 하는 경향이 있음.
  • 이렇게 된 이유가, 이런 잘못된 전제 자체가, prompt로 training 과정에서 많이 나오지는 않았기 때문에, 거기에 대해서는 좀 tuning이 잘 되지 않은 것으로 예상된다고 함.

그리고 너무 hedge한 답변을 하는 경우, - 너무 위험한 걸 피하는, 애둘러서 말하는 경향은 labeler들이 이 모델을 갖다가 리워드를 할 때 좀 겸손하게 돌려서 말하는, 답변에 대해서 reward를 많이 해주는 경향이 있었기 때문에
그래서 이런 결과가 나온 것 같다고 한다.

  1. 영어가 아닌 언어에 있어서는 예를 들어 한국어로 질문을 했는데 이거를 영어로 답변을 하는 경우도 있다고 한다. → 지금 chatgpt4o를 쓸 때도 그런 경우 많은데..
    • 모델에게 처음에 instruction을 아주 bias된 답변을 달라고 명백하게 이야기를 하게 되면은 모델이 정말 더 bias된 답변을 준다고 함.

PPO, PTX(빨간색이 unstructGPT)인데 정말로 더 bias된 답변을 주었음.

Results

InstructGPT의 성능
실제 평가에서 1.3B 파라미터의 InstructGPT 모델은 175B 파라미터의 GPT-3보다 선호되었다.

⇒ RLHF를 이용하면 적은 파라미터를 이용해 기존의 모델보다 더 좋은 성능을 낼 수 있다.

  • RLHF를 이용하면 public NLP datasets에서의 performance regression을 해결할 수 있다.
  • InstructGPT는 fine-tuning할 때 사용하지 않은 instruction(한국어로 된 질문, 코딩 언어에 관한 질문 등)에 대해서도 다른 모델보다 더 좋은 성능을 낸다.
  • InstrugtGPT는 여전히 개선 사항이 존재한다. (hallucination 문제, bias 증가 문제 등)
profile
🌻

0개의 댓글