ChatGPT의 학습 과정을 설명하는 글에서 아래와 같은 이미지를 많이 보셨을 겁니다.
각 단계에 대해 인간의 학습 과정을 빗대어 조금 쉽게 설명해 보고자 합니다.
1단계: 데모 데이터 수집 및 지도 학습 (Supervised Learning)
우선 인터넷에 존재하는 수많은 데이터를 수집합니다. 이때 양질의 데이터 수집이 필요합니다. Reddit, Wikipedia, 전자문서화 되어 있는 수많은 책, 논문 등을 통해 질문-대답이 쌍을 이루고 있는 데이터셋을 생성합니다. 생성된 데이터셋을 사용하여 지도 학습 (Supervised Learning)을 수행합니다. 지도 학습의 목표는 ChatGPT가 생성한 출력과 잠재적 사용자(labler)가 원하는 출력 간의 차이를 최소화하는 것입니다. Text 정보를 Vector 화해서 차이를 계산하고 그 차이를 줄여나가는 과정입니다. 이 과정에서 엄청난 양의 반복적인 학습이 이루어지게 됩니다. '질문-답, 질문-답, 질문-답,...' 계속 연습을 한다고 생각하시면 됩니다. 그러한 과정을 통해 무작위로 선택된 질문 (Prompt)에 잠재적 사용자(labler)가 원하는 출력(Desired Output)을 제공할 수 있게 되는 것입니다.
우리가 학습하는 과정에 비유하자면, 데이터를 수집하고, 질문-대답 쌍을 만드는 과정은 선생님이 문제집을 만드는 과정이라고 생각하면 됩니다. 선생님이 문제집을 만드실 때 다양한 유형의 문제를 출제하시고, 답안지를 만드시게 됩니다.
학생들은 비슷한 내용을 조금씩 다르게 물어보는 문제들을 다양하게 풀어보고, 채점하고, 답안지를 확인하는 과정을 통해서 '공부'라는 것을 합니다. 학생들이 이렇게 공부하는 방식이 지도 학습과 유사하다고 할 수 있습니다. 답이 정해져 있는 상태에서 최대한 그에 가까운 답을 할 수 있도록 훈련하는 과정입니다.
특히 서술형 문제에 대비해 시험공부를 할 때 가장 좋은 방법은 예상 문제 리스트를 작성하고, 그에 따른 나만의 모범 답안을 작성하고, 그것을 모두 외우는 것입니다. 스스로 작성한 예상 질문에 대한 모범 답안을 외우는 과정에서 제가 사용했던 방법은 문제만 적어놓고, 기억하고 있는 모범 답안을 백지상태에서 적어보는 것이었습니다. 다 적어본 뒤, 미리 작성해 놓은 모범 답안과 비교하면서 빠뜨린 것, 잘못 적은 것 등을 살펴보면서 제가 백지상태에서 적을 수 있는 서술형 답안을 정교화했던 기억이 있습니다. 이렇게 공부하고 나면 실제 시험에서 비슷한 서술형 문제가 나오면 대부분 미리 외워둔 모범 답안 내에서 선생님께서 생각하시는 정답에 가까운 답안을 적어서 낼 수 있었습니다. "ChatGPT가 생성한 출력과 잠재적 사용자(labler)가 원하는 출력 간의 차이를 최소화하는 과정"은 서술형 시험 준비를 학생이 공부하는 과정과 매우 닮아 있습니다.
인공지능이 학습하는 과정 자체가 인간의 학습 과정을 모방한 것이기 때문에 우리가 인공지능이 학습하는 방식으로 공부한 것이 아니라, 인공지능이 우리의 학습 방식을 따라 했다고 보시면 됩니다.
아래 박스 안에 있는 질문(Prompt)-대답(Desired Output) 쌍은 ChatGPT가 학습한 예상 문제와 답이라고 생각하시면 됩니다. 예시는 ChatGPT에게 1단계 학습 과정에 사용된 '질문-대답' 쌍에 대한 샘플을 요청해서 얻어낸 답입니다.
Prompt: "Write a summary of the book 'To Kill a Mockingbird'"
Desired Output: "To Kill a Mockingbird is a novel by Harper Lee, published in 1960. The book is set in the fictional town of Maycomb, Alabama, during the Great Depression. It is narrated by a young girl named Scout Finch, who lives with her father, a lawyer named Atticus Finch. The novel explores themes of racial injustice, prejudice, and social inequality."
Prompt: "What are some benefits of meditation?"
Desired Output: "Meditation has many benefits, including reduced stress and anxiety, improved focus and concentration, increased self-awareness, and improved emotional well-being. It can also lower blood pressure, improve sleep quality, and reduce symptoms of depression and anxiety disorders."
2단계: 비교 데이터 수집 및 보상 모델 훈련
이 단계에서는 예상 질문(Prompt)에 대한 다양한 예상 답안 (Model Output) 데이터셋을 수집합니다. 그 후, 인간(Labeler)이 예상 답안에 대한 순위를 매깁니다. 이 데이터셋은 보상 모델 (Reward Model)을 훈련하는 데 사용됩니다. 선생님 같은 사람(Labeler)이 ChatGPT가 동일한 질문(Prompt)에 대해 생성한 여러 개의 답변(Output)에 순위를 매겨 원하는 출력과 얼마나 가까운지 알려줌으로써 보상 모델을 고도화합니다.
이 과정은 그룹 스터디 상황과 유사하다고 할 수 있습니다. 선생님이 하나의 문제를 주고, 여러 명의 학생이 해당 문제에 대한 답을 말하는 것입니다. 선생님께서는 학생들의 답 중 가장 좋은 답을 고를 수 있겠죠? 선생님 나름의 기준으로 학생들의 답변에 순위를 매기고, 그것을 학생들이 모두 공유하면서 공부를 하는 것입니다. 함께 공부한 학생들은 '아, 이렇게 답하면 더 좋구나.' 하는 것을 느끼고, 다시 같은 질문을 받게 되면 좀 더 나은 답을 할 수 있게 됩니다.
ChatGPT는 하나의 질문에 여러 개의 답안을 내놓을 수가 있습니다. 이렇게도 답해보고, 저렇게도 답해보는 것이죠. 그러면 선생님 역할을 하는 사람(Labeler)이 "ChatGPT야~ 이 답변이 가장 좋은 것 같아. 이렇게 별로 좋지 않은 것 같아."라고 가르쳐 주는 것이죠.
아래 박스 안에 있는 질문(Prompt)-대답(Model Output1, Model Output2, Model Output3) 쌍은 ChatGPT가 2단계 보상 모델 훈련 (Reward Model Training) 과정에서 학습한 예상 문제-예시 답안 쌍이라고 생각하시면 되고, 마지막에 Labeler Ranking은 선생님 같은 사람(Labeler)이 이를 보고, 순의를 매긴 결과입니다. 예시는 ChatGPT에게 2단계 학습 과정에 사용된 학습 샘플을 요청해서 얻어낸 답입니다.
Prompt: "Write a short story about a family on a road trip"
Model Output 1: "The family was driving down the road when they suddenly saw a deer in the middle of the road. They swerved to avoid it and ended up crashing into a ditch."
Model Output 2: "The family stopped at a gas station to fill up and grab some snacks. They continued their road trip, enjoying the scenic views and each other's company."
Model Output 3: "The family got lost on the way to their destination and spent hours driving in circles. They finally arrived, exhausted and frustrated."
Labeler Ranking: Model Output 2 > Model Output 3 > Model Output 1
Prompt: "What are some healthy breakfast options?"
Model Output 1: "Eating a donut for breakfast is a great way to start the day!"
Model Output 2: "Some healthy breakfast options include oatmeal, yogurt with fruit and granola, or a veggie omelet."
Model Output 3: "Skipping breakfast is a great way to lose weight!"
Labeler Ranking: Model Output 2 > Model Output 1 > Model Output 3
3단계: PPO 강화 학습 알고리즘을 사용하여 보상 모델 정책 최적화
마지막으로 Proximal Policy Optimization(PPO) 강화 학습 알고리즘을 사용하여 보상 모델에 대한 정책을 최적화합니다. 데이터셋에서 무작위로 질문(Prompt)을 선택하고 감독 정책에서 PPO 모델을 초기화합니다. 정책 기반 답(Policy Output)을 생성하고 답에 대한 보상 점수(Reward Score)를 계산합니다. 보상 점수는 PPO 강화 학습 알고리즘을 사용하여 정책을 업데이트하는 데 사용됩니다. 이를 통해 ChatGPT가 생성한 답의 품질을 향상 시킬 수 있습니다.
이 과정은 1, 2단계에서 학습한 내용을 스스로 계속해서 점검하는 과정이라고 생각하면 됩니다. 어떤 질문에 대해 이렇게 저렇게 답을 내보면서 나의 답변은 몇 점인지 피드백을 받고, 좀 더 나은 답변을 내기 위해 끊임없이 학습하는 것이죠. 논술 학원에서 이런저런 주제에 대한 글을 쓰고 선생님께 계속 피드백을 받으면서 글 쓰는 스킬을 향상하는 과정과 유사합니다.
아래 박스 안에 있는 질문(Prompt)-대답(Policy Output) 쌍은 ChatGPT가 3단계 학습 과정에서 학습한 예상 문제와 답이라고 생각하시면 되고, Reward Score는 사람(Labeler)이 이를 보고, 점수를 매긴 결과입니다. 예시는 ChatGPT에게 3단계 학습 과정에 사용된 학습 샘플을 요청해서 얻어낸 답입니다.
Prompt: "Write a poem about love"
Policy Output: "Love is a rose, with thorns sharp and bright,
A fire that burns with passionate might.
It fills our hearts with joy and pain,
A never-ending dance in the rain."
Reward Score: 0.8 (based on how well the output matches the desired output)
Prompt: "What are some tips for staying focused while studying?"
Policy Output: "To stay focused while studying, it's important to eliminate distractions and create a quiet, comfortable study space. Take breaks every 30-45 minutes to prevent burnout, and use active learning techniques like taking notes and asking questions to keep your mind engaged."
Reward Score: 0.9 (based on how well the output matches the desired output)
Image Source
https://openai.com/blog/chatgpt/
https://www.aivo.co/blog/chatgpt-training-process-advantages-and-limitations