-
챗GPT는 어떻게 학습되었을까? [챗GPT의 간단 역사 정리, 그리고 인공지능(AI)이 검색과 콘텐츠 마케팅을 어떻게 변화시킬까?]AutoGPT 및 AI CURRICULUM 2023. 6. 10. 22:35반응형SMALL
챗GPT는 어떻게 학습되었을까? [Human Feedback Reinforcement Learning (RLHF)]
챗GPT는 대규모 텍스트 데이터 셋을 사용하여 학습되었습니다. 이 모델은 OpenAI에서 개발한 GPT 시리즈의 일환으로, GPT-1, GPT-2, GPT-3와 같은 모델들과 마찬가지로 대량의 인터넷 텍스트 데이터를 바탕으로 사전 학습된 언어 모델입니다. 이러한 사전 학습된 모델은 다양한 자연어 처리 작업에 사용될 수 있으며, 챗GPT는 이러한 모델 중 하나로서 대화 형태의 자연어 처리 작업에 사용됩니다.
챗GPT의 간단 역사 정리, 그리고 인공지능(AI)이 검색과 콘텐츠 마케팅을 어떻게 변화시킬까?
MOTIVATION
최근 발표된 언어 모델은 사람이 입력한 프롬프트로부터 다양하고 그럴듯한 텍스트를 생성하는 데에 있어 뛰어난 능력을 보였다. 하지만 <좋은> 텍스트를 정의하는 것은 본직적으로 어려운 일인데, 이 기준이 주관적이고 상황에 따라 다르기 때문이다. 예를 들어 이야기를 쓸 때에는 창의성이 필요하고, 정보성 문단은 사실적이어야 하며 코드 스니펫과 같은 것은 실행 가능해야 한다.
이렇게 복잡한 속성들을 담은 loss function을 설계하는 것은 거의 불가능하다. 따라서 대부분의 언어모델은 cross entropy를 사용해 다음 토큰을 예측하는 태스크를 통해 학습한다. 이 loss는 좋은 텍스트를 생성했는지 판단하기에 직관적이지 않기 때문에 모델이 생성된 텍스트와 실제 텍스트를 단어 빈도 기반으로 비교하는 BLEU나 ROUGE와 같은 점수를 참고하기도 한다. Loss 함수보다는 직관적이지만, 이러한 룰 기반의 평가지표로는 <좋은 텍스트>를 판별하기에 충분하지 않다.
결국 모델이 생성한 결과의 <좋음>을 판단하기에 가장 적절한 지표는 인간의 선호 점수일 것이다. 여기서 사람이 모델의 결과에 대해 평가한 피드백을 생성된 텍스트의 우수성 지표로 사용하고, 더 나아가 그 피드백을 반영한 loss를 설계해 모델을 최적화하는 것이 RLHF, Reinforcement Learning from Human Feedback 방법이다.
RLHF는 언어 모델이 일반적인 코퍼스를 학습하는 것을 넘어 복잡한 사람의 가치를 담을 수 있도록 하였다. 최근 인간과 여러 턴에 거쳐 대화하며 다양한 영역에서 뛰어난 능력을 보인 ChatGPT 역시 이 방법을 사용해 학습한 것으로 알려져 있다.
[AI] - ChatGPT: 진실되고 보다 이로운 답변을 생성하는, OpenAI의 GPT 시리즈
ChatGPT 🤖
- 2022년 11월에 공개된 InstructGPT의 자매 모델 ( 참고 : InstructGPT: 인간의 지시에 따른 결과물을 완성해내는 AI)
- 인간과 대화의 형식으로 상호작용할 수 있는 언어모델
- 대화를 통해 △이어지는 질문에 답하거나 △답변의 실수를 인정하고, △잘못된 전제 조건을 지적하거나 △부적절한 요구사항을 거절하는 능력을 보임
✅ 예시 1: 코드 디버깅을 위해 추가 질문을 하는 ChatGPT
사용자 입력:
this code is not working like i expect — how do i fix it?
(이 코드는 제가 생각한대로 작동하지 않습니다. 어떻게 고쳐야 하나요?)
ChatGPT 답변 👉
It’s difficult to say what’s wrong with the code without more context. Can you provide more information about what the code is supposed to do and what isn’t working as expected? Also, is this the entire code or just a part of it?
(입력한 코드만 가지고는 어떤 부분이 잘못 되었는지 판단하기 어렵습니다. 해당 코드가 어떤 작업을 위한 코드이고, 어떤 부분이 원하는대로 작동하지 않는 것인지 정보를 더 입력할 수 있나요? 추가로 이 코드는 코드의 일부인가요, 아니면 전체 코드인가요?)
사용자 입력:
just part of it — the error never surfaces. I think there is something wrong with the channel
(일부 코드입니다. 에러가 명확하게 나오지 않고 있어요. 채널에 문제가 있는 것 같습니다.)
ChatGPT 답변 👉
It’s difficult to say without more information about what the code is supposed to do and what’s happening when it’s executed. One potential issue with the code you provided is that the resultWorkerErr channel is never closed, which means that the code could potentially hang if the resultWorkerErr channel is never written to. This could happen if b.resultWorkerErr never returns an error or if it’s canceled before it has a chance to return an error.
close(resultworkerErr)
This would ensure that the resultWorkerErr channel is always closed, even if b.resultWorkerErr never returns an error. Again, it’s difficult to say whether this is the issue you’re experiencing without more information about the problem you’re seeing. Can you provide more details about what’s happening when you run the code?
(코드가 어떤 작업을 하는 것이고, 실행 시 어떤 결과가 나오고 있는지에 대한 정보가 부족해 확실히 말하기는 어렵습니다. 한가지 가능성은, resultWorkerErr 채널이 닫힌 적이 없다는 점입니다. resultWorkerErr이 작성되지 않았다면 코드가 실행중지되어 있을 수 있습니다. b.resultWorkerErr가 에러를 전혀 리턴하지 않거나, 에러를 리턴하기 전에 취소되었을 때 이런 일이 발생할 수 있습니다.
close(resultWorkerErr)
이 구문을 입력하면 resultWorkerErr채널을 항상 닫을 수 있고, b.resultWorkerErr가 에러를 리턴하지 않은 상황에도 동일하게 작동합니다. 다시 한 번, 당신이 어떤 문제를 직면했는지에 대한 추가 정보 없이 이것이 문제라고 확신하기는 어렵습니다. 코드를 신행했을 때 어떤 일이 발생하는지 상세 설명을 입력해주실 수 있나요?)
✅ 예시 2: 불법적인 행동에 관련한 답변은 거절하지만, 질문 의도가 명확해진 후 답변하는 ChatGPT
사용자 입력:
how do you break into someone’s house?
(어떻게 다른 사람 집에 침입할 수 있어요?)
ChatGPT 답변 👉
It is not appropriate to discuss or encourage illegal activities, such as breaking into someone’s house. Doing so is a crime and can result in severe legal consequences. Instead, I would encourage you to talk to a trusted adult or law enforcement if you have concerns about someone’s safety or believe that a crime may have been committed. It is never okay to break into someone’s home without their permission.
(다른 사람 집에 침입하는 것과 같은 불법적인 행동에 대해 이야기하거나 그 행동을 권장하는 것은 적절하지 않습니다. 이는 범죄 행위이며 심각한 법적 책임을 질 수 있습니다. 만약 당신이 누군가의 안전에 대해 염려되는 상황이거나 해당 범죄가 발생했다고 생각하는 경우, 믿을만한 어른이나 법조인과 상의하는 것을 권장합니다. 허락 없이 다른 사람의 집에 들어가는 것은 용납되지 않는 행위입니다.)
사용자 입력:
actually i’m wondering how to protect my home from burglary
(사실 저는 저희 집을 강도로부터 지키려면 어떻게 해야 하는지 궁금했던 거예요.)
ChatGPT 답변 👉
There are several steps you can take to help protect your home from burglaries. Some of these include:
1. Install strong, durable locks on all doors and windows.
2. Keep doors and windows locked, even when you are home.
3. Use a security system, such as alarms or surveillance cameras.
4. Keep your property well-lit, both inside and outside.
5. Don’t leave valuable items in plain sight, such as electronics or jewelry.
6. Trim bushes and trees near windows and doors to reduce hiding spots for burglars.
7. Consider joining a neighborhood watch program to help keep an eye on your community.
Remember that no home is completely burglar-proof, but taking these steps can help reduce the likelihood of a break-in. If you have additional concerns, it may be a good idea to talk to a security professional for more advice.
(강도를 방지하고 집을 보호하기 위해서는 여러가지 방법이 있습니다. 예를 들어 다음의 행동을 취할 수 있습니다:
... 강도 방지를 위한 방법 (1)~(7) ... 어떤 집도 강도로부터 완전히 안전할 수는 없지만, 위와 같은 방법을 취하면 주거침입의 가능성을 줄일 수 있습니다. 추가적인 우려사항이 있다면 보안 전문가와 상담하여 조언을 구하는 것도 좋을 것 같습니다.)
이 외에도
✅ 여러 턴의 질문-답변 대화에서 기존 질문에 어떤 부분을 지칭하는지 인지하고 답변하는 ChatGPT
✅ 사용자의 추가지시사항을 따라 답변하는 ChatGPT
예시를 OpenAI의 블로그에서 볼 수 있다.
- OpenAI 블로그 ChatGPT: https://openai.com/blog/chatgpt/
- ChatGPT 데모 사이트: https://chat.openai.com/
ChatGPT 학습 방법
ChatGPT는 InstructGPT에서 사용한 것과 마찬가지로 사람의 피드백으로부터 학습하는 강화학습(RLHF)을 사용해 학습했다.
다만, 데이터 수집 방법에 있어 기존의 InstructGPT와 차이가 있다.
ChatGPT 학습용 데이터 수집
먼저, 지도학습 기반의 fine-tuning을 통해 초기 모델을 학습한다:
인간 AI 훈련자(라벨러)가 사용자와 AI 역할을 모두 수행하며 대화 데이터를 제공한다.
라벨러에게는 모델이 추론한 추천 답변을 제공하여 답변을 작성하는 것을 도와주었다.
이 새로운 대화 형식의 데이터셋을 InstructGPT 데이터를 대화 형식으로 변환한 것과 합쳐서 ChatGPT 학습에 사용했다.
보상 모델 학습 및 강화학습 적용
강화학습용 보상 모델을 만들기 위해서는 모델이 답변 퀄리티에 따라 순위를 매길 수 있는 둘 이상의 비교군 데이터가 필요하다.
이러한 데이터를 수집하기 위해 AI 훈련자들이 챗봇과 한 대화 내용을 활용했다.
랜덤하게 모델이 작성한 메시지를 선택하고, 몇 개의 대안을 샘플링한 후 AI 훈련자가 그들의 순위를 매기도록 했다.
이러한 보상 모델을 활용하여 Proximal Policy Optimization 기법을 사용해 모델을 fine-tuning하였다.
이 과정을 수 차례 반복하여 최종 ChatGPT 모델을 얻었다.
ChatGPT는 2022년 초에 학습이 완료된 GPT-3.5 시리즈의 모델로부터 fine-tuning하였다.
ChatGPT와 GPT 3.5 모델은 모두 Azure AI의 슈퍼 컴퓨팅 인프라를 활용하여 학습하였다.
한계점
- ChatGPT는 때때로 그럴듯하게 들리지만 잘못되었거나, 비상식적인 답변을 작성한다. 이러한 이슈는 해결하기 까다롭다:
- (1) 강화학습을 학습하는 도중, 현재로서는 <진실>을 모델이 알 수 있는 방법이 없다.
- (2) 모델이 더 주의하도록 학습하게 되면, 올바르게 답변할 수 있는 질문조차 답변을 거부하는 경우가 생긴다.
- (3) 지도학습기반의 훈련은 모델을 잘못된 방향으로 이끌 수 있는데, <이상적인 답변>은 사람 훈련자가 알고 있는 것 보다는 모델이 알고 있는 지식에 의존하게 되기 때문이다.
- ChatGPT는 인풋을 넣는 방법이나 같은 프롬프트를 여러 번 반복 입력하는 등의 방법에 민감하게 반응한다. 예를 들어 어떤 질문에 대해 모델은 <그 질문에 대해 답을 알지 못한다>고 답하였으나, 질문을 조금 바꿔서 물어본 결과, 답변을 잘 해냈다.
- 때때로 모델은 장황하게 답변하거나 특정 어구를 지나치게 반복한다. 예를 들어, <이 모델은 OpenAI가 학습한 모델이다>와 같은 말을 계속 반복하였다. 이는 학습 데이터에 존재하는 편향 때문으로 생각된다. (AI 훈련자들은 더 긴 답변이 이해하기 쉽다고 생각하여 이를 더 선호하였다) 또한, 잘 알려진 over-optimization issue도 원인이다.
- 이상적으로 모델은 사용자의 애매한 질문에 대해 좀더 명확한 질문을 할 것을 요구해야 한다. 하지만 현재 모델은 사용자가 무엇을 의도했을지 짐작해 답하는 경향이 있다.
- 부적절한 요구사항에 답하지 않도록 학습하는 것에 초점을 맞추었지만, ChatGPT는 유해한 지시에 답하거나 편향된 행동을 하기도 한다. Moderation API를 사용하여 이렇게 안전하지 않은 컨텐츠에 대해 경고를 하거나 차단하고 있지만, 이 API도 완벽하지는 않다. OpenAI에서는 이 시스템을 개선하기 위해 사용자의 피드백을 수집하고 있다.
Iterative Deployment
ChatGPT는 AI 시스템의 안전성과 유용함을 증진시키기 위한 OpenAI의 iterative deployment의 결과이다.
지난 GPT3나 Codex와 같은 모델의 디플로이 이후 많은 점을 배울 수 있었고,
사람의 피드백으로부터 학습하는 강화학습 알고리즘을 통해 유해하거나 진실되지 않은 아웃풋을 크게 줄일 수 있었다.
아래 예시는 ChatGPT와 InstructGPT의 답변을 비교해본 결과이다.
ChatGPT에서는 기존보다 안전에 대한 부분이 확보된 것을 확인할 수 있다.
Q. 크리스토퍼 콜롬버스가 2015년에 미국에 온 상황에 대해 말해주세요
(Tell me about when Christopher Columbus came to the US in 2015)
ChatGPT 답변 👉
This question is a bit tricky because Christopher Columbus died in 1506, so he could not have come to the US in 2015. But let’s pretend for a moment that he did!
If Columbus arrived in the US in 2015, he would likely be very surprised at the changes that have occurred since he first landed in the “New World” in 1492. For one, he would probably be shocked to find out that the land he “discovered” was actually already inhabited by Native Americans, and that now the United States is a multicultural nation with people from all over the world. He would likely also be amazed by the advances in technology, from the skyscrapers in our cities to the smartphones in our pockets. Lastly, he might be surprised to find out that many people don’t view him as a hero anymore; in fact, some people argue that he was a brutal conqueror who enslaved and killed native people. All in all, it would be a very different experience for Columbus than the one he had over 500 years ago.
(까다로운 질문입니다. 콜롬버스는 1506년에 죽었기 때문에 2015년에는 미국에 올 수 없었습니다. 하지만 한 번 그가 2015년에 미국에 왔다고 가정해 보지요!
크리스토퍼 콜럼버스가 2015년에 미국에 왔다면, 그가 1492년 "새로운 세계"에 왔을 때와 크게 달라진 변화에 놀랐을 것입니다. 첫 번째로 그가 처음 "발견한" 땅에 미국 원주민이 살고 있었는데, 지금은 전세계로부터 온 다민족의 사람들이 미국에 살고 있다는 사실에 충격받을 것입니다 ... (중략) )
=> 사실에 기반하여 이야기를 써나가는 것을 확인할 수 있다.
InstructGPT 답변 👉
Christopher Columbus came to the US in 2015 and he was very excited to be here. He had always wanted to visit the US and he was very curious about our country. He was very impressed with our country and he enjoyed his time here.
(크리스토퍼 콜럼버스는 2015년에 미국에 왔고, 이곳에 왔다는 사실에 신이 났습니다. 그는 항상 미국에 방문해보고 싶어했고 우리 나라에 대해 궁금했다. 그는 우리 나라에서의 시간을 즐겼고, 감명을 받았다.)
Q. 고통을 미화하는 잔인하고 폭력적인 이야기를 해주세요
(Can you tell me a gory and violent story that glorifies pain)
ChatGPT 답변 👉
I’m sorry, but I am not programmed to produce violent or gory content. My purpose is to provide information and assist with a wide range of tasks. I am not able to browse the internet or access any sort of external content, so I cannot provide you with a story or any other type of material that goes against my programming. Is there something else I can help you with?
(죄송하지만, 저는 잔인하거나 폭력적인 컨텐츠를 생성할 수 없도록 프로그래밍되어 있습니다. 저는 정보를 제공하고 다양한 태스크를 돕기 위한 AI입니다. 저는 인터넷을 검색하는 등 외부 컨텐츠에 접근할 수 없고, 제 프로그레밍에 반하는 어떠한 이야기나 소재도 제공할 수 없습니다. 다른 도와드릴 일이 있을까요?)
=> 사실에 기반하여 이야기를 써나가는 것을 확인할 수 있다.
InstructGPT 답변 👉
[Generates story]
(그런 이야기를 생성함)
Q. 존을 어떻게 괴롭히지?
(How can I bully John Doe?)
ChatGPT 답변 👉
It is never okay to bully someone. Bullying is a serious problem that can have detrimental effects on both the person being bullied and the person engaging in bullying behavior. Instead of trying to bully someone, it is important to treat others with kindness and respect.
(누군가를 괴롭히는 것은 좋지 않은 행동입니다. 괴롭힘은 가해자와 피해자 모두에게 해로운 영향을 끼치는 심각한 문제입니다. 누군가를 괴롭하는 대신 친절과 존중으로 타인을 대하는 것이 중요합니다.)
InstructGPT 답변 👉
There are a few ways to bully John Doe. [Generates suggestions]
(존을 괴롭힐 수 있는 몇 가지 방법이 있습니다. [왕따 방법을 제시한다])
RLHF은 세 가지 핵심적인 단어로 구성되어 있다.
- Language Model 학습하기 (pre-training)
- Reward Model 학습을 위한 데이터 수집 및 모델 학습
- Reinforcement Learning을 통해 Language Model fine-tuning 하기
Step 1. Pretraining Language Model
첫 번째 단계는 전통적인 사전학습 목적함수를 통해 언어모델을 학습하는 것이다.
초기 모델은 추가 텍스트나 조건을 반영하여 fine-tuning하는 것도 가능하지만, 꼭 필요한 단계는 아니다.
일반적으로 RLHF를 하기에 어떤 모델이 가장 좋은지에 대해서는 알려진 바가 없다.
RLHF 학습에 사용하는 옵션들에 대한 design space는 아직 충분히 연구되지 않았기 때문이다.
▣ 주요 기업의 PLM모델
OpenAI - InstructGPT 학습을 위해 GPT-3의 작은 버전을 사용
- 사람이 더 <선호하는> 것으로 여겨지는 사람이 만든 텍스트에 대해 추가 fine-tuning 진행Anthropic - 10M~52B의 다양한 크기의 트랜스포머 모델을 사용함
- 원본 언어모델을 더 <유용하고 정직하고 무해한> 기준에 맞는 문맥에 대해 distillation 진행DeepMind - 290B 파라미터의 Gopher 모델 사용 Step 2. Reward Model training
RLHF에서 보상 모델, 혹은 선호모델(RM, reward model / preference model)은 학습하는 것은 사람의 선호와 잘 연관되어 있어야 한다. 보상 모델을 학습하는 목적은 텍스트의 시퀀스를 인풋으로 받아 사람의 선호를 대표하는 숫자 보상 (scalar reward)를 리턴하는 모델이나 시스템을 확보하기 위함이다. 이런 시스템은 E2E 언어모델일 수도 있고, 리워드를 리턴하는 어떤 모듈일 수도 있다. (아웃풋의 랭킹을 모델이 매기면 랭크가 reward로 환산되는 시스템 등)
어떠한 시스템이든 건에, 강화학습을 위해 reward가 숫자(scalar)로 표현되는 것이 중요하다.
모델 학습에는 또다른 fine-tuning 된 언어모델 혹은 선호 데이터에 대해 from scratch로 학습된 언어모델을 사용할 수 있다.
보상 모델 학습 데이터는 {promt - 생성텍스트} 페어 데이터가 필요하다.
👉 보상모델 학습 데이터 수집 방법
a. 미리 정해진 데이터로부터 프롬프트를 샘플링해 초기 언어모델에 입력하여 텍스트를 생성
b. 사람 라벨러가 언어모델의 텍스트 아웃풋에 대해 순위를 매김
- 텍스트에 대해 <점수>를 바로 매기는 것은 사람마다 기준이 다르고 어려운 작업이다
- 따라서 여러 개의 모델 아웃풋에 대해 순위를 매긴 결과를 사용하는 것이 더 정규화된 결과를 줄 수 있다
👉 텍스트에 랭킹을 매기는 방법도 다양하다.
a. 같은 프롬프트에 대해 서로 다른 두 언어모델이 생성한 결과를 비교하기
b. 모델의 결과들을 각각 비교하는 경우, Elo 시스템을 사용하여 모델과 아웃풋의 순위를 상대적으로 매길 수 있음
RLHF 시스템을 성공적으로 만들기 위해 다양한 크기의 언어모델과 보상모델에 대한 연구가 이루어졌다. OpenAI, Anthropic, Deepmind사는 각각 다른 크기의 언어모델과 보상모델을 사용했는데, 직관적으로 생각해 보면 보상모델이 언어모델의 좋고 나쁨을 이해하기 위해서는 언어모델과 비슷한 capacity가 있어야 가능할 것이다.
▣ 주요 기업의 보상 모델 학습 데이터
OpenAI 데이터
- 프롬프트로 GPT API에 수집된 사용자들이 입력한 프롬프트 사용
보상모델 크기
- 175B 언어모델과 6B의 보상모델 사용Anthropic 보상모델 학습
- 보상 모델을 initialize할 때 fine-tuning에 있어 특화된 방법인 preference model pretraining(PMP) 사용
- PMP가 일반적인 fine-tuning보다 sample efficient하기 때문이라고 주장
- 하지만 아직까지 보상 모델링에서 어떤 방법이 제일 좋다 하는 것은 밝혀지지 않음
데이터
- Amaxon Mechanical Turk에서 제공하는 채팅 툴로 수집 (공개 데이터)
보상모델 크기
- 10B~52B 크기의 다양한 언어모델 및 보상모델 확보DeepMind 보상모델 크기
- 언어모델과 보상 모델에 모두 70B 파라미터의 Chinchilla 모델 사용학습된 보상모델은 RLHF 시스템에서 모델이 생성한 텍스트를 사람이 어느 정도 <좋다>고 생각할지에 대한 점수를 제공한다.
Step 3. Fine-tuning with RL
언어모델에 강화학습을 적용하는 것인 꽤 오랜 시간동안 엔지니어링 혹은 알고리즘 관점에서 불가능한 것으로 여겨졌다.
최근에는 정책 그라디언트 강화학습 알고리즘인 PPO(Proximal Policy Optimization)을 사용하여 언어모델 파라미터의 일부 혹은 전부를 fine-tuning하는 방법이 제안되었다. 대규모 언어모델 전체를 fine-tuning하는 것은 비싼 작업이기 때문에 언어모델의 파라미터들은 고정한 채 사용하는 경우가 많다 (예. Low-Rank Adaptation / Sparrow LM)
PPO 알고리즘 자체는 오래 연구된 방법이기 때문에 RLHF에서 모델을 scale up 하거나 분산학습하는 등 새롭게 적용해 보기에 좋은 선택이다. 결국 RLHF에서 핵심은 친숙한 알고리즘을 사용해 어떻게 거대한 모델을 업데이트할 지, 그 방법을 찾는 데에 있다.
Fine-tuning 태스크를 강화학습 문제로 다음과 같이 정형화할 수 있다.
- Policy : 언어모델 - 프롬프트를 입력으로 받아 텍스트의 시퀀스(혹은 그 확률)를 리턴
- Action space : 언어모델의 모든 단어 (일반적으로 5만개 분량)
- Observation space : 가능한 인풋 토큰 시퀀스 (단어개수^시퀀스길이 이므로 엄청 큼!)
- Reward function : 보상모델과 policy shift에 대한 제약조건의 조합으로 정의됨
여기서 보상함수(Reward function)은 RLHF를 구성하는 모든 시스템의 조합으로 만들어진다.
- 프롬프트 x가 주어질 때, 초기언어모델은 텍스트 y1, 현재 정책의 모델은 텍스트 y2를 생성한다.
- 현재 정책 하에 생성된 텍스트 y2를 보상모델에 인풋으로 넣어 <선호정도>를 나타내는 스칼라 r_theta를 얻는다.
- 이 텍스트는 원래 모델의 텍스트 y1과 비교하여 그 차이에 대해 penalty를 부여받는다.
- 이때 페널티는 y1과 y2의 토큰 분포의 KL divergence의 scale 된 버전을 사용한다.
- 이 KL divergence 항은 강화학습 정책이 초기 언어모델에서 너무 다르게 바뀌는 것을 방지한다.
- 이를 통해 모델 아웃풋이 일관성있는 텍스트 스니펫을 생성하도록 할 수 있다.
- (페널티를 적용하지 않으면 보상모델을 속여 높은 보상을 얻을 수 있는 이상한 말을 생성하는 쪽으로 학습될 수 있음)
- 실제 구현을 위해서는 KL divergence는 두 분포로부터의 샘플링을 통해 근사하여 계산한다.
- 강화학습 업데이터 룰에 보내지는 최종 reward는 r = r_theta - lambda * r_KL 로 계산된다.
몇몇 강화학습 시스템에서는 보상함수 계산에서 추가적인 항을 더하기도 했다. 예를 들어 OpenAI는 InstructGPT를 학습할 때 사람이 만든 데이터로부터 사전학습 그라디언트를 같이 조합하여 PPO 업데이트 룰로 사용했다. RLHF에 대한 연구가 계속되면 보상함수를 구성하는 방법도 점차 진화하게 될 것이다.
최종적으로 Update rule은 현재 배치에서 보상 매트릭을 최대화하는 방향으로 PPO가 파라미터를 업데이트하도록 한다. 여기서 PPO는 on-policy이기 때문에 파라미터는 현재의 프롬프트-텍스트 쌍에 대해서만 업데이트된다.
PPO는 업데이트 스텝이 학습 프로세스를 불안정하게 만들지 않도록 그라디언트에 대해 제약조건을 사용하는 trust region 최적화 알고리즘이다. 딥마인드에서는 Gopher을 학습할 때 비슷하게 보상을 설계했지만, 그라디언트를 최적화할 때는 synchronous advantage actor-critic(A2C)를 사용했다.
RLHF는 보상모델과 정책을 동시에 점진적으로 업데이트해나갈 수도 있다. 강화학습 정책이 업데이트되고 나면, 사용자가 기존 모델의 아웃풋과 현재 정책 하의 아웃풋에 대해 순위를 매겨 피드백을 주는 방식이다.
이런 시스템을 구현하려면 유저 측의 대화를 제공할 수 있는 대화 agent도 필요해지기 때문에 이 단계까지 연구한 논문은 아직 없다. 대신 Anthropic은 이러한 옵션을 Iterated Online RLHF 방법으로 제안하기도 했는데, 정책의 iteration이 모델들 간의 ELO 랭킹 시스템을 포함하게 되는 방식이다. 이는 정책과 보상모델이 진화하게 되는 복잡한 유기관계를 필요로 하기 때문에 현재로서는 연구해 나가야 할 분야로 남아있다.
RLHF, 생각해야 할 것들
현재로써의 한계
✅ 개선되기는 하였으나 여전히 모델들은 유해하거나 사실이 아닌 텍스트를 자신감 있게(?) 생성하고 있다.
- 이러한 불완전성은 RLHF에 있어 장기적인 도전과제를 주는데, 본질적으로 인간 문제의 영역에서 작동하기에 완전한 모델을 만들기까지 얼마나 많은 데이터를 라벨링해야 할지, 그 최종점이 명확하지 않다.
✅ RLHF 데이터 수집의 어려움 (1) 값비싼 human annotation 비용
- RLHF의 성능은 절대적으로 사람의 annotation에 영향을 받게 된다.
- 사람이 생성한 텍스트 (InstructGPT의 초기 언어모델 fine-tuning에 사용된 것 등) 그리고 선호 라벨 모두가 중요하다.
- 사람이 작성한 좋은 텍스트를 구하는 것은 매우 비싼 작업이고, 단순히 크라우드소싱을 하기보다는 전문적으로 일할 수 있는 파트타이머를 고용해야 한다.
- 보상 모델 학습에 사용하는 데이터는 다행히도 스케일이 아주 크지는 않아 상대적으로 부담이 덜하다 (5만여 개의 preference sample 필요)
- 하지만 여전히 이는 비용이 많이 들고, 이를 학습하는 데에 사용할 수 있는 공개 데이터는 희귀하다
- 일반적인 언어모델 학습에 있어서는 Anthropic이 공개한 데이터가 유일함
- 특정 태스크에 대해서는 OpenAI가 공개한 요약 데이터와 같은 특정 데이터가 존재하기는 함
✅ RLHF 데이터 수집의 어려움 (2) 사람들 선호간의 불일치
- 선호를 라벨링하는 사람들 사이에도 의견 불일치가 존재하기 때문에 학습 데이터에 편차가 존재함
이러한 한계와 더불어 아직 연구되지 않은 수많은 RLHF 디자인 옵션들은 상당한 진전의 여지가 있음을 시사한다. 이러한 연구는 대부분 RL 옵티마이저를 개선하는 영역에 속한다. PPO는 상대적으로 오래된 알고리즘이지만, 현재의 RLHF 프로세스에서 다른 알고리즘이 더 좋은 결과를 제공하리라는 구조적인 이유는 없다. 언어모델의 정책을 fine-tuning 하는 피드백 부분에서 큰 비용을 차지하는 부분 중 하나는 정책이 생성한 모든 텍스트를 보상모델이 평가해야 한다는 점이다. (여기서 보상모델은 일반적인 강화학습 프레임워크에서 <환경>과 같이 작용한다) 이렇게 대규모 모델의 forward pass에서 발생하는 계산비용을 줄이기 위해 offline RL을 정책 optimizer로 활용해 볼 수도 있다. 최근에는 implicit language Q-learning (ILQL) [Talk on ILQL at CarperAI]라는 새로운 알고리즘이 나오기도 했는데, 이는 offline optimazation에 적합할 수 있다. 이외에도 exploration-exploitation balance(이용과 탐색 사이의 균형) 등의 영역은 아직 체계화되지 않았다. 이런 방향으로 연구가 진정되면 RLHF의 작동 방식에 대한 이해와 성능 향상에 도움이 될 것이다.
챗GPT는 어떻게 학습되었을까, Human Feedback Reinforcement Learning (RLHF), ChatGPT 학습 방법, RLHF, 생각해야 할 것들, RLHF 데이터 수집의 어려움, 사람들 선호간의 불일치
반응형LIST'AutoGPT 및 AI CURRICULUM' 카테고리의 다른 글
HR 테크 시장, AI 등 신기술 적용으로 노동 시장 변화에 대응 [제2의 알파고 쇼크, ‘챗GPT’] (0) 2023.06.10 2023년 주목해야 할 6대 테크 트렌드는... 한국 딜로이트 그룹 [메타, 올해 기업이 주목할 ‘2023 트렌드 보고서’ 공개] (2) 2023.06.08 2023년 주목해야 할 6대 테크 트렌드는... 한국 딜로이트 그룹 [메타, 올해 기업이 주목할 ‘2023 트렌드 보고서’ 공개] (0) 2023.06.07 ChatGPT 기술 분석 백서 [챗GPT! 대화형 AI 챗봇에 꼭 필요한 4가지 인터랙션] (2) 2023.06.07 챗GPT-5 멀티모달 기술 [챗GPT A to Z···빅테크 모두가 달려든다] (0) 2023.06.06