My AI Smarteasy 사용자 정의 코파일럿 에이전트 – 일타강사 저스틴 – 트랜스포머, ChatGPT가 트랜스포머로 만들어졌죠

트랜스포머, ChatGPT가 트랜스포머로 만들어졌죠. – DL5 – YouTube

 

일타 강사 저스틴입니다! 여러분, 오늘 제가 준비한 강의는 바로 ‘3Blue1Brown 한국어’ 채널의 “트랜스포머, ChatGPT가 트랜스포머로 만들어졌죠.”라는 유튜브 스크립트를 기반으로 합니다. 이 영상은 정말 많은 분들이 궁금해하시는 ChatGPT 같은 인공지능 모델이 과연 우리 눈에는 보이지 않는 그 내부에서 어떻게 작동하는지, 그 원리를 아주 시각적이고 명쾌하게 설명해주고 있어요.

자, AI 시대의 핵심 기술! 지금부터 저와 함께 파헤쳐 봅시다!


[일타 강사 저스틴의 특강] ChatGPT의 심장, ‘트랜스포머’ 완전 해부! (1강: 기본 개념과 단어의 변신)

여러분, 요즘 가장 핫한 AI라고 하면 단연 ChatGPT를 떠올리실 겁니다. 이 친구, 도대체 어떻게 그렇게 사람처럼 대화를 하고 글을 써낼까요? 그 비밀의 핵심에는 바로 **’트랜스포머(Transformer)’**라는 녀석이 숨어 있습니다.

[0:00 – 3:03] LLM 동작 원리: GPT는 무엇인가?

먼저, ChatGPT의 ‘GPT’가 무슨 뜻인지부터 짚고 넘어갈게요. ‘Generative Pre-trained Transformer’의 약자입니다. ‘Generative’는 ‘생성한다’는 뜻이고, ‘Pre-trained’는 ‘사전 학습되었다’는 뜻이죠. 즉, 방대한 데이터를 미리 학습해서 새로운 것을 ‘생성’하는 모델이라는 얘기입니다. 그리고 이 모든 것의 중심에 바로 **’트랜스포머’**가 있습니다.

이 유튜버는 트랜스포머가 여러 신경망 모델 중 현재 가장 많이 쓰이는 AI 모델 구조라고 강조합니다. 단순히 언어 모델에만 쓰이는 게 아니에요. 음성을 텍스트로, 텍스트를 음성으로 바꾸는 것은 물론이고, 여러분이 그림을 그려달라고 하면 텍스트를 이미지로 만들어주는 달리(DALL-E)나 미드저니(Midjourney) 같은 모델들도 대부분 이 트랜스포머를 기반으로 만들어졌다고 합니다. 정말 다재다능하죠?

그럼 이 트랜스포머는 언제 태어났을까요? 2017년 구글이 발표한 **”Attention Is All You Need“**라는 논문에서 처음 소개되었습니다. 원래는 텍스트를 번역하는 데 개발되었지만, 지금은 보시다시피 ChatGPT의 기반이 되어 텍스트뿐만 아니라 이미지, 음성까지 입력받아 다음에 무엇이 올지’를 예측하는 데 사용되고 있죠. 좀 더 정확히 말하면, 다음에 올 텍스트들의 **’확률 분포’**를 예측하는 겁니다.

자, 이 부분은 별표 세 개입니다! “다음 단어 하나를 예측하는 게 그렇게 대단해?”라고 생각하실 수 있습니다. 하지만 이 유튜버는 이렇게 설명합니다. 만약 AI가 단어 하나를 예측할 수 있다면, 그 예측한 단어를 다시 입력으로 넣고 또 다음 단어를 예측하게 하는 과정을 반복하면, 엄청나게 긴 문장을 계속해서 생성할 수 있다는 겁니다. 마치 꼬리에 꼬리를 무는 연상 게임처럼요! GPT-2 같은 초기 모델은 다음 단어를 예측해도 좀 이상한 문장이 나왔지만, GPT-3에서는 꽤 그럴듯한 이야기가 나오고, 이제는 GPT-5까지 나온다고 하니 그 발전 속도가 엄청나죠. 여러분이 ChatGPT와 대화할 때 글이 따다다닥 나오는 것도 바로 이렇게 한 단어씩 예측하고 생성하기 때문이랍니다.

[3:04 – 6:33] LLM 안으로 들어가 보면: 데이터의 흐름

