![[논문리뷰] RLHF;Training language models to follow instructions with human feedback](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcS0gf1%2FbtsMuwjO26o%2FTbI9tN8M5ZkUmU0TX3rfkK%2Fimg.png)
RLHF(Reinforcement Learning from Human Feedback)는 Pre-trained LLM이 사람의 기대나 선호도에 부합하도록 보상을 최적화하며 모델의 ‘Policy(응답 방식)’을 조정하는 방법이다. LLM Development Process Post-training 단계에 속하며, 사람의 지시(Instruction)에 따르도록 하는 명시적 의도와 편향이나 해로움을 최소화하려는 암묵적 의도 모두를 충족하도록 LM을 Alignment하는 것을 목적으로 한다.
Background
Reinforcement Learning의 keyword와 LLM 관점에서의 시각
RLHF의 개념을 이해하기 위해 간단한 RL keyword를 정리한다.
강화학습이란, agent가 Environment와 상호작용하며 주어진 state s_t에서 누적 보상 합(return)을 최대로 하는 action a_t를 선택하는 최적의 policy를 찾아가는 학습 방법이다. Agent는 Return을 최대화 하는 방향으로 policy를 지속 업데이트하며, env는 계속해서 agent에게 reward를 준다.
Agent(에이전트)
환경(Environment)에서 행동(Action)을 취하는 주체이다.
LLM 자체가 에이전트로서, 주어진 입력(상태)을 바탕으로 다음 토큰(행동)을 선택하여 텍스트를 생성한다.
Environment(환경)
에이전트의 행동에 대한 보상(Reward)과 새로운 상태(State)를 제공하는 외부 요소이다.
대화 맥락, 사용자 입력, 혹은 모델이 지금까지 생성한 텍스트 등이 환경으로 볼 수 있다.
State(상태)
에이전트가 인식하고 있는 환경의 정보로, 행동을 결정하기 위한 입력이 된다.
이전에 생성된 토큰 시퀀스, 현재의 대화 맥락 또는 내부 히든 스테이트 등이 상태로 활용되어, 에이전트가 다음 행동을 결정하는 데 참고가 된다.
Action(행동)
에이전트가 현재 상태에서 수행할 수 있는 선택지이다.
토큰(단어) 단위로 텍스트를 생성하는 것이 행동에 해당한다. 즉, 각 시점에서 LLM이 선택하는 다음 토큰(또는 단어)이 행동에 해당한다.
Policy(정책)
주어진 상태에서 어떤 행동을 취할지 결정하는 확률 분포 혹은 규칙입니다.
LM이 특정 시점에서 단어 분포를 예측하는 확률이 정책이 된다.
Reward(보상)
에이전트가 어떤 행동을 했을 때, 환경으로부터 받게 되는 가치 혹은 신호이다.
사람의 피드백, 선호도(Preference), 혹은 별도의 보상 모델로부터 계산된 값이 보상이 된다.
RLHF에서는 사람의 피드백이 보상모델이 된다.
GPT-3까지의 개발
RLHF 논문은 OpenAI에서 발표한 논문으로, chatGPT의 기반기술이 되었다. 따라서 background로 GPT 개발 흐름을 정리한다.
GPT-1
- Transformer의 decoder를 12 layer로 쌓은 구조
- 방대한 양의 unlabeled dataset를 사용하기 위해 unsupervised pretraining과 supervised finetuning을 결합한 semi-supervise 접근법을 사용
- 특정 task에 적용할 때 성능 향상을 위해서 fine-tuning 과정과 input transformation이 필요하다는 한계
GPT-2
- 4개의 모델 크기, 최대 48개의 layer
- GPT-1의 한계를 개선하기 위해 Fine-tuning 없이 unsupervised pre-training 만을 통해 Zero-shot으로 down-stream task를 진행할 수 있는 General language model을 개발하는 것을 목표
- 직접 대량의 데이터셋(WebText) 구축, batch size, input length, vocab size, model size 증대->downstream task에 관한 정보를 사전학습 과정에서 배우게 됨
- input text에 task에 대한 지시사항을 추가하여 zero-shot으로 정답 생성 가능
GPT-3
- GPT-2에서 zero-shot, few-shot learning의 가능성 확인-> scale을 키워 성능 증대(layer 96개)
- 모델이 task에 대한 정보를 참고하여 inference 가능하도록 입력에 demonstrations를 추가
RLHF의 등장 배경
- 여전히 입력으로 들어온 텍스트 코퍼스 다음에 어떤 단어가 올지 예측하는 Next Token Prediction 방식으로 학습을 진행
- 이렇게 학습할 경우 문장을 완성하는 것이 목표이기 때문에 대화로 interaction 할 수 없음.
- 또한, 사실을 지어내거나 편향적이거나 유해한 텍스트를 생성하는 경우가 있음.
- 이는 misaligned라는 결과를 초래함.(Untruthful, Toxic, Not helpful to user)
따라서 이를 해결하기 위해 LM을 인간의 의도에 맞게 동작하도록 Alignment할 필요성이 대두됨.
->인간의 선호도 피드백을 reward로 하는 Reinforcement Learning을 제안.(RLHF)
Abstract
Labeler가 작성한 프롬프트와 OpenAI API를 통해 수집된 프롬프트를 바탕으로 데이터셋을 수집하여 supervised learning 방식으로 GPT-3를 fine-tuning(SFT 모델 생성)
이후 모델 출력에 대한 선호 데이터를 수집, human feedback을 활용한 reinforcement learning으로 추가 fine-tuning함으로써 InstructGPT를 개발
파라미터 수가 1.3B인 InstructGPT 모델의 출력은 파라미터가 100배많은 175B GPT-3의 출력보다 선호됨
또한 truthfulness(진실성)에서의 개선과 toxic output 생성의 감소, 성능 저하도 최소한으로 나타남
Approch
Step 1. Supervised Fine-tuning
prompt : Labeler가 작성한 프롬프트와 OpenAI API를 통해 수집된 프롬프트
response : prompt에 대한 답변을 labeler가 직접 작성
위 데이터셋(1K)을 사용하여 사전학습된 GPT-3 fine-tunning(supervised-learning)
1.3B, 6B, 175B 3가지 버전 모델을 학습시킴
16 epochs, cosine learning rate decay, residual dropout=0.2를 사용
Validation set의 RM score에 기반하여 최종 SFT 모델을 선택
Step 2. Training reward model
프롬프트를 샘플링하고 앞에서 학습한 언어모델을 통해 같은 입력에 대해 k개(4~9개)의 결과물을 생성한 뒤 labeler이 k개의 선호도 순위를 매김
labeler가 선호하는 답변을 예측하는 reward model 학습
입력으로 prompt와 response / 출력은 reward값(scalar)
loss : 2개씩 response 조합을 생성하여 입력 (1대1 비교)
선호하는 응답y_w, 선호하지 않는 응답 y_l간의 차이가 클 수록 loss 감소, 주어진 선호 순위에 맞춰 상대적으로 올바른 순위를 예측하도록 학습, 과적합을 방지하기 위해 1epoch 학습
계산 비용과 훈련의 완성도 측면에서 6B RM이 효율적이고 실용적, 175B RM 훈련은 불완전할 수 있다는 것을 발견하여 6B RM만을 사용
Step 3. Reinforcement Learning with PPO algorithm
2단계에서 지도 학습한 RM모델을 reward function으로 활용, 강화학습의 PPO(Proximal Policy Optimization) 알고리즘(Schulman et al., 2017)으로 reward를 최대화하도록 SFT모델을 fine-tuning한다.
초기 policy: demonstration 데이터 + 사전학습 시 활용된 데이터의 10%로 GPT-3를 2 epoch만큼 supervised fine-tuning(1.3B, 6B, 175B)
학습된 RM을 value function으로 하여 PPO를 통한 policy 최적화한다. PPO는 여러 강화 학습 방법 중 policy 자체를 optimization 시키는 policy-based의 방법론으로, policy update를 통해 optimization 할 때 policy가 적당히 변할 때만 update 한다는 느낌으로 이해할 수 있다.
policy가 적당히 변하도록 하기 위해 KLpenalty term이 추가된 objective function을 볼 수 있으며, 값이 0.8~1.2 사이일 때만 학습이 되도록 했다.
특정 task에서 성능이 감소하는 performance regression이 심하게 일어나는 것을 관측-> pretraining gradients를 PPO gradients와 mix하는 'PPO-ptx'를 제안한다.
Results
논문에서는 모델을 평가할 때, 그 모델이 얼마나 aligned 되었는 지를 위주로 본다. 1) helpful / (2) honest / (3) harmless 세 가지로 aligned를 정의한다.
(1) helpful
helpful을 판단하는 기준 자체가 명확하지 않아 논문에서는 helpful을 labeler의 판단으로 평가한다.
여기서 GPT는 GPT-3 모델을 의미하고 GPT(prompted)는 GPT-3 모델에 few-shot 예시를 준 prompt를 입력으로 사용한 모델을 의미한다.
결과적으로 대부분의 평가 항목에서 PPO, PPO-ptx 모델이 다른 모델보다 더 많은 선호를 받았다. 다만 Hallucination의 경우에는 SFT가 PPO, PPO-ptx 모델보다 더 낮은 Hallucinations를 생성한다고 평가 받았다. 이는 alignment을 위해 사용자의 기대에 맞는 답변을 학습하지만, 사실 여부에 대한 직접적인 reward가 부족하기 때문으로 유추한다고 언급된다.
(2) honest
helpful과 마찬가지로, honest 자체를 측정하는 것도 기준이 모호하여 public NLP datasets 중 하나인 TruthfulQA dataset을 이용해 truthfulness를 대신 측정했다고 한다.
각 모델마다 그래프 세 개는 1.3B / 6B / 175B의 세 가지 크기를 가지는 모델을 의미한다. QA prompt는 질문(Question)과 그 질문에 대한 대답을 생성해야 하는 데이터 셋으로 평가한 것을 의미한다. 추가로 Instruction + QA prompt는 모델이 만약 정확한 답을 모를 경우 'I have no comment'라 답변할 수 있도록 지시를 추가한 프롬프트를 이용해 평가한 것을 의미한다. 여기서 회색 막대는 truthfulness만 나타내고, 색깔 막대는 truthfulness와 informativeness를 모두 나타낸다.
결과적으로 helpful에서 라벨러가 평가한 것과 유사하게 TruthfulQA dataset에서도 PPO, PPO-ptx 모델이 좋은 성능을 낸다는 것을 알 수 있다.
(3) harmless
harmless 자체눈 측정하기 어렵기 때문에 독성 측정용 public NLP datasets인 RealToxicityPrompts을 이용해 평가했다고 한다.(프로젝트 초기에는 출력 문장에 잠재적으로 해로울 수 있는지 labeler가 평가 했으나, 이러한 평가는 라벨러의 추측이 너무 많이 필요했기에 중단하였다고 한다.)
다음은 RealToxicityPrompts를 이용해 평가한 결과이다.
Respectful하게 답변하라는 prompt를 명시적으로 제공했을때와 그렇지 않을 때의 결과를 볼 수 있다.
GPT, SFT, PPO-ptx 세 모델에 대해 평가했는데, 다양한 평가 방식에서 공통적으로 SFT가 제일 toxicity가 적은 것으로 나타났다.
또 GPT와 PPO-ptx를 비교했을 때 toxicity가 감소하는 경향은 있으나 그 폭이 크지 않다고 밝히고 있다.
Conclusion
결론적으로, RLHF를 활용하면 기존 모델보다 적은 파라미터로도 더 좋은 성능을 얻을 수 있으며, 공용 NLP 데이터셋에서 발생하는 성능 후퇴 문제를 해결할 수 있다.
또한, InstructGPT는 fine-tuning 시 사용되지 않은 instruction에 대해서도 다른 모델보다 우수한 성능을 보인다.
다만, 여전히 hallucination 문제나 편향 증가 등 개선해야 할 부분이 남아 있음을 확인할 수 있다.
Reference
Training language models to follow instructions with human feedback, Long Ouyang, https://arxiv.org/abs/2203.02155
Illustrating Reinforcement Learning from Human Feedback (RLHF), HuggingFace, https://huggingface.co/blog/rlhf
How GPT3 Works - Visualizations and Animations, Jay Alammar, https://jalammar.github.io/how-gpt3-works-visualizations-animations/
ChatGPT — A History, Uses, Effects, and the Future, Ross Greves, https://medium.com/@ross.greves/chatgpt-a-history-uses-effects-and-the-future-6934b0c5fbca
Key concepts in Reinforcement Learning, Dhanoop Karunakaran, https://medium.com/intro-to-artificial-intelligence/key-concepts-in-reinforcement-learning-2af715dfbfa
REINFORCE — a policy-gradient based reinforcement Learning algorithm, Dhanoop Karunakaran, https://medium.com/intro-to-artificial-intelligence/reinforce-a-policy-gradient-based-reinforcement-learning-algorithm-84bde440c816
'논문리뷰 > Language Model' 카테고리의 다른 글
개발새발라이프
hi there🙌