NLP/LLM

InstructGPT (2022) 논문 리뷰

아르카눔 2025. 4. 15. 14:07

InstructGPT의 논문 이름은 Training language models to follow instructions with human feedback다. (링크)

 

저자는 Long Ouyang, Jeff Wu, Xu Jiang, Diogo Almeida, Carroll L. Wainwright, Pamela Mishkin, Chong Zhang, Sandhini Agarwal, Katarina Slama, Alex Ray, John Schulman, Jacob Hilton, Fraser Kelton, Luke Miller, Maddie Simens, Amanda Askell, Peter Welinder, Paul Christiano, Jan Leike, Ryan Lowe다. 

 

 

RLHF (Reinforcement Learning from Human Feedback)을 사용한 논문이다.

 

RLHF는 필수적으로 짚고 넘어가야할 사항이라고 생각해서 논문을 리뷰하고 간다. 

 

 

Abstract

LLM은 untruthful, toxic and not helpful 믿을 수 없거나, 악성 언어를 포함하거나 도움이 되지 않는 답변을 생성할 수 있다.

이런 문제는 사용자를 위해서 LLM이 충분히 not aligned 조정되지 않은 모델이라고 할 수 있다.

이를 해결하기 위해서 aligning lanuage models을 human feedback 사람의 피드백을 이용해서 파인 튜닉을 수행하고자 한다.

라벨러가 작성한 프롬프트 집합을 시작으로 모델의 바람직한 행동에 대한 라벨러들의 의견을 모아서 supservised learning 지도 학습을 수행했다. 모델의 출력에 대한 랭킹 데이터를 수집한 다음 reinforcement learning from human feedback (RLHF)를 지도 학습을 적용했다. 결과로 나온 모델을 InstructGPT라고 부르고 175B GPT-3보다 훨씬 100x 이하의 적은 파라미터를 가지면서도 좋은 성능을 달성하였다.

 

1. Introduction 

 

Askell et al. (2021) (논문 링크)의 언어를 사용하여, 저자들은 LM 언어 모델이 helpful 유용하고 (사용자가 작업을 해결하는 데 도움을 주어야 함), honest정직하며 (정보를 날조하거나 사용자를 오도해서는 안 됨), harmless 무해하기를 (사람이나 환경에 물리적, 심리적 또는 사회적 해를 끼쳐서는 안 됨) 바란다. 

 

저자들은 fine-tuning에 초점을 맞춰서 reinforcement learning from human feedback (RLHF)를 적용한다. 

총 세 단계의 과정을 거친다. 

 

Step 1:

LM API에 제출된 (대부분 영어) 프롬프트와 몇몇 라벨러가 작성한 프롬프트에 대한 원하는 출력 행동의 인간 작성 데모 데이터 셋을 수집한다. 이 데이터를 사용하여 지도 학습 기준 모델을 학습시킨다.

 

Step 2:

다음 스텝으로, 더 큰 API 프롬프트 세트에 대한 모델 출력 간의 인간의 라벨링 비교 데이터 세트를 수집한다. 그 다음에는 이 데이터 세트에서 보상 모델 reward model (RM)을 학습시켜 라벨러가 어떤 모델 출력을 선호할지 예측한다.

 

Step 3:

마지막으로 RM의 보상 함수는 PPO (Proximal Policy Optimization) 알고리즘 (Schulman et al., 2017) (논문 링크)을 사용하여 지도 학습 기준 모델을 미세 조정하는데 있어서 목적 함수로서 RM의 보상을 최대화한다. 

 

구체적인 진행 과정의 그림은 아래의 Figure 2에 나와있다. 

 

 

 

 

 

InstructGPT의 결과 요약은 아래와 같다.

 

  • 라벨러들은 GPT-3보다 InstructGPT의 출력 결과를 더 선호한다.
  • Truthfulness 진실성에서 GPT-3 보다 개선된 결과를 보인다.
  • 독성 혹은 악성 Toxicity에 대해서는 개선된 결과를 보이지만 bias 편견에 대해서는 아니다. 
  • RLHF 파인 튜닝과정을 조정함으로써 몇몇 NLP에 대한 성능 저하를 최소화 가능하다.
  • Held-out 보류된  라벨러들의 선호도에도 일반화 가능하다.
  • 공개 NLP 데이터에 대해서까지 적용되지는 못한다. 
  • RLHF의 파인튜닝 분포와 다른 instructions 지시들에 대해서도 유망한 성능을 보인다.
  • InstrucGPT는 아직 간단한 실수를 저지른다. 

