본문 바로가기

AI 이야기

ChatGPT의 원리가 궁금하다면? 비전공자도 쉽게 이해하는 LLM 작동 방식

반응형

대형 언어 모델(LLM)은 ChatGPT, Claude, Bard와 같이 아주 똑똑한 척하며 사람의 언어로 말하고 답변해주는 인공지능 모델을 말합니다. 이번 글에서는 복잡한 수학이나 컴퓨터 공학 지식 없이, 일상적인 비유와 구체적인 예시를 통해 LLM의 작동 원리를 쉽게 설명해보겠습니다. 스마트폰 자동완성 기능부터 퍼즐이나 레고 블록에 비유해 가며, LLM이 언어를 어떻게 배우고 이해하며 문장을 만들어내는지 하나씩 알아봅시다.

LLM이란 무엇일까?

LLM은 방대한 양의 텍스트 데이터를 읽고 학습한 초대형 인공지능 언어 모델입니다. 예를 들어 오픈AI의 ChatGPT, 구글의 Bard, Anthropic의 Claude 등이 모두 LLM에 속합니다. 이 모델들은 책, 웹사이트, 논문, 소셜 미디어 글 등 인터넷상의 수많은 문서를 읽고 그 패턴을 배웠기 때문에, 마치 사람처럼 자연스러운 문장을 생성할 수 있습니다linkedin.com. 규모가 “대형”이라고 불리는 이유는 학습에 사용되는 데이터 양과 모델 내부의 연결 노드(파라미터) 수가 엄청나게 크기 때문입니다. 실제로 GPT-3 같은 모델은 1750억개 이상의 파라미터를 가지고 있고, 이를 통해 방대한 지식을 내포하고 있죠aws.amazon.com. 요약하면, LLM이란 엄청나게 큰 뇌를 가진 자동완성기라고 볼 수 있습니다.

  • 한 마디로: “엄청난 양의 글을 읽고 스스로 언어 감각을 익힌 거대 똑똑이”라고 이해하면 됩니다. 이 똑똑이는 질문에 답하고, 글을 요약하고, 번역을 하는 등 여러 가지 작업을 한 모델로 할 수 있어 매우 유용합니다aws.amazon.com.

컴퓨터가 언어를 '이해한다'는 것은?

LLM이 질문에 답을 잘하고 글을 그럴듯하게 쓰니 “컴퓨터가 언어를 이해한다”고 말하기도 합니다. 하지만 여기서 “이해”는 우리가 사람의 이해와는 조금 다릅니다. 컴퓨터의 이해 = 패턴 인식이라고 할 수 있습니다. LLM은 인간처럼 의미를 깨닫거나 의도를 파악하는 의식이 있는 것이 아니라, 훈련 데이터에서 본 언어 패턴을 바탕으로 다음에 올 가능성이 높은 단어들을 예측하는 것입니다linkedin.com. 그래서 때로는 그럴싸한 거짓 정보를 사실처럼 만들어내거나 앞뒤가 맞지 않는 말을 하기도 합니다. 연구자들 사이에서도 “LLM은 실제로 언어를 이해한다기보다, 그저 다음 올 단어를 매우 그럴듯하게 맞추는 예측기일 뿐”이라는 견해가 있을 정도입니다nature.com.

예를 들어, 사람은 문장을 이해할 때 배경 지식과 실제 경험을 동원하지만, LLM은 그런 실제 경험 없이 텍스트 간의 통계적 상관관계만 배웁니다. 그럼에도 불구하고 워낙 방대한 문장을 학습한 덕분에, 마치 정말로 이해한 것처럼 유창하고 적절한 답변을 만들어낼 수 있는 것이죠. 요컨대 LLM의 “이해”는 진짜 이해라기보다는 통계적 패턴 맞추기 능력에 가깝지만, 충분히 데이터를 많이 보면 결과적으로 사람 말과 흡사한 출력을 낼 수 있습니다.

