LLM의 작동 원리 완벽 가이드: 트랜스포머 아키텍처의 비밀

인공지능 기술이 급격하게 발전하면서 GPT, Claude, LLaMA 등 대규모 언어 모델(LLM)은 이미 우리의 일상과 업무 깊숙이 자리 잡았다.
많은 사람이 LLM이 보여주는 놀라운 답변 능력에 감탄하지만, 정작 이 기술이 내부적으로 어떤 원리에 의해 작동하는지 명확히 이해하는 경우는 드물다.

LLM은 단순히 마법처럼 문장을 만들어내는 것이 아니다. 인간이 사용하는 복잡한 언어 체계를 철저하게 수학적 연산과 데이터 흐름으로 변환하여 처리하는 거대한 ‘텍스트 처리 공장’과 같다.
이 공장의 핵심 뼈대가 바로 트랜스포머(Transformer) 아키텍처이다. 입력된 문장이 어떤 단계를 거쳐 처리되고, 어떻게 다음 단어를 정확하게 예측해 내는지 그 구체적인 파이프라인을 상세하게 파헤쳐 본다.

1. 텍스트를 기계의 숫자로, 토크나이징(Tokenization)

컴퓨터는 본질적으로 ‘사과’, ‘바나나’ 같은 인간의 글자를 직접 이해하지 못한다. 컴퓨터가 이해할 수 있는 것은 오직 숫자뿐이다. 따라서 LLM이 문장을 입력받았을 때 가장 먼저 수행하는 작업은 문장을 아주 작은 글자 조각으로 쪼개고, 각 조각에 고유한 일련번호를 부여하는 것이다. 이 과정을 토크나이징(Tokenization)이라고 하며, 쪼개진 글자 조각을 토큰(Token)이라고 부른다.

ㄱ. 토큰화의 메커니즘과 사전(Vocabulary)의 역할

토크나이저(Tokenizer)는 미리 정의된 단어 사전(Vocabulary)을 가지고 있다.
문장이 입력되면 이 사전을 바탕으로 가장 효율적인 형태로 글자를 분리한다. 영어의 경우 단어 전체가 하나의 토큰이 되기도 하고, ‘structured’라는 단어가 ‘structure’와 ‘d’로 쪼개지기도 한다.
한글의 경우 형태소 단위나 자음, 모음의 결합 형태에 따라 고유한 방식으로 토큰화가 진행된다. 이렇게 쪼개진 토큰들은 사전의 몇 번째에 위치하는지에 따라 고유한 정수 ID(예: 1425번, 893번)로 변환된다.

참조사례
LLM이 “strawberry에 r이 몇 개 있어?”라는 질문에 올바르게 답하지 못하고 엉뚱한 숫자를 말하는 현상이 자주 목격됐음. 이는 인간이 s-t-r-a-w-b-e-r-r-y라는 개별 철자를 보는 것과 달리, LLM은 ‘strawberry’라는 단어 자체를 하나의 통째로 묶인 토큰 ID(예: 4592번)로 인식하기 때문에 내부 철자를 직관적으로 세지 못해서 발생한 한계점이었음.

2. 숫자에 의미를 부여하는 단어 임베딩(Embeddings)

토크나이징을 통해 문장이 정수 ID의 배열로 바뀌었지만, 이것만으로는 부족하다.
컴퓨터 입장에서 1425번과 1426번은 단지 1이 차이 나는 숫자일 뿐, 두 단어가 서로 비슷한 뜻을 가졌는지 전혀 알 수 없다. 이때 필요한 과정이 바로 임베딩(Embedding)이다.

ㄱ. 고차원 벡터 공간 속의 단어 좌표

임베딩 단계에서는 고유 정수 ID로 된 토큰을 수천 차원의 숫자로 이루어진 리스트, 즉 ‘벡터(Vector)’로 변환한다. 쉽게 말해, 거대한 의미 공간 속에 단어의 고유한 ‘주소(좌표)’를 부여하는 작업이다.

이 의미 공간에서는 놀라운 일이 일어난다. 비슷한 의미를 지닌 단어들은 공간상에서 서로 가까운 거리에 위치하게 된다. 예를 들어 ‘고양이’와 ‘강아지’는 임베딩 공간에서 매우 가까운 좌표를 가지며, ‘자동차’와 ‘비행기’ 역시 서로 인접한 영역에 배치된다.

[Embedding Space Diagram: King – Man + Woman = Queen]

이러한 벡터 연산을 통해 LLM은 단어 사이의 유추 관계를 수학적으로 계산할 수 있게 된다. 가장 대표적인 예시로 임베딩(왕) - 임베딩(남자) + 임베딩(여자)를 계산하면 임베딩(여왕)의 좌표와 가장 가까운 결과가 나오는 현상이 확인됐음. 이는 기계가 단어의 추상적인 의미적 관계를 다차원 공간에서 파악하고 있음을 증명하는 증거이다.

3. 문장의 순서를 학습하는 위치 인코딩(Positional Encoding)