3. Methods and experimental details

3.1. High-level methodology

Step 1: Collect demonstration data, and train a supervised policy. 
Step 2: Collect comparison data, and train a reward model. 
Step 3: Optimize a policy against the reward model using PPO.

 

사실상 앞의 2과 Figure 2에서 언급한 내용과 동일하다.

 

 

3.2. Dataset

OpenAI API에 제출된 텍스트 프롬프트, 특히 Playground 인터페이스에서 이전 버전의 InstructGPT 모델(데모 데이터의 하위 집합에 대한 지도 학습을 통해 훈련됨)을 사용한 프롬프트로 구성된다. Playground를 사용하는 고객은 InstructGPT 모델이 사용될 때마다 반복적인 알림을 통해 데이터가 추가 모델 훈련에 사용될 수 있음을 통지받았다. 이 논문에서는 프로덕션 환경에서 API를 사용하는 고객의 데이터를 사용하 않았다.

Long common prefix 긴 공통 접두사를 공유하는 프롬프트를 확인하여 휴리스틱하게 프롬프트의 중복 제거하고, 사용자 ID당 프롬프트 수를 200개로 제한한다. 또한 검증 및 테스트 데이터에 훈련 데이터셋에 있는 사용자의 데이터가 포함되지 않도록 사용자 ID를 기반으로 훈련, 검증 및 테스트 분할을 생성한다. 모델이 잠재적으로 민감한 고객 세부 정보를 학습하는 것을 방지하기 위해 훈련 분할의 모든 프롬프트에서 Personality Identificable Information 개인 식별 정보(PII)를 필터링합니다.

 

최초의 단계에서 InstructGPT 모델을 훈련하기 위해 라벨러에게 직접 프롬프트를 작성하도록 요청했다. 차후에 bootstarp 부트스트랩하기 위해 초기에는 instructions 지시과 유사한 프롬프트 소스가 필요했으며, 이러한 종류의 프롬프트는 API의 일반적인 GPT-3 모델에 자주 제출되지 않았다.

 

저자들은 라벨러들에게 다음의 세 가지 종류의 프롬프트를 작성하도록 요청했습니다.

  • Plain 일반: 충분한 다양성을 보장하면서 임의의 작업을 생각해 내도록 단순히 요청했다.
  • Few-shot 퓨샷: 지침과 해당 지침에 대한 여러 질의/응답 쌍을 생각해 내도록 요청했다.
  • User-based 사용자 기반: OpenAI API의 대기자 목록 신청서에 명시된 여러 사용 사례가 있었고 라벨러에게 이러한 사례들에 해당하는 프롬프트를 생각해 내도록 요청했다.

이러한 프롬프트로부터 파인 튜닝에 사용되는 세 가지 다른 데이터셋을 생성한다.

(1) SFT 모델을 훈련하는 데 사용되는 라벨러의 데모가 포함된 SFT 데이터 셋,

(2) RM 모델을 훈련하는 데 사용되는 모델 출력에 대한 라벨러의 순위가 포함된 RM 데이터 셋,

(3) 인간의 라벨 없이 RLHF 파인튜닝을 위한 입력으로 사용되는 PPO 데이터 셋.

 

SFT 데이터셋에는 약 13,000개의 훈련 프롬프트(API 및 레이블러 작성)가 포함되어 있고, RM 데이터셋에는 33,000개의 훈련 프롬프트(API 및 레이블러 작성)가 포함되어 있으며, PPO 데이터셋에는 31,000개의 훈련 프롬프트(API에서만)가 포함되어 있다.

 

데이터셋 크기에 대한 자세한 내용은 Table 6에 나와있다.

 

 

 

 

 