대형 언어 모델은 어떻게 학습할까?

그렇다면 이런 LLM은 어떻게 배우는 것일까요? 사람은 언어를 선생님이나 책을 통해 배우지만, LLM은 방대한 텍스트를 스스로 읽으며 배웁니다. 구체적으로는 자기지도학습(self-supervised learning)이라는 방식으로 훈련되는데, 간단히 말하면 문장에서 다음에 올 단어를 맞히는 게임을 수백억 번 반복하면서 언어 패턴을 익히는 것입니다aws.amazon.com.

훈련 과정은 다음과 같이 이뤄집니다:

  1. 우선 인터넷에 있는 수많은 문장을 모델에게 보여줍니다. 예를 들어 문장 “나는 오늘 학교에 갔다.”가 있다면, 모델에게 “나는 오늘 학교에 ___.”처럼 일부를 가리고 빈칸에 들어갈 단어를 맞춰보라고 퀴즈를 냅니다.
  2. 모델이 처음에는 무작위로 답을 하겠지만, 점점 정답을 맞출 때마다 모델 내부의 파라미터(연결 가중치)를 조금씩 조정하여 오답은 줄이고 정답 확률을 높이도록 학습시킵니다aws.amazon.com.
  3. 이런 과정을 엄청나게 많은 텍스트에 대해 반복합니다. 예를 들어 소설, 뉴스, 위키백과 문서 등 무수한 문장에서 다음 단어 맞추기 퀴즈를 시키는 겁니다.
  4. 결국 모델은 “단어들의 연결 패턴”을 통계적으로 학습하게 되고, 문법적으로 올바르고 의미상 그럴듯한 문장을 만드는 법을 배우게 됩니다.

이렇게 학습된 LLM은 이제 새로운 문장이 주어져도 다음 단어를 예측할 수 있을 만큼 언어의 규칙과 패턴을 터득한 상태가 됩니다. 사람으로 치면 수많은 책을 읽고 나서야 비로소 글쓰는 감을 잡는 것과 비슷합니다.

🔍 비유: LLM의 훈련을 스마트폰 자동완성 기능에 빗댈 수 있습니다. 우리가 휴대폰 자판으로 “안녕히 계세요”라고 치려고 하면, “안녕히”까지만 입력해도 자동완성이 “계세요”를 제안해주는 경우가 있죠. 휴대폰은 이전에 많은 사용자가 “안녕히” 다음에 “계세요”를 쓴 패턴을 학습했기 때문에 그렇게 제안하는 것입니다. LLM도 이와 마찬가지로, 방대한 문서에서 단어들의 이어지는 경향을 학습하여 다음에 올 말을 제안해주는 것이라고 볼 수 있습니다. 다만 그 규모와 복잡성이 휴대폰 자동완성과는 비교도 안 될 정도로 크고 정교할 뿐입니다.

 

'토큰'이란 무엇인가?

LLM 이야기를 하다 보면 “토큰(token)”이라는 말을 자주 듣게 됩니다. 토큰은 LLM이 텍스트를 처리하는 가장 작은 단위를 말하는데요wikidocs.net. 쉽게 말해 단어 혹은 단어 조각이라고 생각하면 됩니다. 우리가 책을 읽을 때 글자를 한 자 한 자 읽기보다는 단어 단위로 의미를 파악하듯이, LLM도 문장을 토큰 단위로 쪼개서 인식합니다.

 

예를 들어 "She ate the pizza."라는 영어 문장이 있다면, 이를 5개의 토큰 ["She", "ate", "the", "pizza", "."]로 쪼갤 수 있습니다.

 