그럼 이제 트랜스포머 안으로 살짝 들어가 볼까요? 유튜버는 AI 챗봇이 특정 단어를 생성할 때 어떤 일이 일어나는지 큰 틀에서 설명해 줍니다.

  1. 입력을 ‘토큰(Token)’으로 나누기: 먼저, “안녕하세요, 일타 강사 저스틴입니다!”라는 문장이 들어오면, AI는 이 문장을 여러 개의 작은 조각으로 나눕니다. 이걸 **’토큰’**이라고 부르죠. 텍스트의 경우 단어나 단어의 일부, 혹은 다른 문자 조합이 될 수 있고요, 이미지나 음성이라면 그 작은 조각들이 토큰이 됩니다. 마치 레고 블록처럼 잘게 쪼개는 거죠.
  2. 토큰을 ‘벡터(Vector)’로 변환: 각 토큰은 해당 부분의 **’의미’**를 담은 숫자 리스트, 즉 **’벡터’**와 연결됩니다. 이 벡터들은 고차원 공간의 좌표라고 생각하면 돼요. 의미가 비슷한 단어들은 그 공간에서 가까운 곳에 배치되는 경향이 있습니다. “자동차”와 “차량”은 가까이, “자동차”와 “사과”는 멀리 떨어져 있는 것처럼요.
  3. ‘어텐션 블록’에서 정보 주고받기: 이 벡터들은 **’어텐션 블록’**이라는 곳을 통과하면서 서로 정보를 주고받고 값을 업데이트합니다. 이걸 **’어텐션’**이라고 부르는데요, 유튜버는 비유를 들어 설명합니다. “기계 학습 모델”에서의 ‘모델’과 “패션 모델”에서의 ‘모델’은 의미가 다르죠? 어텐션 블록은 다른 단어들과의 관계, 즉 ‘문맥’을 파악해서 현재 단어의 의미를 정확히 정의하고 업데이트합니다. 마치 문장 속에서 단어들의 관계를 꼼꼼히 따져서 진짜 의미를 찾아내는 탐정 같다고 할 수 있겠네요.
  4. ‘피드포워드 네트워크’에서 개별 처리: 그 다음, 이 벡터들은 멀티퍼셉트론이나 피드포워드 네트워크와 같은 추가 연산을 거칩니다. 이 단계에서는 벡터들끼리 정보를 주고받기보다는 각 벡터가 독립적으로 어떤 역할을 하는지 수치를 계산하고 그에 따라 스스로를 업데이트하는 과정이라고 보면 됩니다.
  5. 모든 연산은 ‘행렬 곱셈’의 집합: 이 모든 과정은 사실 거대한 **’행렬 곱셈’**의 집합으로 이루어져 있습니다. 우리는 마치 데이터가 물처럼 흘러가는 것처럼 보지만, 그 안에서는 엄청나게 복잡한 수학적 계산이 실시간으로 이루어지고 있는 거죠. 이 어텐션 블록과 피드포워드 네트워크를 번갈아 통과하면서, 문장이 어떤 의미를 가지고 있는지 최종 벡터에 담아내게 됩니다.
  6. 마지막 벡터에서 확률 분포 생성: 그리고 가장 중요한 부분! 마지막 벡터에 특정 연산을 수행해서 다음에 올 수 있는 모든 토큰(단어 조각들)에 대한 ‘확률 분포’를 생성합니다. “다음으로 올 단어는 ‘사과’일 확률 0.7, ‘바나나’일 확률 0.2…” 이런 식으로요. 챗봇이 대화를 생성할 때는 사용자의 질문(인풋)이 주어졌을 때, AI가 어떻게 대답할지를 예측하도록 ‘시스템 프롬프트’라는 약간의 텍스트가 필요하다고 합니다. 결국 그 대답도 단어 하나하나의 확률 분포를 예측하는 방식은 동일합니다.

[7:20 – 12:26] 딥러닝 훈련의 규칙: 모델의 ‘뇌’는 어떻게 만들어지나?

여러분, 이 복잡한 AI 모델들은 어떻게 그렇게 똑똑해질까요? 유튜버는 딥러닝의 기본적인 훈련 규칙을 설명해 줍니다. 머신러닝은 데이터를 가지고 모델이 어떻게 동작해야 하는지를 스스로 알아내게 하는 방식입니다. 사람이 일일이 규칙을 정해주는 게 아니라, 수많은 입력과 출력 쌍을 주고 모델 안에 있는 **’파라미터(매개변수)’**들을 조절하면서 정답을 찾아가는 과정이죠.

가장 단순한 예시는 **’선형 회귀’**입니다. 주택 면적에 따라 가격을 예측하는 것처럼, 데이터에 가장 잘 맞는 직선을 찾아내는 거죠. 이 직선은 기울기와 Y절편이라는 두 가지 매개변수로 표현되는데, 모델은 이 매개변수를 잘 찾아서 가장 적합한 직선을 만듭니다.