데이터셋 구성에 대한 감을 잡기 위해 Table 1에서는 계약자가 레이블링한 API 프롬프트(특히 RM 데이터셋)의 사용 사례 범주 분포를 보여준다. 대부분의 사용 사례는 분류 또는 QA보다는 생성적입니다.

 

 

Table 2에는 연구자들이 InstructGPT 모델에 제출된 프롬프트 종류를 모방하여 작성한 몇 가지 예시 프롬프트가 나와 있다.

 

Table 3에서는 라벨러들의 스코어링에 대한 메타데이터가 있다. 

 

 

 

 

 

 

 

 

InstructGPT 모델에 제출된 더 많은 프롬프트는 Appendix A.2.1에, GPT-3 모델에 제출된 프롬프트는 Appendix A.2.2에 나와 있으며 데이터셋에 대한 자세한 내용은 Appendix A에 수록되어 있다.

 

 

 

3.5. Models

 

Supservised fine-tuning (SFT)

GPT-3에 파인 튜닝을 수행했으며 16 epochs, cosine learning rate decay, residual dropout은 0.2로 설정했다.

최종 SFT 모델의 선택은 validation set에 대한 RM score를 토대로 결정했다. 

1 epoch 이후 검증 데이터에 대해서 오버피팅이 발생하는 것을 확인했지만, 더 많은 이포크를 학습시키는게 RM score와 human preferense ratings 양쪽 측면에서 모두 좋은 결과를 보임을 발견했다.

 

Reward modeling (RM)

프롬프트와 답변을 입력으로, scalar reward를 출력으로 설정하여 GPT-3를 파인튜닝했다.

6B RMs를 사용했으며 이는 175B RM에 비해 더 안정적이고 적용가능함을 발견했다.

 

라벨러는 K = 4과 9 사이의 답변들에 대해서 랭킹을 매기도록 요구했다.

따라서 single batch element로 하나의 프롬프트에서 유래한 KC2의 쌍들에 대해서 비교를 하게 된다.  

 

RM의 loss function은 아래와 같다.

 

loss$(\theta) = - \frac{1}{KC2} E_{(x, y_w, w_l) \sim D} [ \text{log} ( \sigma ( r_\theta (x, y_w) - r_\theta ( x, y_l ) ) ) ]$.  

 

이때 $x$는 프롬프트, $y$는 completion 생성된 답변이며 파라미터 $\theta$를 가진다.  

$y_w$는 preferred completion 선호되는 답변이며 $y_w, y_l$ 쌍에서 결정된다.  

그리고 $D$는 comparison dataset 비교 데이터셋이다.  

 

 

Reinforcement Learning (RL)

 

PPO (Proximal Policy Optimization) 알고리즘으로 최적화 한다. 환경은 bandit로 설정한다.

 

PPO의 그라디언트에 pretraining gradients를 섞음으로써 공개 NLP 데이터에 대한 성능 저하를 개선한다.

그리고 이를 PPO-ptx로 명명한다.

 

다음의 결합된 목적 함수를 최대화하여 RL을 학습한다.

 

objective($\phi$)

= $ E_{(x,y) \sim D_{\pi_{\phi}^{\text{RL}}}} \left[ r_\theta (x, y) - \beta \log \left( \pi_{\phi}^{\text{RL}} ( y | x ) / \pi^{\text{SFT}} ( y | x ) \right) \right] $

 

+ $ \gamma E_{x \sim D_{\text{pretrain}}} [ \text{log} (  \pi_{\phi} \text{RL} (x) ) ] $

 

이때 $  \pi_{\phi} \text{RL} $ 는 학습된 RL의 policy 정책이다. $  \pi^{ \text{SFT}} $는 지도 학습된 모델이다. 

$D_{\text{pretrain}}$은 pretraining 분포다. 

$\beta$는 KL (Kullback-Leibler) reward coefficient이며 KL에 대한 penalty의 정도를 결정한다. 

$\gamma$는 pretraining loss coefficient이며 pretraining gradient에 대한 패널티의 정도를 결정한다. 

바닐라 PPO의 경우 $\gamma$는 0이 된다.  

 

