🍭

(230212) Diary: ChatGPT Part 1. InstructGPT

최근 몇 주 동안 연일 화제인 ChatGPT를 공부합니다! (바쁜 일정으로 이제서야 리뷰합니다..)

InstructGPT

InstructGPT는 ChatGPT의 기반이 되는 모델로, 작년(2022년) 초에 OpenAI가 공개함
ChatGPT가 좋은 성능으로 각광을 받고 있지만, 학습 방법론은 기존의 InstructGPT와 크게 다르지 않음
작년 여름 이후, Stable Diffusion 등 Generative AI가 주목을 받기 시작하면서 덩달아 유명해진 것이 아닐까..? 생각중
InstructGPT가 해결하고자 하는 기존의 문제점은 다음과 같음
175B GPT-3 등 초거대 LM은 현실적으로 학습이 불가능할뿐더러 Generalization 능력이 이미 출중하기 때문에, 원하는 결과를 얻기 위해 Prompting 기법을 활용함
// Input Text (Prompt) 예시 주어진 "상황"에 알맞는 "대화"를 생성하시오 상황: 친구가 시험에 합격함 대화: 너 시험 합격했다며! 너무 잘 됐다~ 축하해! 상황: 친구가 다침 대화: 많이 다쳤어? 괜찮니? 빨리 나으면 좋겠다ㅠ 상황: 친구가 새로운 옷을 구매함 대화: // Model Output (Generation) 예시 옷 샀구나? 너무 잘 어울린다! 어디서 샀어?
Markdown
복사
그러나 일반적인 Causal LM은 단순히 (주로 인터넷에서 크롤링한) 문장의 다음 단어를 예측하도록 학습되기 때문에, Prompting으로는 초거대 LM을 완벽히 통제할 수 없음
단순히 의도한 결과를 출력하지 않을 수도 있고 (Simply Not Helpful),
거짓 정보를 진실인 양 생성하거나 (Hallucination),
공격적이고 편향된 글을 생성하는 문제가 있음 (Toxic & Biased)
InstructGPT는 주어진 Prompt로부터 의도한 결과를 생성 (Accordance with User’s Intention)하는 법과 이에 대한 사람의 피드백 (Feedback)을 학습하는 방식으로 위의 문제점들을 극복함
Step 1: OpenAI API와 레이블러의 직접 작성을 통해 Prompt를 수집하여, 레이블러가 Prompt의 의도에 맞는 결과 Texts (Demonstrations)를 작성하고, 이를 활용하여 GPT-3를 Supervised Fine-Tuning (SFT)함
Step 2: n개의 Prompt를 추출하고, 학습한 모델을 활용하여 Prompt별로 복수의 결과를 생성함. 이에 레이블러가 점수를 매긴 Dataset (Comparisons)을 통해 Reward Model (RM)을 학습함
Step 3: RM을 활용하여 Reinforcement Learning을 수행하고, LM의 성능을 높임
실험 결과, InstructGPT가 GPT-3에 비해 좋은 퀄리티의 (Prompt의 의도에 맞는) 결과를 생성하며, 덩달아 생성 결과물의 Hallucination과 Toxicity, Bias가 완화됨을 확인할 수 있음