🍭

(230226) Diary: ChatGPT Part 2. RLHF & ChatGPT

최근 몇 주 동안 연일 화제인 ChatGPT를 공부합니다! (지난 세미나에 이은 ChatGPT 2편!)

RLHF: Reinforcement Learning from Human Feedback

(위 블로그 포스팅 내용을 정리함)
LM의 강화 학습(Reinforcement Learning) 필요성
LM이 주어진 Prompt로부터 “좋은” Text를 생성했는지 평가할 수 있는 마땅한 지표(Metric)가 존재하지 않음
여전히 LM의 Pre-Training에는 단순 Next Token Prediction Loss (Cross-Entropy)가 사용되며,
이를 보완하기 위해 (Text Generation Tasks에서는) BLEU, ROUGE 등의 지표를 활용하지만, 여전히 사람이 작성한 References가 필요하다는 값비싼 단점이 존재함
만약, LM이 생성한 Text에 대한 사람의 피드백을 성능 평가 지표 or Loss로 활용하면 어떨까?라는 생각에서 강화 학습이 제안됨
학습 방법(Methods)
Step 1. PLM 준비
학습에 사용할 PLM을 준비함
InstructGPT는 레이블러들이 직접 작성한 Text로 LM을 추가 학습시켰지만, 일반적인 PLM을 사용하여도 무방함
Step 2. Reward Model(RM) 학습
LM이 생성한 Text를 입력받아 Scalar 점수 (사람의 선호도)를 출력하는 모델 (RM) 학습
사전에 준비한 Prompt를 Step 1에서 준비한 PLM에 입력하여 n개의 Text를 생성하고, 이를 레이블러들이 점수를 매겨 RM 학습을 위한 Dataset을 구축함
엄밀히 말하면, n개의 Text 각각에 점수를 매기는 것이 아닌 n개의 Text를 대상으로 상대적인 Ranking을 부여함 (Elo Rating을 사용하기도 함)
(최근에 Google로부터 투자 유치를 받은 Anthropic에서 공개한 Dataset)
RM의 크기는 제각각이지만, 직관적으로 PLM이 생성한 Text를 이해할 수 있는 정도의 Capacity를 가져야 함
Step 3. 강화 학습 수행
PLM을 복사하고, (대부분의 Params를 고정하여) 일부 Params만을 Proximal Policy Optimization (PPO) 알고리즘으로 학습시킴
Prompt를 입력받아 Text를 생성하는 (PLM의 복사본) LM이 Policy가 되며,
LM의 Tokenizer Vocab에 존재하는 Token들이 Action Space,
Step 2에서 학습한 RM이 Reward Function이 됨
Reward Function에는 RM의 출력값(사람의 선호도 점수) 이외에 원본 PLM과 LM의 출력 간의 KLD Term이 추가 활용됨
이는 LM이 생성하는 Text의 분포가 원본과 너무 달라지지 않게 조절하는 (일반적으로 자주 사용되는) 장치임
PPO는 처음 공개된 이후 많은 시간이 지났지만, 여전히 좋은 성능과 친숙함으로 현재에도 널리 사용되고 있는 듯함 (강화 학습 잘 모름..)

ChatGPT

ChatGPT는 InstructGPT의 Supervised Fine-Tuning(SFT) 과정에서 레이블러가 작성한 Human-AI Assistant 간의 대화 데이터를 추가 활용함
레이블러는 자연스러운 대화 데이터 구축을 위해 AI 모델 (LM)이 작성한 대답 (Text)을 수정할 수 있는 권한을 가짐
위의 과정을 통해 ChatGPT는 대화를 이어가며 사람이 원하는 Text를 생성할 수 있게 됨