//
자연어를 컴퓨터가 처리하려면 단어를 숫자로 변환해야 한다. 가장 단순한 방법은 **원-핫 인코딩(One-Hot Encoding)**으로, 어휘 크기만큼의 벡터에서 해당 단어 위치만 1로 표시하는 방식이다. 그러나 이 방법은 두 가지 치명적인 문제가 있다.
Word2Vec은 이 문제를 해결한 기법이다. 2013년 구글의 토마스 미콜로프가 발표했으며, 단어를 N차원의 밀집 벡터(dense vector)로 변환한다. 이 벡터 공간에서는 의미가 유사한 단어들이 가까이 위치하게 된다.
Word2Vec의 가장 유명한 예시는 벡터 연산으로 단어 관계를 표현할 수 있다는 점이다.
이처럼 단어를 의미 있는 벡터로 변환하는 과정을 **워드임베딩(Word Embedding)**이라 한다. 워드임베딩은 이후 모든 자연어 처리 모델의 기초가 된다.
대규모 데이터로 사전 학습한 모델을 다른 과제에 재활용하는 것이 **전이학습(Transfer Learning)**이다. 처음부터 학습하는 것보다 훨씬 적은 데이터와 시간으로 좋은 성능을 얻을 수 있다.
| 단계 | 내용 | 데이터 규모 |
|---|---|---|
| 사전 학습(Pre-training) | 대규모 범용 데이터로 일반적인 언어 패턴 학습 | 수십억 토큰 이상 |
| 파인튜닝(Fine-tuning) | 특정 과제에 맞춰 모델을 미세 조정 | 수천~수만 건 |
ImageNet으로 사전 학습한 CNN 모델을 의료 이미지 분류에 활용하거나, 대규모 텍스트로 학습한 언어 모델을 감성 분석에 활용하는 것이 대표적인 전이학습 사례다. 이 개념은 BERT와 GPT의 핵심 전략이기도 하다.
인코더-디코더(Encoder-Decoder) 구조, 또는 Seq2Seq(Sequence-to-Sequence) 모델은 입력 시퀀스를 출력 시퀀스로 변환하는 아키텍처다. 기계 번역이 대표적인 활용 사례다.
인코더가 입력 전체를 하나의 고정 길이 벡터로 압축해야 하므로, 입력이 길어질수록 정보 손실이 발생한다. "나는 학생입니다"처럼 짧은 문장은 괜찮지만, 수백 단어의 문장을 하나의 벡터에 담는 것은 물리적으로 한계가 있다. 이 문제를 해결하기 위해 등장한 것이 어텐션 메커니즘이다.
어텐션(Attention) 메커니즘은 2015년 바다나우(Bahdanau)가 제안한 기법으로, RNN 기반 Seq2Seq 모델의 장문 처리 한계를 극복하기 위해 고안되었다.
핵심 아이디어는 단순하다. 디코더가 출력을 생성할 때, 인코더의 모든 시점에 대해 "지금 이 출력에 가장 관련 있는 입력이 무엇인가"를 가중치로 계산하여 참조하는 것이다.
예를 들어 "I am a student"에서 "student"를 생성할 때, 인코더의 "학생"에 높은 가중치를, "나는"에는 낮은 가중치를 부여한다. 이렇게 하면 입력 길이에 관계없이 관련 있는 정보에 선택적으로 집중할 수 있다.
| 기존 Seq2Seq | 어텐션 적용 Seq2Seq |
|---|---|
| 고정 길이 컨텍스트 벡터 하나만 참조 | 인코더의 모든 출력을 가중 참조 |
| 긴 문장에서 정보 손실 | 관련 정보에 선택적 집중 |
| 입력 앞부분 정보가 희석 | 위치에 관계없이 정보 활용 |
2017년 구글의 "Attention is All You Need" 논문에서 제안된 **트랜스포머(Transformer)**는 AI 역사의 가장 중요한 전환점 중 하나다. 핵심 주장은 RNN이나 CNN 없이 어텐션만으로 시퀀스를 처리할 수 있다는 것이었다.
트랜스포머는 인코더와 디코더로 구성되며, 세 가지 유형의 어텐션을 사용한다.
입력 시퀀스 내에서 각 단어가 다른 모든 단어와의 관계를 계산한다. "그 동물은 피곤했기 때문에 길을 건너지 않았다"라는 문장에서, "그"가 "동물"을 가리킨다는 관계를 포착할 수 있다.
셀프 어텐션의 핵심은 Query(Q), Key(K), Value(V) 세 가지 벡터의 연산이다.
Attention(Q, K, V) = softmax(QK^T / sqrt(d_k)) * V
Query는 "무엇을 찾고 있는가", Key는 "나는 어떤 정보를 가지고 있는가", Value는 "내가 제공할 수 있는 실제 정보"로 이해할 수 있다. sqrt(d_k)로 나누는 것은 스케일링으로, 벡터 차원이 커질 때 내적값이 지나치게 커지는 것을 방지한다.
디코더에서는 **마스크드 셀프 어텐션(Masked Self-Attention)**을 사용한다. 출력을 순차적으로 생성하므로, 아직 생성되지 않은 미래의 토큰을 참조하지 못하도록 마스킹 처리한다. 이를 통해 자기회귀적(autoregressive) 생성이 가능해진다.
디코더가 출력을 생성할 때 인코더의 결과를 참조하는 어텐션이다. 기존 Seq2Seq의 어텐션과 유사한 역할을 하지만, RNN 없이 순수하게 어텐션만으로 동작한다.
이 세 가지 어텐션이 결합되어 트랜스포머는 RNN의 순차 처리 한계를 극복하고, 병렬 처리가 가능한 구조를 실현했다. 이것이 대규모 언어 모델을 학습할 수 있게 된 핵심적인 이유다.
| 비교 항목 | RNN | 트랜스포머 |
|---|---|---|
| 처리 방식 | 순차적 (직렬) | 병렬 처리 가능 |
| 장거리 의존성 | 먼 거리의 정보 소실 | 위치에 무관하게 참조 |
| 학습 속도 | 느림 | 빠름 (병렬화 덕분) |
| 확장성 | 제한적 | 대규모 모델로 확장 용이 |
트랜스포머를 기반으로 두 가지 방향의 대규모 언어 모델이 탄생했다.
**BERT(Bidirectional Encoder Representations from Transformers)**는 2018년 구글이 발표한 모델로, 트랜스포머의 인코더를 활용한다. 양방향으로 문맥을 이해하며, 마스크 언어 모델(MLM) 방식으로 사전 학습된다.
**GPT(Generative Pre-trained Transformer)**는 OpenAI가 발표한 모델로, 트랜스포머의 디코더를 활용한다. 왼쪽에서 오른쪽으로 텍스트를 생성하는 자기회귀 방식이다.
| 항목 | BERT | GPT |
|---|---|---|
| 트랜스포머 구성 | 인코더 | 디코더 |
| 문맥 방향 | 양방향 | 단방향 (왼쪽에서 오른쪽) |
| 사전 학습 | 마스크 언어 모델 | 다음 토큰 예측 |
| 강점 | 이해 과제 (분류, QA) | 생성 과제 (텍스트, 코드) |
7부는 이 책에서 가장 분량이 크고 핵심적인 파트다. Word2Vec에서 시작하여 어텐션, 트랜스포머, 그리고 BERT와 GPT로 이어지는 흐름을 순서대로 따라가면, 현재 AI를 이끌고 있는 대규모 언어 모델의 전체 그림이 잡힌다.
7부는 현대 AI의 핵심인 대규모 언어 모델의 기술적 토대를 체계적으로 설명한다. 워드임베딩이 단어를 숫자로 바꾸는 문제를 해결하고, 어텐션이 긴 시퀀스의 정보 손실 문제를 해결했으며, 트랜스포머가 병렬 처리를 가능하게 만들었다. 이 세 가지 발전이 결합되어 오늘날의 GPT, BERT를 비롯한 대규모 언어 모델이 탄생할 수 있었다.