트랜스포머 아키텍처는 과거의 순차적 모델(RNN 등)과 달리 문장의 모든 토큰을 한 번에 동시에 입력받아 병렬로 처리한다.
이는 연산 속도를 엄청나게 끌어올렸지만, 한 가지 치명적인 문제를 발생시켰다. 단어들을 한꺼번에 공장에 집어넣다 보니 단어의 ‘순서’를 구분하지 못하게 된 것이다.
“사람이 곰을 물었다”와 “곰이 사람을 물었다”라는 두 문장은 사용된 토큰이 완전히 같기 때문에, 순서 정보가 없다면 LLM은 두 문장을 동일하게 인식하게 된다.

ㄱ. 회전 벡터를 활용한 RoPE(Rotary Position Embedding)의 도입

문제를 해결하기 위해 단어의 의미 임베딩 벡터에 위치 정보를 더해주는 위치 인코딩(Positional Encoding)이 수행된다. 최신 LLM 아키텍처에서는 주로 RoPE(Rotary Position Embedding)라는 정교한 방식이 사용된다.

RoPE는 단어의 의미를 담은 다차원 벡터를 고유한 각도만큼 회전시키는 방식이다.
첫 번째 단어는 10도 회전, 두 번째 단어는 20도 회전시키는 방식으로 3차원 공간에서 벡터를 비틀어줌으로써 단어 고유의 의미는 보존한 채, 문장 속에서 몇 번째에 위치하는지에 대한 상대적인 거리 정보를 명확하게 각인시킨다. 이 과정을 거쳐야 비로소 모델은 문맥 속에서의 어순을 완벽하게 이해하게 된다.

4. 문맥 파악의 핵심, 멀티 헤드 어텐션(Multi-Head Attention)

트랜스포머 아키텍처의 알파이자 오메가는 바로 어텐션(Attention) 메커니즘이다. 어텐션은 문장 내의 모든 토큰이 서로를 바라보며, 어떤 단어가 어떤 단어와 깊은 연관성을 지니고 있는지 점수를 매기고 정보를 교환하는 단계이다.

ㄱ. Query, Key, Value의 수학적 상호작용

어텐션 프로세스는 데이터베이스에서 정보를 검색하는 과정과 유사하다. 각 토큰은 내부 연산을 통해 세 가지 종류의 벡터로 변환된다.

Query (질문): “내가 지금 이 단어인데, 나와 관련된 맥락을 가진 단어가 누구지?” 하고 주변에 던지는 질문이다.

Key (키): “나는 이런 성격의 단어야” 하고 자신의 정체성을 나타내는 명함이다.

Value (값): 실제 그 단어가 품고 있는 본질적인 의미 정보이다.

특정 단어의 Query 벡터와 문장 내 다른 모든 단어의 Key 벡터를 곱하는 ‘내적(Dot Product)’ 연산을 수행하면, 두 단어가 얼마나 연관되어 있는지 나타내는 ‘어텐션 점수’가 산출된다.
이 점수를 바탕으로 가중치를 부여하여 모든 단어의 Value 벡터를 합치게 된다. 결과적으로 각 단어는 혼자 고립된 의미가 아니라, 주변 문맥이 듬뿍 스며든 살아있는 맥락적 의미로 업데이트된다.

5. 멀티 헤드(Multi-Head)로 입체적 맥락 읽기

하나의 문장 안에는 다양한 관계가 공존한다. 주어와 동사의 관계, 대명사가 가리키는 대상의 관계, 수식어와 피수식어의 관계 등이 복잡하게 얽혀 있다.
이를 한 번에 완벽히 잡아내기 위해 LLM은 어텐션 연산을 동시에 여러 개 독립적으로 실행하는데, 이를 멀티 헤드 어텐션(Multi-Head Attention)이라고 한다.

예를 들어 8개의 헤드를 사용한다면, 1번 헤드는 문법적인 주술 관계에 집중하고, 2번 헤드는 대명사가 무엇을 지칭하는지 추적하며, 3번 헤드는 시간적 배경을 파악하는 식으로 역할을 나누어 문장을 입체적이고 다각적으로 분석하게 된다.

6. 지식을 결합하고 정제하는 피드 포워드 네트워크(Feed-Forward Network)

멀티 헤드 어텐션을 통과하면서 각 토큰은 풍부한 문맥 정보를 흡수하게 된다.
하지만 이 정보들은 아직 가공되지 않은 상태이다. 이렇게 취합된 문맥 정보를 모델이 기존에 학습하여 보유하고 있던 거대한 지식 데이터베이스와 결합하는 공간이 바로 피드 포워드 네트워크(FFN)이다.

ㄱ. 비선형 활성화 함수를 통한 지식의 축적

FFN은 각 토큰 위치에서 독립적으로 작동하는 인공신경망 층이다. 어텐션을 통해 수집된 다차원 벡터를 훨씬 더 넓은 고차원 공간으로 확장했다가 다시 원래 크기로 압축하는 과정을 거친다. 이 과정에서 ReLU, GELU, SwiGLU 등의 비선형 활성화 함수가 사용된다.

