-
Behind ChatGPT: Reinforcement Learning from Human Feedback (RLHF)Paper Review/NLP 2023. 1. 16. 21:38
본 포스트에서는 ChatGPT을 학습할때 1.3B만으로 175B만큼의 성능을 내는데 가장 중요한 역할을 했던 Reinforcement Learning from Human Feedback (RLHF)에 관해 설명한다. Detail은 InstructGPT 논문 리뷰에서 추가적으로 다루도록 하겠다.
Concept
GPT like와 같은 pre-trained language model (PLM)의 생성 능력 & down-stream tasks에서의 성능이 뛰어나지만 이러한 모델이 실제로 human-like와 같이 문맥에 맞게 자연스러운 응답을 생성한다고 보기에는 아직 한계가 있다. 가령, human과 같은 응답을 생성하기 위해 GPT의 autoregressive한 objective를 minimize하거나, 단순히 human reference text와 generated text의 overlap을 minimize하는 방식만으로는 한계가 있다. 이를위해 제안된 Reinforcement Learning from Human Feedback (RLHF)는 RL을 이용하여 human feedback으로부터 LM을 optimize하는 방식으로, general corpus로부터 학습된 PLM의 output을 우리가(human) 원하는 방식에 가깝도록 학습하는 과정이다.
Method
RLHF를 위해서는 아래와 같이 3가지의 과정을 거치게 된다.
1) LM을 pre-training하는 과정
2) demonstration data를 수집 & reward model을 학습하는 과정
3) LM을 reward model과 함께 RL objective로 학습하는 과정
Step-1) Pre-training LM
- GPT-3와 같이 대용량의 학습데이터에서 pre-trained된 LM
- 추가적으로 RLHF에 이용할 LM은 PLM을 additional text 데이터에서 fine-tuning 한 모델을 이용할수도 있음. (ChatGPT에서는 human으로부터 생성된 demonstration 데이터셋에서 PLM을 추가 fine-tuning시킴)
Step-2) Training Reward model with Human Feedback Dataset
Step-2에서는 Step-1의 LM을 이용하여 reward 모델을 학습시키는 단계이다. Step-1의 LM을 이용하여 같은 query에 대해 k개의 output을 generation한 후, human이 k개에 대해 더 좋다고 판단되는 결과를 ranking하는 방식으로 human scoring을 진행한다. 가령 <query, output_a, output_b, output_c>와 같은 결과가 있을때, output의 퀄리티에 따라 output_b > output_a > output_c와 같이 랭킹을 하는 방식 (relative)이다.
이후 human scoring된 데이터를 이용하여 reward model을 학습하게 된다. 학습된 reward 모델을 이용하여 <query, generated_output>이 입력으로 주어졌을때, 모델이 생성한 generated_output에 대해 human scoring을 mimic할 수 있는 reward 결과를 부여할 수 있다.
Step-3) Fine-tuning the LM with Reward Model and RL objective
해당 step을 설명하기전에 우선 notation을 정의한다.
policy: prompt 입력을 받아 text sequence를 return하는 LM으로 정의된다.
action space: LM이 선택할 수 있는 모든 token (vocab_size만큼)
observation space: 가능한 모든 input token sequences의 조합. (vocab_size^{number of input tokens})
reward function: policy shift와 reward model을 이용하여 정의됨.
Step-3의 과정은 아래와 같다.
1) GPT-3 like transformer를 이용하여 policy (π)를 초기화
2) policy를 이용하여 query에 대한 문장을 생성하고, 학습된 reward 모델을 이용하여 reward 점수를 얻음
3) 얻은 reward 점수를 이용하여 policy를 update함. (이때 PPO algorithm을 이용하여 policy를 update)
이때, RL 학습의 경우 초기 policy에 대한 예측값들이 noisy 할 수 있기때문에 reward가 valid한 range에 들어오지 못할수도 있는데 이를 방지하기 위해, 아래와같이 KL term을 이용해서 reward function에 penalty를 추가함.
$$R(x,y)=r(x,y)-\beta \log[\frac{\pi^{RL}(y|x)}{\pi^{SFT}(y|x)}]$$
optimize를 하기위한 policy πRL(y∣x)가 초기에 너무 noisy한 값을 예측하는거를 prevent하기 위해, supervised 데이터셋에서 fine-tuning된 πSET(y∣x)를 넣어 KL(πRL(y∣x),πSET(y∣x))를 최소화하도록 term을 추가해줌. 이렇게되면, 초기에 fine-tuning된 model이 policy를 guide 해주는 역할을 할 수 있음
[References]