2023년 2월 22일 수요일

PR402 - 15 : Fine-Tuning Language Models from Human Preferences

저번에 koGPT를 사용하고 나서 fine-tuning을 해야겠다고 생각해 가져온 논문입니다. 이번 논문은 Fine-Tuning Language Models from Human Preferences (Ziegler, 2019)로 openai에서 나온 논문이고, 언어 모델의 RLHF 기반 fine-tuning 프로세스가 간결하게 쓰여있어서 가져와보았습니다. 

사실 RLHF의 제안은 Deep Reinforcement Learning from Human Preferences (Christiano, 2017)에서 이루어졌기에 학습 프로세스나 loss function이 왜 저렇게 정의되었는지에 대한 내용 등을 알고 싶다면 해당 페이퍼를 참고하는게 더 좋습니다. 

Link - https://arxiv.org/abs/1909.08593


Intro

GPT나 BERT 등 기존의 언어모델에서는 corpus에서 가려진 token에 대한 prediction 문제를 엄청나게 많이 풂으로써 pretraining이 이루어졌습니다. 이 페이퍼에서는 이런 pretrained model에다가 추가적인 problem들을 부여함으로써 목적에 맞는 fine-tuning을 하고 있습니다. 

Task는 크게 2가지로, continuing text / summarization 입니다. continuing text의 경우 GPT에서 본래 학습하는 문제와 동일한데, 여기서는 추가적으로 '긍정적으로 답변하기'라던지, '구체적인 (물리적) 묘사를 넣어 답변하기' 등 다양한 style의 답변을 요구합니다. 

흥미로운 점은 continuing text의 경우 단 5000개의 샘플만 가지고도 굉장히 높은 성능을 보여주었다는 점입니다. 저 또한 비슷한 사례를 경험한 적이 있는데요, 블로그에도 올린 '수강신청 매크로'에서도 pretrained된 CNN보다, 직접 라벨링한 이미지 200개로 fine tuning을 했을 때의 성능이 비약적으로 상승하는 것을 확인할 수 있었습니다. 물론 summarization 또한 60k개의 샘플을 통해서 높은 성능을 거둘 수 있었습니다. 


Architecture


RLHF에서의 핵심은 '사람과 유사한 reward model'입니다. 위의 그림에서 input(context)가 주어지면 pretrained된 모델(policy)이 4개의 답안 후보를 만들어냅니다. 그러면 실제 사람이 이 4개의 후보 중 가장 적절한 답안(label)을 고르고, 이를 바탕으로 reward model을 학습시킵니다. 

그 다음, reward model의 학습이 끝나면 이제 사람 대신 reward model을 통해 policy를 훈련시킵니다. 마치 GAN에서 discriminator가 generator의 훈련을 돕는 것과 유사합니다. 

전체적인 프로세스를 요약하면,

1. 여러 context에 대해 LM(페이퍼에서는 GPT-2)이 4개의 후보 답안을 생성하도록 한 후, 사람에게 4개 중 어느 것이 가장 나은지 고르도록 한다.

2. 사람이 선택한 정답을 바탕으로 reward model을 학습시킨다. (여기서 reward model은 1에서의 LM과 동일한데, 마지막 final layer를 randomly initialize한다.) 

3. 2에서 얻어진 reward model을 바탕으로 PPO를 통해 LM을 학습시킨다.

가 됩니다. 주목할 점은 reward model이 pretrained LM과 동일한 아키텍쳐를 가진다는 점과, LM train시에 PPO를 사용한다는 점 정도겠네요.

reward model의 학습을 위한 loss function은 아래와 같이 주어집니다. 

실제 정답 label과의 cross-entropy로 주어지게 되는 셈입니다. 

위를 통해 얻어진 Reward model을 바로 사용하지는 않고, 여기에 penalty term을 더해서 사용합니다. 

penalty term이 필요한 이유는 reward model의 feedback에 따른 LM의 overfitting을 방지하기 위함으로 이해할 수 있습니다. 따라서 기존 LM과 수정된 LM의 KL-divergence를 penalty로 두어 과하게 수정되는 것을 막아줌으로써 안정적인 수렴을 도모하게 됩니다. 

experiment

아무런 fine-tuning이 없는 zero-shot에 비해서는 압도적인 win rate를 자랑합니다. train sample을 20k로 늘린 값은 의외로 크게 차이가 없고 offline과 online training의 성능은 거의 동일합니다. 
5k뿐만 아니라 더 적은 sample로도 꽤 높은 win rate를 기록하는 것을 확인할 수 있습니다.

conclusion

RLHF의 성능은 사실 이 페이퍼에서 report하는 자료만으로는 조금 애매하다고 생각합니다. 

pretrained model은 corpus에 수록된 모든 context와 style이 혼합된 distribution을 갖고 있기 때문에 특히나 특정 style로 생성하는 것은 당연히 부족할 수밖에 없습니다. 해당 페이퍼에서는 fine-tuning을 통해 model의 general한 multimodal distribution을 특정한 style의 single-modal (개념적으로)로 축소시키는 효과를 보여준다고 생각합니다. 따라서 win rate가 저렇게 나오는 것도 어느 정도는 당연한 결과라는 느낌을 받았습니다.

다만 RLHF의 성능은 chatGPT가 실제로 입증해주고 있고, 그를 위한 fine-tuning의 지침서로서 reward model의 아키텍쳐와 LM train 시 적용할 RL 알고리즘(PPO)을 이렇게 쓰면 되는구나 하는 벤치마크 정도의 페이퍼라고 보시면 더 좋을 것 같습니다. 

koGPT에 RLHF를 적용하게 된다면 나중에 깃헙 링크로 달아보겠습니다. 

감사합니다. 

댓글 없음:

댓글 쓰기