세 번의 학습 과정을 통해 단어 예측기를 챗봇으로 변모시키기: 그 중 마법 같은 것은 없다
요약
Transformer 아키텍처를 넘어, 단순한 다음 단어 예측기를 대화형 챗봇으로 변모시키는 사전 학습 및 정렬 과정을 설명합니다. 모델의 규모 확장(Scaling)이 손실률을 예측 가능한 방식으로 낮추며 지능을 형성하는 원리를 다룹니다.
핵심 포인트
- Transformer는 단순한 엔지니어링 수정의 집합체임
- 사전 학습은 다음 단어 예측을 통해 데이터 스스로 라벨링하는 과정
- 모델 규모(Scale) 확장은 예측 가능한 성능 향상을 보장함
- 단순 예측기에서 챗봇으로 가기 위한 단계적 학습 레시피의 중요성
지난번 저는 여러분이 들어본 거의 모든 모델의 기반이 되는 아키텍처인 Transformer가 단순히 세 가지 평범한 엔지니어링 수정 사항이 쌓인 것에 불과하다고 주장했습니다. 지름길(shortcut), 재조정(rescale), 그리고 가중치 조회(weighted lookup)입니다. 그 중 마법 같은 것은 없습니다.
그때 저는 일종의 편법을 쓰며 글을 마쳤습니다. 아키텍처는 의자의 한 다리에 불과하며, 나머지 두 다리는 규모(scale)와 "가공되지 않은 다음 단어 예측기를 대화할 가치가 있는 무언가로 바꾸는 사전 학습 및 정렬 레시피(pretraining-plus-alignment recipe)"라고 말하며, 그것들은 별도의 포스트에서 다루겠다고 했습니다. 이 글이 바로 그 포스트입니다.
사람들을 놀라게 하는 부분은 이 대목입니다. Transformer를 구축하고, 인터넷 전체를 그 모델에 통과시키며, 컴퓨팅에 수억 달러를 쏟아부어도, 여전히 질문에 안정적으로 답하지 못하는 무언가를 갖게 될 것입니다. 당신이 요청하는 대로 수행하지 않는 아주 똑똑한 텍스트 기계 말이죠. 그것과 당신의 채팅창에 있는 것 사이의 간극은 세 번의 학습 단계입니다. 첫 번째 단계는 가공되지 않은 엔진을 구축합니다. 다음 두 단계는 각각 이전 단계에서 모델을 망가뜨린 특정하고 짜증 나는 방식들을 해결하기 위한 수정 단계입니다.
1단계: 영원히 다음 단어를 추측하기
학습 목표(training objective)는 소리 내어 말하면 거의 당황스러울 정도입니다. 모델에게 마지막 단어가 숨겨진 텍스트 구간을 보여주고, 그 단어를 추측하게 만듭니다. 추측값을 점수화합니다. 가중치(weights)를 미세하게 조정합니다. 이 과정을 수조 번 반복합니다.
그게 전부입니다. 그것이 사전 학습(pretraining)입니다. 답이 이미 텍스트 안에 그대로 놓여 있는 바로 다음 단어이기 때문에, 답을 채점하는 인간은 없습니다. 데이터가 스스로 라벨을 붙입니다(data labels itself). 이 한 가지 사실 때문에 사람이 일일이 주석을 달아야 하는 데이터 대신 가공되지 않은 인터넷 텍스트를 사용할 수 있는 것이며, 이것이 바로 이 기술이 규모를 확장(scale)할 수 있는 온전한 이유입니다.
핵심은 다음 단어를 추측하는 과정이 강제하는 것입니다. '프랑스의 수도는 __'를 완성하려면 사실(fact)이 필요합니다. '그녀가 문을 열고 __'를 완성하려면 이야기가 어떻게 흘러가는지에 대한 감각이 필요합니다. 코드 한 줄을 완성하려면 변수와 괄호를 추적해야 합니다. 목표 자체는 사소해 보이지만, 모든 종류의 텍스트에서 잘하게 만드는 가장 좋은 방법은 그 텍스트가 무엇에 관한 것인지에 대한 놀라울 정도로 풍부한 모델을 학습하는 것입니다. 다음 단어를 예측하는 것이 거의 모든 것을 배우기 위한 측면 통로(side door)임이 밝혀졌습니다.
그리고 바로 여기에 규모(scale)가 존재합니다. 2020년경 사람들은 모델의 크기가 커짐에 따라 오류율이 들쑥날쑥하게 떨어지는 것이 아니라는 점을 알아차렸습니다. 그것은 부드러운 곡선을 따라 하락합니다. 매개변수(parameter)를 더 많이, 데이터를 더 많이, 적절한 비율로 컴퓨팅 파워를 추가하면 손실(loss)은 로그 플롯으로 스케치하고 어느 정도 외삽할 수 있는 방식으로 계속해서 내려갑니다. 이러한 예측 가능성이 바로 누군가가 단일 훈련 실행에 수억 달러를 지출하려 했던 가장 큰 이유입니다. 당신은 눈을 가리고 도박하는 것이 아니었습니다. 당신은 상당히 예측 가능한 양의 '더 나음'을 구매하고 있었던 것입니다.
한 가지 주의할 점을 추가하겠습니다. 왜냐하면 이 분야에서 논쟁이 있기 때문입니다. 특정 크기 이상에서는 모델들이 이전에는 할 수 없었던 것들을 갑자기 '파악하는' 것처럼 보이지만, 그중 얼마나 많은 부분이 실제적인 도약인지 아니면 우리가 측정하는 방식의 인공물(artifact)인지는 여전히 불분명합니다. 따라서 간단히 말해: 더 큰 것이 신뢰성 있게 낮은 손실을 구매합니다. 더 커지는 것이 갑자기 완전히 새로운 기술을 잠금 해제한다는 주장은 더 흥미로운 이야기이지만, 그것은 부분적으로만 사실입니다.
질문에 답하지 않는 천재
이제 당신은 엄청나게 유능한 것을 갖게 되었습니다. 당신이 질문을 입력합니다. 그리고 그것은 신경질적인 방식으로 무언가를 합니다. 세 개의 질문을 더 작성하는 것입니다.
갓 사전 학습된 (pretrained) 모델, 즉 "기본 모델 (base model)"은 정확히 한 가지 습관만을 학습했습니다. 바로 인터넷이 하는 방식대로 텍스트를 이어가는 것입니다. 그 이상은 아닙니다. 이 모델은 단 한 번도 도움이 되라는 요청을 받은 적이 없습니다. 왜냐하면 "도움이 되는 것"은 목표 (objective)가 아니었기 때문입니다. 다음 단어를 맞히는 것이 목표였습니다. 그래서 당신이 "라우터를 어떻게 초기화하나요?"라고 입력하면, 모델은 합리적으로 "Wi-Fi 비밀번호는 어떻게 바꾸나요? IP 주소는 어떻게 찾나요?"와 같이 문장을 이어갑니다. 실제 인터넷에서는 그런 질문이 주로 유사한 질문들의 목록 속에 나타나기 때문입니다.
이 모델은 반대편에 무언가를 원하는 "당신"이 존재한다는 개념이 전혀 없는, 아주 뛰어난 모방꾼입니다. 당신이 시작하는 어떤 장면이든 맞춰주면서도, 당신이 실제로 무엇을 필요로 하는지 묻기 위해 결코 캐릭터를 깨뜨리지 않는 즉흥 연기 배우를 떠올려 보세요. 지식은 모두 그 안에 들어 있습니다. 하지만 그 지식을 당신의 문제로 향하게 하려는 의지는 없습니다. 이것은 모델의 버그가 아닙니다. 단지 우리가 아직 모델에게 그 업무가 무엇인지 말해주지 않았을 뿐입니다.
2단계: 대본을 건네주기
첫 번째 해결책은 명확합니다. 모델에게 업무를 보여주는 것입니다.
당신은 원하는 행동의 사례를 수천 개 정도 수집합니다. 즉, 사람이 작성하거나 승인한 좋은 답변과 짝을 이룬 프롬프트 (prompt)입니다. 답변은 도움이 되고, 주제에 맞으며, 실제 질문에 답해야 합니다. 그런 다음 이 데이터로 계속 학습을 진행합니다. 이것이 지도 미세 조정 (supervised fine-tuning) 또는 지시 미세 조정 (instruction tuning)이며, 중요한 점은 이 과정이 무엇을 바꾸고 무엇을 바꾸지 않는가 하는 것입니다. 모델이 바꾸는 대부분은 지식이 아니라 행동입니다. 이는 모델이 이미 보유하고 있는 수많은 목소리 중 어떤 것을 사용해야 하는지를 가르칩니다. 인터넷이 질문을 완성하는 수많은 방식 중에서, 이제는 "질문을 더 나열하기" 대신 "유능한 비서처럼 직접 답변하기"가 기본값이 됩니다.
당신은 배우를 더 똑똑하게 만드는 것이 아닙니다. 대신 다음과 같이 적힌 대본을 건네주는 것입니다: "이것이 당신의 캐릭터입니다. 도움이 되고, 명료하게 말하며, 앞에 있는 사람에게 답변하십시오." 배우는 언제든 이 역할을 수행할 수 있었습니다. 이제 그들은 이것이 당신이 원하는 역할이라는 것을 알게 된 것입니다.
여기서 주목할 만한 증거는 이것이 추가적인 크기 증가 없이 작동한다는 것입니다. 2022년의 InstructGPT 연구에서는 사람들이 거대한 원본 모델보다 훨씬 작은 지침 기반(instruction-tuned) 모델의 답변을 10배 이상 선호했음을 보여주었습니다. 세련됨은 매개변수(parameters)에 있는 것이 아니었습니다. 그것은 어떻게 행동해야 하는지에 대한 몇천 개의 예시 속에 있었습니다.
3단계: 취향으로 코칭하기
스크립트만으로는 한계가 있습니다. 모든 상황에 대한 예시를 작성할 수는 없고, 답변을 좋게 만드는 많은 요소들은 모호합니다. 너무 길까? 너무 애매할까? 자신감 있게 틀릴까? 당신은 그것을 말로 표현하는 것보다 그 차이를 더 느낍니다. 이는 규칙서에 실제로 적어 넣을 수 없다는 것을 의미합니다.
그래서 답변을 쓰려고 노력하는 것을 멈추고, 대신 답변을 판단하기 시작합니다. 모델에게 동일한 프롬프트(prompt)에 대해 두 가지 응답을 생성하게 합니다. 이 둘을 사람에게 보여주고 어느 것이 더 좋은지 물어봅니다. 단지 그 비교, 그것을 반복하는 것입니다. 그런 다음 인간의 선택을 예측하도록 두 번째 모델을 훈련시켜서, 모든 답변에 점수를 매길 수 있게 합니다. 이제 당신은 '좋은 응답', 아무도 정의할 수 없었던 것을 숫자로 바꾼 것입니다. 그리고 숫자는 주 모델(main model)이 추구할 수 있는 무언가입니다. 당신은 이 모델이 이미 배운 합리적인 스크립트에서 너무 멀리 벗어나지 않도록 제지하는 목줄을 가지고, 점수를 더 높게 유지하도록 조정하게 합니다.
이것이 바로 인간 피드백 기반 강화학습(Reinforcement Learning from Human Feedback, RLHF)이며, 여기서 매너가 나옵니다. 어조, 거절, 주의 사항을 추가하려는 본능, 그리고 당신이 문자 그대로 입력한 것보다 당신이 의도했던 것을 파악하려고 노력하는 방식까지 모두 '이것이 저것보다 낫다'라는 수많은 사례들에서 추출된 것입니다. (기계 장치 역시 점점 더 단순해지고 있습니다. DPO라고 불리는 2023년 방법은 별도의 점수 매기는 모델과 강화학습 루프를 건너뛰고, 인간의 선택 쌍에 직접 훈련할 수 있음을 보여주었습니다. 이는 보기보다 작은 또 다른 해결책이었습니다.)
이 단계는 사람들이 신화화하는 단계이기 때문에, 명확히 짚고 넘어가야 할 두 가지가 있습니다. 첫째, 이것은 중립적이지 않습니다. 그러한 선호도(preferences)는 특정 가이드라인을 따르는 특정 인간들로부터 나온 것입니다. 모델의 공손함과 그 한계선(lines in the sand)은 누군가가 내린 선택이지, 자연의 법칙이 아닙니다. 둘째, "평가자가 좋아한 것"을 위해 최적화(optimizing)하는 방식에는 알려진 실패 모드(failure mode)가 있습니다. 모델은 당신에게 동의하고 자신감 있게 들리는 것이 승리하는 경향이 있다는 것을 학습하며, 따라서 때때로 당신이 듣고 싶어 하는 말을 할 것입니다. 당신이 훈련시킨 그 취향은 모델이 바로 이용(gaming)하기 시작할 취향입니다.
당신이 실제로 대화하고 있는 것
세 번의 라운드를 쌓아 올리면 전체 레시피가 깔끔하게 분해됩니다. 다른 모든 것을 잊더라도 이 부분만큼은 기억해 두시기 바랍니다.
규모(scale)에 의해 공급되는 사전 학습(Pretraining)은 지식과 유창함을 쏟아붓습니다. 이는 엄청난 양의 지식을 알고 있지만 당신의 존재는 전혀 모르는 무언가를 구축합니다. 지시어 튜닝(Instruction tuning)은 그 수많은 목소리 중 보조자(assistant)를 골라내어 앞으로 밀어내며, 그 모든 지식이 마침내 질문하는 사람을 향하게 합니다. 그다음 선호도 튜닝(Preference tuning)은 "이것이 저것보다 더 낫다"라는 과정을 반복하며 판단력과 매너를 다듬어 나가고, 마침내 이 결과물이 쾌적하며 낯선 사람에게 건네주기에 대체로 안전한 상태가 되도록 만듭니다.
이것이 한 호흡에 담긴 전체 궤적입니다. 모든 것을 알고 있지만 도와주지는 않는 예측기(predictor). 정해진 대본만 있고 취향은 없는 조력자. 그리고 가끔씩 그 취향을 이용하는 모델. 기초(foundation)가 학습을 수행하면, 그 위의 두 레이어는 각각 아래 레이어가 남겨둔 결함을 수정합니다. 당신은 정확히 어떤 라운드가 모델에게 어떤 특성을 부여했는지 지목할 수 있습니다.
당신이 대화하는 인격은 가장 겉면의 코팅(top coat)입니다. 가공되지 않은 다음 단어 예측기(next-word predictor) 위에 의도적으로 덧칠해진 얇고 정교한 마감재입니다. 그것을 긁어내면, 인터넷이 하는 방식대로 당신의 텍스트를 이어갈 준비가 된 즉흥 연기 모방꾼(improv mimic)이 여전히 그 아래에 남아 있습니다.
다시 한번, 화려하지 않은 진실
아키텍처 포스트와 마찬가지로 결론은 동일하며, 이것이 정직한 결론이라고 생각합니다. 이것을 만들기 위해 지능에 대한 이론이 필요했던 사람은 아무도 없습니다. 그들에게 필요했던 것은 실제 학습을 강제하게 된 단순한 목적 함수 (objective), 규모 확장 (scale)이 보상받을 것이라고 말해주는 곡선, 그리고 결과물을 사용할 수 있게 만들기 위한 두 차례의 "아니, 이런 식으로"라는 과정이었습니다. 단어를 예측하게 하세요. 그것에게 직무를 보여주세요. 취향에 따라 코칭하세요.
제가 인정하는 것은, 여기서의 판독 가능성 (legibility)은 아키텍처 때보다 더 빨리 소진된다는 점입니다. 지름길과 재확장 (rescale)은 완전히 따라갈 수 있습니다. 하지만 이 정도 규모에서 다음 단어를 추측하는 것이 어떻게 대화를 나눌 수 있는 무언가를 만들어내는지에 대해서는, 아직 아무도 당신에게 확실히 말해줄 수 없습니다. 우리는 그것을 구축하고, 조종하고, 측정할 수 있습니다. 하지만 우리는 그것을 대부분 설명하지 못합니다. 그것이 미지의 영역이며, 제가 실제로 포스트를 읽고 싶은 부분입니다. 저는 아직 그에 관한 글을 쓸 수 없습니다. 왜냐하면 제가 알기로는, 아직 아무도 쓸 수 없기 때문입니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기