자, 이 부분은 별표 세 개입니다! 딥러닝 모델은 훨씬 더 복잡합니다. 예를 들어 GPT-3에는 무려 1,750억 개의 매개변수가 있다고 합니다. 이 엄청난 수의 매개변수를 효율적으로 훈련하면서 ‘과적합(overfitting)’을 방지하는 것이 매우 중요하죠. 과적합은 모델이 훈련 데이터에만 너무 맞춰져서 실제 새로운 데이터에는 잘 동작하지 않는 현상을 말합니다.

딥러닝 모델들은 모두 **’역전파(Backpropagation)’**라는 동일한 학습 알고리즘을 사용합니다. 이런 학습 알고리즘이 잘 동작하려면 모델은 특정한 규칙을 따라야 하는데요.

  • 모든 입력은 **실수 배열(숫자의 나열)**로 전환되어야 합니다.
  • 이 입력 데이터는 여러 층을 거치면서 조금씩 바뀌지만, 각 층의 출력은 항상 실수 배열이어야 합니다.
  • 모델 매개변수는 대부분 **’가중치(Weight)’**라고 부릅니다. 이 가중치들이 데이터와 직접적으로 곱해지면서 모델이 어떻게 동작할지 결정되기 때문이죠. 비유하자면, 모델의 **’두뇌’**라고 할 수 있습니다.

유튜버는 GPT-3의 1,750억 개 가중치가 사실 28,000개의 서로 다른 행렬로 표현될 수 있으며, 대부분의 계산이 행렬-벡터 곱셈으로 이루어진다는 점을 강조합니다. 이 행렬-벡터 곱셈의 원리를 이해하는 것이 트랜스포머의 동작 원리를 이해하는 데 매우 중요하다고 합니다.

[12:27 – 18:24] 단어 임베딩: 단어, 의미를 담은 숫자로 변신하다!

이제 AI가 텍스트를 처리하는 첫 번째 단계인 **’단어 임베딩’**에 대해 자세히 알아봅시다. 앞서 입력이 ‘토큰’으로 나뉘고 ‘벡터’로 변환된다고 했죠? 이 단계가 바로 단어 임베딩입니다.

모델은 훈련하기 전에 약 5만 개 정도의 단어들로 이루어진 **’사전’**을 미리 정해 놓습니다. 우리가 처음 만나는 행렬인 **’임베딩 행렬(Embedding Matrix)’**은 이 사전의 각 단어에 대응되는 하나의 열을 가지고 있습니다. 이 열들이 각 단어가 어떤 벡터로 변환될지 결정해 줍니다. 처음에는 무작위 값으로 시작하지만, 데이터를 통해 학습되면서 점차 의미 있는 값으로 채워지죠.

단어를 벡터로 변환한다는 것이 좀 이상하게 들릴 수도 있지만, 유튜버는 이를 고차원 공간의 한 점으로 생각하라고 조언합니다. GPT-3에서 사용된 단어 임베딩은 무려 12,288차원입니다. 상상하기 어려운 차원이지만, 중요한 것은 모델이 학습하는 동안 가중치를 조정하면서 결국 공간 속의 방향들이 어느 정도 의미를 가지도록 임베딩이 정리된다는 점입니다.

예를 들어 볼까요?

  • ‘타워(Tower)’라는 단어는 ‘게이트(Gate)’, ‘빌딩(Building)’, ‘스카이스크래퍼(Skyscraper)’ 등과 비슷한 방향을 가지고 있습니다. 비슷한 종류의 단어끼리 가까이 모이는 거죠.
  • 더 재미있는 예시는 **”여자 – 남자 + 왕 = 여왕”**입니다. 남자의 벡터에서 여자의 벡터를 뺀 ‘성별 차이’ 벡터를 왕의 벡터에 더하면 여왕의 벡터와 매우 유사해진다고 합니다. 완벽하진 않지만, AI가 단어들의 관계를 학습해서 이런 규칙성을 찾아낸다는 게 놀랍지 않나요?
  • ‘이탈리아 – 독일 + 히틀러 = 무솔리니’, ‘독일 – 일본 + 스시 = 브라트부어스트(독일 소시지)’ 같은 역사적, 문화적 관계까지 학습하는 것을 보여줍니다.

