[yongggg's] Training language models to follow instructions with human feedback (InstructGPT) review
안녕하세요 이번에 설명 드릴 논문은 Open AI의 "Training language models to follow instructions with human feedback" 이라는 논문입니다. 최근 ChatGPT가 등장하면서, 이에 근간이 되는 이 InstructGPT 논문에도 관심이 컸습니다. 저도 어떻게 그런 생성모델이 등장했는지 궁금함을 풀고자 논문을 요약해보는 시간을 가졌습니다. 지금 부터 review 시작하겠습니다!
arXiv 2023. [Paper]
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
OpenAI
4 Mar 2022
Introduction
대형 언어 모델(LM)은 task의 몇 가지 예를 입력으로 하여 다양한 자연어 처리(NLP) task를 수행하도록 "prompt"할 수 있다. 그러나 이 모델은 사실을 꾸며내거나 편파적이며, 유해한 텍스트를 생성할 수 있다. 또한 단순히 사용자 명령을 따르지 않는 것과 같이 의도하지 않은 동작들을 표현하는 경우가 많다. 이는 최근 많은 대형 LM에서 사용하는 언어 모델링 목적 함수(다음 토큰 예측)가 "사용자의 지시를 유용하고 안전하게 따른다."라는 목표와 다르기 때문이다. 따라서 이 논문의 저자들은 언어 모델링의 목적 함수가 일치하지 않는다고 말한다. 이러한 의도하지 않은 동작을 방지하는 것은 수백 개의 애플리케이션에서 배포 및 사용되는 언어 모델에 특히 중요하다.
본 연구는 사용자의 의도에 따라 작동하도록 언어 모델을 학습시켜 일치시키는 작업을 진행한다. 여기에는 명령을 따르는 것과 같은 명시적 의도와 진실을 유지하고 편향되거나 유해한 것과 같은 암시적 의도가 모두 포함된다. 저자들은 언어 모델에 도움이 되고 (사용자가 문제를 해결하는 데 도움이 되어야 함) 정직하고 (정보를 조작하거나 사용자를 잘못 이끌어서는 안 됨) 무해하기를 (신체적, 심리적 또는 사회적 피해를 유발하지 않아야 함) 원한다.
본 논문에서는 언어 모델을 일치시키기 위한 fine-tuning 접근 방식에 중점을 둔다. 구체적으로 인간의 피드백을 통한 강화 학습(RLHF)을 사용하여 GPT-3을 fine-tuning하여 광범위한 종류의 명령을 따르도록 한다. 이 기술은 인간의 선호도를 reward로 사용하여 모델을 fine-tuning한다. 저자들은 먼저 40명으로 구성된 팀을 고용하여 1)스크리닝 테스트의 성과에 따라 데이터에 레이블을 지정한다. 그런 다음, 2)Open AI API3에 제출된 prompt와 일부 레이블러가 작성한 prompt에서 원하는 출력 동작에 대한 사람이 작성한 데모 데이터셋을 수집하고 3)이를 사용하여 지도 학습 baseline을 학습시킨다. 4)다음으로 더 큰 API Pompt 셋에서 모델의 출력 사이에 사람이 레이블을 지정한 비교 데이터셋을 수집한다. 그런 다음 5)이 데이터셋에서 reward model(RM)을 학습시켜 레이블러가 선호하는 모델 출력을 예측한다. 마지막으로 6)이 RM을 PPO 알고리즘의 reward function으로 사용하고 지도 학습 baseline을 fine-tuning하여 이 reward를 최대화한다. 이 절차는 GPT-3의 동작을 "human values"라는 더 넓은 개념이 아닌 특정 그룹의 사람들(대부분 레이블러 및 연구원)의 명시된 선호도에 맞춘다. 결과 모델을 InstructGPT라고 한다.
저자들은 주로 레이블러가 테스트셋에서 모델 출력의 품질을 평가하도록 하여 모델을 평가한다. 이 테스트셋은 hold-out 고객(학습 데이터에 없음)의 prompt로 구성된다. 또한 다양한 공개 NLP 데이터셋에 대한 자동 평가를 수행한다. 세 가지 모델 크기(1.3B, 6B, 175B)로 학습시키고, 모든 모델은 GPT-3 아키텍처를 사용한다. 본 논문의 주요 결과는 다음과 같다.
- 레이블러는 GPT-3의 결과보다 InstructGPT 출력을 더 선호한다.
- InstructGPT는 GPT-3보다 향상된 진실성을 보여준다.
- InstructGPT는 GPT-3에 비해 유해성이 약간 개선되었지만 편견은 없다.
- RLHF fine-tuning 절차를 수정하여 공개 NLP 데이터셋의 성능 회귀를 최소화할 수 있다.
- InstructGPT는 학습 데이터를 생성하지 않은 "hold-out"레이블러의 선호도에 의해 일반화 된다.
- 공개 NLP 데이터셋은 언어 모델이 사용되는 방식을 반영하지 않는다.
- InstructGPT는 RLHF fine-tuning 분포 외부의 명령에 대한 좋은 일반화를 보여준다.
- InstructGPT는 여전히 작은 실수를 범한다.
전반적으로 본 연구의 결과는 인간의 선호도를 사용하여 대규모 언어 모델을 fine-tuning하면 광범위한 task에서 동작이 크게 개선되지 않지만 안정성과 신뢰성을 개선하기 위해 많은 연구가 남아있음을 밝힌다.
Methods and experimental details
InstructGPT의 방법론은 "Fine-tuning language models from human preferences" (https://arxiv.org/abs/1909.08593) 논문과 "Learning to summarize from human feedback" (https://arxiv.org/abs/2009.01325)의 방법론을 따른다. 사전 학습된 언어 모델에서 시작하여, 모델의 출력과 학습된 레이블러 팀을 일치시키는 것을 목표로한다. 그런 다음 위의 그림과 같이 세 단계를 적용한다.
- 시연 데이터를 모으고 supervised policy를 학습: 레이블러는 입력 prompt 분포에서 원하는 동작의 데모를 제공한다. 그런 다음 지도 학습을 사용하여 이 데이터에서 사전 학습된 GPT-3 모델을 fine-tuning한다.
- 비교 데이터를 모으고 reward model을 학습: 주어진 입력에 대해 레이블러가 선호하는 outputs을 출력하는 모델 outputs 사이의 비교 데이터셋을 수집한다. 그 다음 reward model(RM)을 학습시켜 인간이 선호하는 출력을 예측한다.
- PPO를 사용하여 reward model에 대한 policy 최적화: RM의 outputs을 scalar reward로 사용하며, PPO 알고리즘을 사용하여 이 reward를 최적화하기 위해 supervised policy를 fine-tuning한다.
2.와 3. 과정은 계속해서 반복할 수 있다. 새로운 RM을 학습시킨 다음 새 policy를 학습시키는 데 사용되는 현재 최상의 policy에 대해 더 많은 비교 데이터가 수집된다. 실제로 대부분의 비교 데이터는 supervised policy에서 가져오며, 일부는 PPO policy에서 가져온다.
2. Dataset
Prompt 데이터셋은 주로 Open AI API에 제출된 텍스트 Prompt, 특히 playground interface에서 이전 버전의 InstructGPT 모델(데모 데이터의 부분 집합에 대한 지도 학습을 통해 학습됨)을 사용하는 text prompt로 구성된다. Playground를 사용하는 고객은 InstructGPT 모델이 사용될 때마다 반복 알림을 통해 추가 모델을 학습시키는 데 데이터를 사용할 수 있다는 정보를 받았다. 본 연구에서는 production에서 API를 사용하는 고객의 데이터를 사용하지 않는다. 저자들은 긴 공통 접두사를 공유하는 prompt를 확인하여 prompt의 중복을 제거하고 prompt 수를 사용자 ID당 200개로 제한했다. 또한 사용자 ID를 기반으로 train, valid, test split을 생성하므로 evaluation과 test set에는 데이터가 train set에 있는 사용자의 데이터가 포함되지 않는다. 모델이 잠재적으로 민감한 고객 세부 정보를 학습하지 않도록 하기 위해 개인 시별 정보(PII)에 대한 train split의 모든 prompt를 필터링했다.
최초의 InstructGPT 모델을 학습시키기 위해 레이블러에게 prompt를 직접 작성하도록 요청했다. 이는 process를 bootstrap하기 위해 명령과 같은 프롬프트의 초기 소스가 필요했으며, 이러한 종류의 prompt는 API의 일반 GPT-3 모델에 자주 제출되지 않았기 때문이다. 저자들은 레이블러에게 세 가지 유형의 prompt를 작성하도록 요청했다.
- Plain: 레이블러에게 task가 충분히 다양성을 갖도록 하면서 임의의 task를 제시하도록 요청
- Few-shot: 레이블러에게 명령과 해당 명령에 대한 여러 쿼리/응답 pair를 제시하도록 요청
- User-based: 레이블러에게 Open AI API의 여러 use-case에 해당하는 prompt를 제시하도록 요청
이러한 prompt에서 fine-tuning 절차에 사용되는 세 가지 데이터셋을 생성한다.
- SFT 데이터셋: SFT model을 학습시키는 데 사용되는 레이블러 시연, 13,000개의 학습 prompt 포함, API와 레이블러에게 수집함.
- RM 데이터셋: RM 학습에 사용되는 모델 출력의 레이블러 순이, 33,000개의 학습 prompt 포함, API와 레이블러에게 수집함.
- PPO 데이터셋: RLHF fine-tuning의 입력으로 사용, 31,000개의 학습 prompt 포함, API로만 수집함.
다음은 API Prompt의 use-case 카테고리의 분포와 예시 prompt이다.
3. Tasks
학습 task는 2개의 소스에서 나온다.
- 레이블러가 작성한 prompt의 데이터셋
- 초기 InstructGPT 모델에 제출된 API의 prompt 데이터셋
이러한 prompt는 매우 다양하며 생성, 질문, 응답, 대화, 요약, 추출 등 기타 자연어의 task를 포함한다. 데이터셋은 96% 이상이 영어로 구성되어있다.
각 자연어 prompt에 대해 task는 자연어 명령(ex. "현명한 개구리에 대한 이야기 쓰기")을 통해 직접적으로 지정되는 경우가 가장 많지만, 몇 가지 예시나 (ex. 개구리 이야기의 두 가지 예시 제공하고 모델이 새 예시를 생성하도록 유도) 암시적 연속(ex. 개구리에 대한 이야기의 시작 제공)을 통해 간접적으로 지정된다. 각각의 경ㅇ에 레이블러에게 prompt를 작성한 사용자의 의도를 추론하기 위해 최선을 다해야하고 task가 불분명한 입력을 건너뛰도록 요청한다. 또한, 레이블러는 응답의 진실성과 같은 암시적 의도와 편향성, 유해한 언어 등과 같은 잠재적으로 유해한 결과를 낼 수 있는 경우를 고려하여 명령과 최선의 판단에 따라야한다.
4. Human data collection
저자들은 데모 및 비교 데이터를 생성하고 주요 평가를 수행하기 위해 Upwork와 ScaleAI를 통해 약 40명으로 구성된 팀을 고용했다. 요약 task에 대한 인간의 선호도 데이터를 수집하는 이전 연구들과 비교했을 때, 본 연구의 입력은 훨씬 더 광범위한 task에 걸쳐 있으며, 적지않게 논란의 여지가 있고 민감한 주제를 포함할 수 있다. 저자들의 목표는 다양한 선호도에 민감하고 잠재적으로 유해한 출력을 식별하는 데 능숙한 레이블러 그룹을 선택하는 것이었다. 따라서 이러한 축에 대한 레이블러 성능을 측정하도록 설계된 스크리닝 테스트를 수행했으며, 이 테스트에서 좋은 성적을 거둔 레이블러를 선택했다.
학습과 평가 중에 기준이 충돌할 수 있는 경우가 있다. 예를 들면, 사용자가 잠재적으로 유해한 응답을 요청하는 경우가 있다. 학습하는 동안 사용자에 대한 도움을 우선시 하나, 저자들의 무해성 목표 때문에, 최종 평가에서 레이블러에게 진실성과 무해성을 우선시하도록 요청했다.
5. Models
본 연구의 모델은 pre-trained GPT-3 언어 모델에서 시작한다. GPT-3은 인터넷 데이터의 광범위한 분포에 대해 학습되었으며, 광범위한 downstream task에 적응할 수 있지만, 특성화되지 않은 동작이 있다. GPT-3을 base 모델로 하여, 세 가지 기술로 모델을 학습한다.
Supervised fie-tuning (SFT)
우리는 지도 학습을 사용하여 레이블러의 시연으로 GPT-3을 fine-tuning한다. Cosine learning rate decay와 residual dropout 을 0.2로 설정하여 16 epoch을 학습했다. Validation set의 RM 점수를 기반으로 최종 SFT 모델 선택을 수행한다. 저자들은 SFT 모델이 1 epoch 이후 validation loss에 대해 overfit 되었음을 발견하였다. 하지만, 이러한 과적합에도 불구하고 더 많은 epoch 단계의 학습이 RM 점수와 인간 선호도 등급 모두에 도움이 된다는 점을 발견했다.
Reward modeling (RM)
최종 unembedding layer가 제거된 SFT 모델에서 시작하여 prompt와 응답을 받아 scalar reward를 출력하도록 모델을 학습했다. 본 연구에서는 많은 컴퓨팅을 절약하기 위해, 6B RM만을 사용했는데, 저자들은 175B RM 학습이 불안정할 수 있기 때문에, 강화학습 동안 value function으로 사용하기에 적합하지 않음을 발견했다.
"Learning to summarize from human feedback" 논문에 근거하여 RM은 동일한 입력에 대한 두 모델 출력들 사이의 비교 데이터셋에 대해 학습된다. 비교를 레이블로 사용하여, cross-entropy loss를 사용한다. Reward의 차이는 인간 레이블러가 한 응답을 다른 응답보다 선호할 log probability를 나타낸다.
비교 수집 속도를 높이기 위해 순위에 대한 응답이 $k=4$에서 $K=9$ 사이인 레이블러를 제시한다. 이렇게 했을 때, 레이블러에게 표시되는 각 prompt애 대해 $ {K}\choose{2}$개의 비교가 생성된다. 비교는 각 레이블 지정 작업 내에서 상관관계가 높으므로 비교를 하나의 데이터셋으로 단순히 섞는다면, 데이터셋을 한 번 통과했을 때, RM은 overfittig 될 것이다. 대신 각 prompt에서 모든 $ {K}\choose{2}$개의 비교를 하나의 batch로서 학습한다. 이는 RM의 단일 forward pass만 필요하기 때문에 훨씬 더 계산이 효율적이며, 더 이상 overfitting되지 않기 때문에 크게 향상된 validation 정확도와 log loss를 갖게 된다.
구체적으로 RM의 loss function은 다음과 같다.
$$ loss(\theta) = {{1}\over{{K}\choose{2}}} E_{(x,y_{w},y_{l}) \sim D} [log(\sigma (r_{\theta}(x, y_{w})- r_{\theta}(x,y_{t})))]$$
여기서 $r_{\theta}(x,y)$는 prompt $x$와 응답 $y$에 대한 RM의 scalar 출력이며, $y_{w}$는 $y_{w}$와 $y_{l}$ 쌍 중에 더 선호되는 응답이다. $D$는 인간 비교의 데이터셋이다.
마지막으로 RM loss는 reward의 shift에 불변하기 때문에, 레이블러의 시연이 RL을 수행하기 전에 평균 점수가 0이 되도록 bias를 사용하며 reward model을 정규화한다.
Reinforcement learning (RL)
다시 한번 "Learning to summarize from human feedback" 논문에 근거하여 PPO 알고리즘을 사용한다. 이 환경에서 SFT 모델을 fine-tuning한다. 환경은 임의의 고객 prompt를 제시하고 prompt에 대한 응답을 기대하는 bandit environment다. prompt와 응답이 주어지면, RM에 따라 결정된 reward를 생성하고 에피소드를 종료한다. 또한 RM의 과도한 최적화를 완화하기 위해, 각 토큰에서 SFT 모델에 토큰마다 KL penalty를 추가한다. Value functio은 RM에서 초기화 되며, 이 과정을 PPO 라고 한다.
또한 저자들은 공개 NLP 데이터셋의 성능 회기를 수정하기 위하여, 사전 학습 기울기를 PPO 기울기에 혼합하여 실험했다. 이러한 모델을 "PPO-ptx"라고 부른다. RL 학습에서 다음과 같은 결합 목적 함수를 최대화 한다.
$$ object(\phi) = E_{(x,y) \sim D_{\pi { \begin{array} RL \\ \phi \end{array} }}} [r_{\theta}(x,y) - \beta log {\pi^{RL}_{\phi}(y|x) \over \pi^{SFT}(y|x)}] + \gamma E_{x \sim D_{pretrain}}[log(\pi^{RL}_{\phi}(x))] $$
여기서 $\pi^{RL}_{\phi}$는 학습된 RL policy, $\pi^{SFT}$는 지도 학습된 모델, $D_{pretrain}$은 사전 학습 분포이다. KL reward 곗 $\beta$와 pretraining loss 계수 $\gamma$는 KL penalty와 사전 학습 기울기의 강도를 각각 조절한다. PPO 모델의 경우 $\gamma = 0$으로 설정된다. 따로 명시되지 않는 한에서, InstructGPT는 "PPO-ptx" 모델이다.
Results
1. Results on the API distribution
다음은 API prompt 분포에서 다양한 모델에 대한 인간 평가 결과로, 175B SFT 모델과 비교할 때 얼마나 선호되는지를 측정한 것이다.
다음은 175B SFT model과 비교하여 측정한 선호도이다. 왼쪽은 GPT-3에 prompt를 제출했을 때, 결과이고 오른쪽은 InstructGPT에 prompt를 제출했을 떄의 결과이다. 위의 그림은 hold-out 레이블러의 결과이고 아래는 training 레이블러의 결과이다.
prompt가 이미 GPT-3에서 잘 수행하도록 디자인되어 있기 때문에 GPT-3에 prompt를 제출했을 떄의 평가에서 GPT(prompted)를 생략하고 보여준다.
다음은 다양한 기준의 평가를 보여준 그림이다.
다음은 PPO-ptx와 다른 모델과의 sacle Likert score를 비교한 그림이다.
저자들은 InstructGPT가 두 가지 이유로 FLAN과 T0보다 성능이 우수하다고 추측했다.
- 공개 NLP 데이터셋은 분류, QA, 요약, 번역과 같은 자동 metric으로 쉽게 평가할 수 있는 task를 캡처하도록 설계되었다. 하지만, 분류와 QA는 API 고객이 본 논문의 언어 모델을 사용하는 것의 작은 부분 (약 18%)에 불과한 반면 개방형 생성과 brainstorming은 prompt 데이터셋의 약 57%로 구성된다.
- 공개 NLP 데이터셋이 매우 다양한 입력을 얻는 것이 어려울 수 있다. 물론 NLP 데이터셋에서 발견되는 task는 언어 모델이 해결할 수 있기를 바라는 일종의 지침을 나타내므로 가장 광범위한 유형의 지침을 따르는 모델은 두 유형의 데이터셋을 결합한다.
2. Results on public NLP datasets
다음은 TruthfulQA dataset의 결과이다. 회색 막대는 신뢰도 등급을 나타내며, 색깔로 표시한 막대는 신뢰성 + 정보성의 등급을 나타낸다.
다음은 RealToxicityPrompts에서 인간 평가와 자동 평가의 결과이다.
3. Qualitative Results
다음은 InstructGPT 175B를 GPT-3 175B와 비교한 일반화의 예시이다.
InstructGPT결과를 보면, 때로는 영어로 출력을 생성하지만 다른 언어로 된 명령을 따를 수 있다. GPT-3는 영어와 유사한 더 신중한 prompt가 필요하다. InstructGPT는 GPT-3보다 안정적으로 코드에 대한 질문을 요약하고 답변할 수 있다.
다음은 InstructGPT 175B를 GPT-3 175B와 비교한 간단한 실수의 예시이다. 프롬프트는 특정 동작을 보이기 위해 cherry-picking했지만 출력은 cherry-picking하지 않았다고 한다.
InstructGPT는 잘못된 전제를 가정하고 그대로 따라가는 명령으로 혼돈하는 모습을 보여줄 수 있다. InstructGPT는 간단한 질문에 직접 답한다기보다 지나치게 얼버무릴 수 있다.