어텐션이 단어와 단어 사이의 ‘관계’를 연결해 주는 역할이라면, FFN은 모델의 수많은 파라미터(매개변수) 속에 저장되어 있던 ‘세상에 대한 지식’을 꺼내어 현재 문맥에 정교하게 짜 맞추는 역할을 수행함이 확인됐음.
이 단계를 지나면서 토큰 벡터는 최종적으로 다음 단어를 예측하기에 가장 완벽한 형태의 정보 밀도를 갖추게 된다.

7. 다음 토큰 확률 예측과 샘플링

트랜스포머의 수많은 레이어(Layer)를 거치며 최종 진화한 토큰 벡터는 이제 마지막 관문인 출력층(Output Layer)에 도달한다.
LLM의 궁극적인 목표는 단 하나, “지금까지 입력된 문맥을 바탕으로 다음에 올 가장 적절한 단어(토큰)가 무엇인가?”를 맞추는 것이다.

ㄱ. 소프트맥스(Softmax)와 확률 분포의 생성

출력층에서는 모델이 알고 있는 사전(Vocabulary)에 등록된 모든 단어에 대해 점수를 매긴다. 사전의 크기가 5만 개라면 5만 개의 단어 각각에 대한 점수가 출력된다. 이 점수 배열에 소프트맥스(Softmax) 함수를 적용하면 모든 단어의 점수 합이 1(100%)이 되는 깨끗한 ‘확률 분포’로 변환된다.

예를 들어 “동해 물과 백두산이”라는 문장이 입력되었다면, 사전에 있는 수많은 단어 중 ‘마르고'(85%), ‘닳도록'(10%), ‘산이'(1%), ‘강물이'(0.1%) 같은 형태로 확률이 계산되는 방식이다.

ㄱ. 생성의 맛을 결정하는 샘플링 파라미터

확률 분포가 만들어졌다고 해서 무조건 1등 확률을 가진 단어만 선택하는 것은 아니다.
항상 가장 높은 확률의 단어만 고르면 모델의 답변이 지나치게 기계적이고 뻔해지며, 똑같은 답변만 반복하게 된다. 따라서 텍스트의 창의성과 무작위성을 조절하기 위해 몇 가지 하이퍼파라미터를 적용한다.

파라미터 명칭주요 기능 및 특징효과
Temperature (온도)확률 분포의 평탄도를 조절함. 값이 낮으면 1등 단어에 집중되고, 높으면 확률이 낮은 단어도 선택될 기회가 생김.낮추면 정밀하고 논리적인 글, 높이면 창의적이고 다양한 글이 생성됨.
Top-P (Nucleus Sampling)상위 누적 확률이 P% 이내에 드는 후보 단어 군만 남기고 나머지는 제외하는 방식임.엉뚱하고 맥락에 전혀 맞지 않는 단어가 선택되는 것을 원천 차단함.
Top-K확률 순위가 상위 K개 안에 드는 단어들만 후보로 제한하고 샘플링을 진행함.답변의 일관성을 유지하고 궤변을 늘어놓는 현상을 방지함.

조절된 확률 분포 속에서 최종적으로 하나의 토큰이 무작위 샘플링을 통해 선택된다. 선택된 토큰은 다시 모델의 입력창으로 들어가 기존 문장 뒤에 붙게 되며, 이 전체 파이프라인을 처음부터 다시 반복하면서 한 글자씩 문장을 완성해 나간다.

8. 아키텍처와 가중치(Weights)의 조화

우리가 마주하는 놀라운 성능의 LLM은 정교하게 설계된 수학적 아키텍처와, 수조 개의 텍스트 데이터를 읽으며 정밀하게 조정된 가중치(Weights)가 결합한 결과물이다.

오픈소스 모델인 LLaMA나 거대 기업의 GPT 시리즈 모두 근본적으로 사용하는 트랜스포머 파이프라인의 뼈대는 놀라울 정도로 유사하다.
차이를 만드는 것은 얼마나 질 좋은 데이터로 오래 학습시켰는지, 그리고 인간의 피드백을 반영한 정렬(Alignment) 과정을 얼마나 촘촘하게 거쳤는지에 달려 있다.

텍스트를 쪼개고, 공간에 배치하고, 관계를 엮어 다음 글자를 유추해 내는 이 정교한 수학적 공장의 원리를 이해한다면, 프롬프트를 작성할 때나 인공지능의 한계를 분석할 때 훨씬 더 깊이 있고 입체적인 시각을 가질 수 있을 것이다.

이 글을 이해하고 싶어서 AI랑 공부하다가 작성 [LINK]

텍스트 입력 ➡️ 2. Tokenization (숫자로 쪼개기) ➡️ 3. Embeddings (의미 부여하기) ➡️ 4. Positional Encoding (순서 가르쳐주기) ➡️ 5. Attention (단어 간 관계 파악하기) ➡️ 6. Feed-Forward Network (지식 결합하기) ➡️ 7. 다음 토큰 예측 (출력)

댓글 남기기