유튜버는 벡터 간의 유사성을 측정하는 방법으로 **’내적(Dot Product)’**을 소개합니다. 내적은 벡터가 비슷한 방향일 때 양수, 직교할 때 0, 반대 방향일 때 음수가 됩니다. 예를 들어 ‘Cats(고양이들)’라는 복수형 단어에서 ‘Cat(고양이)’이라는 단수형 단어를 뺀 벡터를 ‘복수형의 방향’이라고 가정하고, 다른 복수형 단어인 ‘Puppies(강아지들)’와 내적하면 단수형 단어인 ‘Puppy(강아지)’와 내적했을 때보다 더 높은 값이 나온다고 설명합니다.

결론적으로, 단어가 어떻게 임베딩되는지는 AI가 방대한 데이터를 통해 스스로 학습하는 겁니다. 이 임베딩 행렬은 모델의 첫 번째 가중치 묶음이라고 할 수 있는데, GPT-3의 경우 약 6억 1,700만 개의 가중치로 구성되어 있다고 합니다. 1,750억 개의 파라미터 중 첫 번째 큰 덩어리가 드디어 나왔네요!

[18:25 – 20:21] 임베딩에 대해 더 알아보자: 문맥의 중요성

트랜스포머에서 단어 임베딩은 단순히 개별 단어의 의미뿐만 아니라 ‘위치 정보’도 함께 인코딩할 수 있다는 점이 중요합니다. 나중에 자세히 다루겠지만, 핵심은 임베딩된 벡터가 맥락을 이해할 수 있는 어떤 의미적인 값이 된다는 겁니다.

유튜버는 “왕”이라는 단어의 벡터가 네트워크의 여러 블록을 거치면서 값이 조금씩 바뀌어, 결국에는 “스코틀랜드에 살았던 왕”, “전임 왕을 죽인 인물”, “셰익스피어식으로 표현된 왕” 등 다양한 맥락을 반영하며 발전한다고 설명합니다. 우리가 단어를 이해할 때 주변 정보, 즉 맥락에 따라 의미가 달라지는 것과 똑같죠.

AI 모델을 훈련할 때의 목표는 바로 이런 맥락을 찾아 반영하여 다음 단어를 예측하는 겁니다. 처음에는 단어 자체의 의미만 가지고 시작하지만, 네트워크가 진행될수록 점점 맥락 정보를 파악하게 됩니다. AI가 어디까지 볼지, 즉 **’문맥의 크기(Context Size)’**를 정해줘야 하는데, GPT-3의 경우 이 문맥의 크기가 2,048이었습니다. 이것이 바로 초창기 ChatGPT가 긴 대화에서 대화의 흐름을 뚝뚝 끊기는 것처럼 느껴졌던 이유라고 유튜버는 설명합니다. AI가 한 번에 볼 수 있는 정보의 양이 제한적이었던 거죠.

[20:22 – 22:21] 언임베딩: 예측된 단어로 돌아오는 길

AI가 최종적으로 원하는 출력은 다음에 올 수 있는 **모든 토큰에 대한 ‘확률 분포’**입니다. 예를 들어, 입력에 ‘교수’나 ‘해리 포터’ 같은 단어가 있었다면, 모델은 ‘스네이프’라는 단어에 높은 확률을 부여할 것입니다.

이 과정은 두 단계로 나뉩니다. 먼저, 최종적으로 의미가 담긴 벡터에 **’언임베딩 행렬(Unembedding Matrix)’**을 곱하여 약 5만 개의 숫자 리스트로 만듭니다. 이 리스트는 각 단어가 다음에 올 확률을 나타내는 값이라고 생각하면 됩니다. 그리고 이 리스트를 실제 확률 분포로 정규화하는 함수가 필요한데, 그게 바로 다음에 설명할 ‘소프트맥스(Softmax)’ 함수입니다.

유튜버는 왜 ‘마지막 벡터’만 가지고 예측하는지 궁금해할 수 있다고 말합니다. 그 이유는 훈련 과정의 효율성 때문이라고 합니다. 이 언임베딩 행렬 역시 처음에는 무작위로 시작해서 훈련 과정에서 학습되는 중요한 가중치입니다. 임베딩 행렬과 거의 유사하며, 약 6억 개의 매개변수로 이루어져 있습니다. 이제 대략 10억 개의 매개변수를 채웠네요. 1,750억 개까지는 아직 멀었죠?

[22:22 – 26:02] 소프트맥스: 숫자를 확률로, 온도로 조절하는 창의성

자, 드디어 ‘소프트맥스’ 함수입니다. 이 부분은 별표 세 개입니다! 소프트맥스는 어떤 숫자들의 나열이든 **’확률 분포’**로 바꿔주는 표준적인 방법입니다. 우리가 원하는 확률 분포는 모든 값이 0과 1 사이에 있고, 다 합쳤을 때 1이 되어야 하죠? 딥러닝에서 나오는 출력값은 보통 음수이거나 1보다 큰 경우도 있는데, 소프트맥스가 이걸 말끔하게 해결해 줍니다. 가장 큰 값은 1에 가깝게, 작은 값은 0에 가깝게 만들어줘서 우리가 직관적으로 이해할 수 있는 확률 형태로 만들어줍니다.