한국어의 경우도 띄어쓰기나 의미 단위에 따라 토큰으로 나누는데, 간단히 말해 한 문장을 구성하는 조각들이라고 생각하면 됩니다. 토큰은 꼭 완전한 단어일 필요는 없고, 긴 단어를 몇 부분으로 나누거나 흔히 쓰이는 어미/접미사 등을 분리하기도 합니다. 예를 들어 영어에서 "playing"이라는 단어를 ["play", "##ing"]처럼 둘로 분리할 수도 있고, 한국어에서 "먹었습니다"를 ["먹", "었습니다"]로 나눌 수도 있습니다. 이는 새로운 단어가 나와도 일부분을 보고 처리하기 위해서인데요. LLM은 문장을 이렇게 분해된 토큰들의 연속으로 받아들여서 처리하게 됩니다.

토큰 개념이 중요한 이유는 모델이 인식하는 입력과 출력의 단위이기 때문입니다. LLM의 입력 문장은 토큰 시퀀스로 변환되고, 모델이 한 번에 생성하는 것도 토큰 단위입니다. 따라서 LLM의 맥락 길이(context length)도 “최대 몇 개의 토큰까지 한 번에 처리할 수 있는가”로 표현합니다. 예를 들어 GPT-4 기반 ChatGPT는 한 번에 최대 8,000토큰 내외(약 몇 천 단어 분량)의 문맥을 처리할 수 있고, Claude 2 모델은 최대 100,000토큰(수백 페이지 분량)의 입력을 넣을 수 있다고 알려져 있습니다aws.amazon.com. 이처럼 토큰은 언어 모델이 바라보는 언어의 기본 단위이며, 레고 블록처럼 작지만 의미를 지닌 조각들이라고 할 수 있습니다.

트랜스포머(Transformer)란 무엇인가?

LLM의 혁신적인 성능 뒤에는 트랜스포머(Transformer)라는 모델 구조가 있습니다. 트랜스포머는 2017년 구글이 발표한 딥러닝 모델 구조로, 이전까지 쓰이던 순환신경망(RNN)의 한계를 넘어서 언어 처리의 판도를 바꿔놓은 기술입니다aws.amazon.com. 이름만 들으면 로봇 변신 자동차가 떠오를 수도 있지만 😉, 여기서는 언어를 변환(transform)한다는 의미로 쓰였습니다. 트랜스포머의 핵심 개념은 "어텐션(attention)"이라는 아이디어인데, 이를 쉽게 풀어보겠습니다.

 

트랜스포머 모델은 여러 층(layer)의 신경망으로 이루어진 레고 블록 탑과 같습니다. 왼쪽 탑은 인코더(Encoder), 오른쪽 탑은 디코더(Decoder)를 비유한 것으로 볼 수 있는데요. 인코더와 디코더에는 여러 층의 작은 블록 조각들이 쌓여 있습니다. 각 층마다 어텐션피드포워드 신경망이라는 두 가지 블록이 존재하고, 이 블록들이 층층이 쌓여 언어를 처리합니다blog.codewithdan.comblog.codewithdan.com. 마치 레고를 한 층 한 층 쌓아 올리면 단순한 블록들이 모여 거대한 구조물을 만들듯이, 트랜스포머도 단어들의 관계를 층층이 분석하여 깊은 의미 구조를 만들어냅니다blog.codewithdan.com.

트랜스포머에서 어텐션(attention) 메커니즘은 각 단어(토큰)가 다른 단어들을 얼마나 중요하게 여길지 결정하는 과정입니다. 이를 쉽게 비유하면, 퍼즐 맞추기에 비유할 수 있습니다. 여러 개의 퍼즐 조각(단어 조각)들이 있을 때, 어떤 조각들은 서로 모양이 맞물리고 그림이 이어지죠. 트랜스포머의 어텐션은 한 단어 조각이 다른 조각들을 일일이 살펴보며 “내가 이 문장에서 의미를 만들 때, 누구랑 맞출 수 있을까?” 하고 중요도를 매기는 과정입니다. 예를 들어 “철수는 사과를 먹었다”라는 문장에서 “먹었다”라는 토큰은 “철수”와 “사과”와 강하게 연결될 것입니다. 누구가 먹었고, 무엇을 먹었는지가 중요하니까요. 트랜스포머는 이러한 단어들 사이의 관계를 어텐션으로 파악하고 반영합니다blog.codewithdan.comblog.codewithdan.com. 쉽게 말해, 문장 안의 모든 단어들이 서로를 들여다보며 중요한 정보에 집중한다고 생각하면 됩니다.