특별한 경우가 아니면 InstructGPT는 모두 PPO-ptx를 사용한 모델들이다. 

 

목적 함수를 뜯어 보면 다음과 같다.

 

$ E_{ (x,y) \sim D_{ \pi_{\phi}^{\text{RL}} } } \left [ r_\theta (x, y) \right] $는 reward를 최대화하고자 한다. 제일 직과적인 항이다. 

 

$ E_{(x,y) \sim D_{\pi_{\phi}^{\text{RL}}}} \left[  - \beta \log \left( \pi_{\phi}^{\text{RL}} ( y | x ) / \pi^{\text{SFT}} ( y | x ) \right) \right] $에서는 - KLD의 최대화이므로 KLD의 최소화다. KLD는 작을 수록 두 분포의 차이가 작다는 뜻이다. 즉 Step 1에서 만든 작은 데모 데이터 셋의 정책을 기준에 대해 많은 양의 데이터를 지닌 RL의 정책을 근사시키겠다는 뜻이다.

 

레퍼런스에 있는 블로그들의 내용으로 이해한 바에 따르면 PPO는 이전의 정책의 정보를 최대한 활용하는게 핵심 아이디어인데 여기선 SFT가 old policy고 RL이 new policy에 해당한다고 볼 수 있다. 

 

 

마지막으로 $ \gamma E_{x \sim D_{\text{pretrain}}} [ \text{log} (  \pi_{\phi}^{\text{RL}} (x) ) ] $는 천천히 뜯어 보자면 RL에서의 정책을 shannon information으로 두고 이를 pretrain의 데이터에서의 프롬프트 $x$의 분포로 곱한 일종의 크로스 엔트로피가 된다. 다만 본래의 크로스 엔트로피는 앞에 - 마이너스 부호를 붙여서 최소화를 하지만 여기에선 - 에 다시 -를 곱한 형태가 된다. 따라서 최대화를 해야 한다. 

 

그런데 문제를 정확히 $D_{\text{pretrain}}$의 분포가 어떤 뜻인지를 모르겠다. Tokens의 분포에 대한 내용인데 답변의 시작부터 나오는 logits를 뜻하는걸까 싶기도 하다. 

 

 

이는 프롬프트에 대한 RL의 정책의 분포가 원래의 pre-trian 분포와 유사하게 만드는 역할을 한다고 해석할 수 있다.

 

 

 

4. Results

 

 

 

Figure 4, 6과 7을 보면 GPT-3, SFT, PPO-ptx의 비교 결과를 볼 수 있다.

 

Hallucinations 환각을 제외하면, 즉 groundedness를 제외하면 PPO-ptx가 좋은 성능을 달성했음을 알 수 있다.

 

 

 

 

Figure 5에서는 FALN와 T0의 특정 데이터에 대한 파인 튜닝 결과와, GPT-3, GPT-3 prompted, SFT, PPO-ptx를 비교한다.

 

파인 튜닝한 결과보다 PPO-ptx의 결과가 더 좋은 결과를 다음과 같이 추측한다.

첫 번째는 공개 NLP 데이터는 특정 목적을 대상으로 한다. 두 번째는 입력에 있어서 다양성을 확보하기 어렵기 때문이다.

바꿔 말하면 특정 목적을 대상으로 하는 데이터가 아니고 입력에 다양성을 확보할 수록 좋은 결과를 얻을 수 있다.

 

 

 

 

 

 

 

References:

https://kimjy99.github.io/%EB%85%BC%EB%AC%B8%EB%A6%AC%EB%B7%B0/instructgpt/

https://www.ibm.com/kr-ko/think/topics/rlhf

https://www.skkuw.com/news/articleView.html?idxno=24752

https://ropiens.tistory.com/85

https://velog.io/@uonmf97/HUFS-RL-%EA%B0%95%ED%99%94%ED%95%99%EC%8A%B5-Reinforcement-Learning-PPO-Proximal-PolicyOptimization

https://huggingface.co/blog/rlhf

https://huggingface.co/learn/deep-rl-course/unitbonus3/rlhf