조금 더 자세히 말하면, 모든 숫자를 2의 지수(e의 x승)로 올려 양수로 만들고, 그 합으로 각 항목을 나누어 총합이 1이 되도록 정규화합니다. 만약 입력값 중에 유난히 큰 값이 있다면, 소프트맥스 출력에서 그에 해당하는 항목이 거의 확률 분포를 지배하게 됩니다.

여기서 아주 중요한 개념이 나옵니다. 바로 **’온도(Temperature)’**라는 상수입니다. 이 상수를 소프트맥스 함수의 지수 분모에 추가하면 출력되는 확률 분포에 재미있는 변화를 줄 수 있습니다.

  • 온도(T)가 크면: 더 작은 값들이 더 많은 비중을 차지하게 되어 확률 분포가 **’균일’**해집니다. 예측 가능성이 낮은 단어를 선택할 기회가 생겨서 AI의 답변이 **’창의적’**이거나 **’다양’**해질 수 있습니다. 하지만 이 유튜버의 예시처럼 때로는 말도 안 되는 이상한 문장이 나올 수도 있죠.
  • 온도(T)가 작으면: 더 큰 값들이 강해져서 확률 분포가 **’예측 가능’**해집니다. 항상 가장 높은 확률의 단어를 선택하게 되어 AI의 답변이 **’평범’**해지거나 **’안정적’**이 됩니다. 마치 모범생처럼 답하는 거죠.

ChatGPT 같은 모델에서 온도를 특정 값 이상으로 설정할 수 없는 것은 바로 너무 엉뚱한 결과를 만들지 않기 위한 제약이라고 합니다. 소프트맥스의 입력값을 **’로짓(Logits)’**이라고도 부르는데, 이는 다음 단어를 예측하기 위한 최종 출력값으로 소프트맥스에 들어가기 직전의 값이라고 이해하시면 됩니다.


[일타 강사 저스틴의 최종 정리!]

여러분, 오늘 우리는 ChatGPT의 심장인 **’트랜스포머’**의 기본적인 동작 원리를 깊이 있게 들여다봤습니다.

핵심은 다음과 같습니다.

  1. GPT는 방대한 데이터를 사전 학습하여 새로운 것을 **’생성’**하는 모델이며, 그 중심에는 **’트랜스포머’**가 있다.
  2. 트랜스포머는 입력을 작은 의미 단위인 **’토큰’**으로 쪼개고, 이 토큰들을 **’벡터(의미를 담은 숫자)’**로 변환한다.
  3. **’어텐션 블록’**을 통해 이 벡터들이 서로 정보를 주고받으며 ‘문맥’을 파악하고, 단어의 의미를 업데이트한다.
  4. 이 모든 과정은 **거대한 ‘행렬 곱셈’**으로 이루어지며, 모델의 ‘뇌’ 역할을 하는 **’가중치(매개변수)’**들이 데이터를 통해 학습된다.
  5. 특히 **’단어 임베딩’**은 단어에 의미를 부여하는 과정으로, 고차원 공간에서 비슷한 의미의 단어들이 비슷한 방향으로 배치되도록 학습된다. (‘여자-남자+왕=여왕’ 예시 기억나시죠?)
  6. 마지막으로, 모델이 예측한 다음 단어 후보들의 점수(로짓)를 ‘소프트맥스’ 함수를 통해 실제 **’확률 분포’**로 변환한다.
  7. 이때 **’온도(Temperature)’**라는 조절 값을 통해 AI의 답변이 얼마나 창의적일지, 혹은 예측 가능할지를 결정할 수 있다.

이번 영상의 제작자는 다음 영상에서는 **’어텐션 메커니즘’**에 대해 더 깊이 다룰 것이라고 예고했으니, 벌써부터 다음 강의가 기대되네요! 오늘 다룬 내용들이 트랜스포머를 이해하는 튼튼한 기초가 되었기를 바랍니다.

궁금증이 조금이나마 해소되셨길 바라며, 오늘 강의는 여기서 마치겠습니다! 다음 시간에 또 만나요!

About the Author
(주)뉴테크프라임 대표 김현남입니다. 저에 대해 좀 더 알기를 원하시는 분은 아래 링크를 참조하세요. http://www.umlcert.com/kimhn/

Leave a Reply

*