또한 트랜스포머는 멀티헤드 어텐션(multi-headed attention)이라는 기법으로 한 번에 다양한 관점으로 단어 간 관계를 살펴봅니다. 이는 마치 여러 명의 퍼즐 맞추기 전문가들이 각기 다른 기준(색깔, 모양, 위치 등)으로 퍼즐을 동시에 맞춰보고, 최종적으로 그 결과를 종합하는 것과 비슷합니다. 이렇게 하면 문장의 구문 구조, 의미, 문맥 등 여러 측면을 한꺼번에 고려할 수 있어 더 풍부한 이해가 가능합니다medium.commedium.com.

어텐션 블록을 지나면 피드포워드 신경망 블록이 나오는데, 이는 어텐션이 끝난 후 각 토큰의 정보를 더 정제하고 변환하는 역할을 합니다blog.codewithdan.comblog.codewithdan.com. 다시 퍼즐에 비유하면, 앞서 어텐션 단계에서 퍼즐 조각들을 맞춰봤다면, 피드포워드 단계에서는 퍼즐 조각들을 다듬고 정확한 위치에 끼워넣는 작업에 해당합니다. 결국 트랜스포머의 한 층을 통해 단어들은 서로의 관련성을 고려해 표현값이 조정되고, 이런 층이 여러 번 반복되면서 최종적으로 문장의 의미있는 표현이 완성됩니다.

🔍 비유 요약: 트랜스포머 = 레고로 쌓은 퍼즐 맞추기 팀이라고 할 수 있습니다. 각 단어 토큰이 레고 블록처럼 여러 층의 구조 안에서 자리를 찾아가는데, 어텐션이라는 팀워크를 통해 “어느 블록이 어느 블록과 연결되어야 전체 구조가 완성될지”를 고민하고, 그 다음 피드포워드 단계에서 블록을 제자리에 꽂아 넣는 셈입니다. 예전의 RNN 모델이 앞에서부터 차례로 단어를 처리했다면aws.amazon.com, 트랜스포머는 문장 전체를 한꺼번에 바라보면서 퍼즐을 맞추기 때문에 더 효율적이고 정교한 언어 이해가 가능해졌습니다.

모델은 문장을 어떻게 만들어낼까?

이제 LLM이 문장을 실제로 생성하는 과정을 알아보겠습니다. 원리는 앞서 설명한 것처럼 “다음에 올 토큰을 예측”하는 것입니다. 사용자가 프롬프트(질문이나 문장의 앞부분)를 입력하면, 모델은 그 프롬프트를 해석하여 가장 그럴듯한 다음 단어(토큰)를 하나 선택합니다. 그리고 그 단어를 출력해 프롬프트에 이어붙입니다. 그 상태에서 다시 이어붙인 프롬프트 끝에서 다음 토큰을 또 예측합니다. 이러한 과정을 반복함으로써 문장이 한 단어씩 길어져 가며 완성되는 것이죠.

예를 들어, 사용자가 “고양이는”이라는 프롬프트를 입력했다고 가정해봅시다. 모델은 “고양이는” 다음에 올 수 있는 말을 생각해봅니다. 과거 학습을 바탕으로 “고양이는 귀엽다”, “고양이는 동물이다”, “고양이는 밤에 활동한다” 등 여러 후속 어구의 가능성을 떠올릴 수 있습니다. 이때 각각의 후보에 대해 확률 점수를 매깁니다. 가령 모델이 판단하기에 “귀엽다”가 0.6의 확률, “동물이다”가 0.3, “밤에”가 0.1의 확률로 예상되었다면 가장 높은 “귀엽다”를 선택할 가능성이 높습니다. 그래서 첫 출력을 “귀엽다”로 내보내면 문장은 “고양이는 귀엽다”가 됩니다.

이후에는 프롬프트가 “고양이는 귀엽다”로 업데이트된 상태에서 다시 다음 토큰을 예측합니다. 만약 이어서 “.”(마침표)가 가장 적절하다고 판단되면 마침표를 출력하고 문장을 끝낼 수 있습니다. 또는 창의적인 글쓰기 모드라면 확률이 꼭 가장 높은 것만 고르지 않고 약간 무작위성을 주어 "동물이다", "사냥을 잘한다" 등 다른 이어지는 내용을 만들 수도 있습니다. 결과적으로 LLM은 이렇게 한 토큰씩 예측하고 붙이는 작업을 아주 빠르게 여러 번 반복하여 인간이 보기에 매끄러운 한 문단의 글도 순식간에 작성해냅니다.

한 가지 예시를 더 들어볼까요? “어제 축구 경기에서 우리 팀이 골을 많이 넣어서”라는 문장이 입력이라면, 사람이라면 자연스럽게 “이겼다”라는 말을 떠올릴 것입니다. LLM도 훈련 과정에서 수없이 비슷한 문맥을 접했기 때문에, “골을 많이 넣어서 ___” 다음에는 “이겼다”가 어울린다는 것을 압니다. 따라서 모델은 “이겼다”를 생성해서 문장을 “어제 축구 경기에서 우리 팀이 골을 많이 넣어서 이겼다.”라고 완성하게 됩니다. 이렇듯 LLM은 앞의 맥락을 고려해 가장 그럴듯한 단어를 하나씩 이어붙이는 방식으로 답변이나 글을 만들어내는 것입니다.

  • 요약: LLM이 문장을 만들어내는 모습은 마치 초능력 자동완성과 같습니다. 우리는 키보드 자판 위에서 다음 단어를 하나 추천받는 데 그치지만, LLM은 문장 단위, 아니 문단 단위로도 자연스럽게 이어서 작성할 수 있는 것이죠. 이는 모두 다음에 올 단어를 잘 예측하는 능력 덕분입니다. LLM 내부에서는 우리가 볼 수는 없지만, 방대한 어휘와 패턴 정보가 동원되어 매 순간 다음 단어의 확률을 계산하고, 가장 적절한 단어를 선택하는 일이 벌어지고 있습니다.

맺음말: LLM을 이해하는 열쇠

지금까지 LLM, 즉 대형 언어 모델의 원리를 쉽게 풀어서 설명해보았습니다. 요약하자면, LLM은 엄청난 양의 텍스트 데이터를 통해 언어 패턴을 학습한 모델로, 단어를 작은 토큰 단위로 처리하며 트랜스포머 구조를 통해 문맥을 파악합니다. 복잡한 내부 구조를 모두 몰라도, “다음에 올 말을 예측하는 똑똑한 자동완성”이라는 관점으로 보면 LLM의 동작을 직관적으로 이해할 수 있습니다. 인간처럼 세상을 실제로 경험하거나 진짜 의미를 아는 것은 아니지만, 워낙 많은 글을 읽고 배운 덕분에 언어적으로 그럴듯한 문장을 만들어내는 능력을 갖춘 것이지요.

기술적인 내용은 한없이 깊어지지만, 기본 개념은 생각보다 단순합니다. 앞으로 ChatGPT나 다른 AI 챗봇과 대화할 일이 있다면, “이 모델이 방대한 글을 읽고 나서 지금 내게 가장 적절한 다음 말을 떠올려 이어가고 있구나” 하고 이해하며 사용할 수 있을 것입니다. 이런 기본 원리를 알고 나면, LLM을 더 현명하게 활용할 수 있고, 또 한계를 인지하는 데도 도움이 될 것입니다.

반응형