2017년 Google의 “Attention Is All You Need” 논문에서 소개된 Transformer는 모든 현대 LLM의 기반 아키텍처입니다. Transformer가 왜 혁신적인지 이해하려면, 이전 NLP 기술들의 발전 과정을 아는 것이 중요합니다. 자세한 내용은 NLP에서 LLM까지: 발전사를 참고하세요.
왜 Transformer가 혁신적인가?
Transformer 이전에는 RNN(순환 신경망)이 텍스트를 순차적으로 처리했습니다. “나는 오늘 회사에서 점심을 먹었다”라는 문장을 처리할 때 RNN은 “나는” → “오늘” → “회사에서” → … 순서대로 읽어야 했습니다. 이 방식에는 두 가지 치명적 문제가 있었습니다:- 병렬 처리 불가: 단어를 하나씩 순서대로 처리해야 해서 학습이 느림
- 장거리 의존성 문제: 문장이 길어지면 앞부분의 정보를 “잊어버림”
성공 비유: RNN은 책을 한 글자씩 읽으면서 앞 내용을 점점 잊어가는 독자와 같습니다. Transformer는 책 전체를 펼쳐놓고 어떤 부분이든 즉시 참조할 수 있는 독자입니다.
Self-Attention: Transformer의 핵심 엔진
Self-Attention은 “이 단어가 문장 내 다른 모든 단어와 얼마나 관련 있는지” 를 수치로 계산하는 메커니즘입니다. 예를 들어, “그 개발자는 코드를 작성했고, 그는 매우 만족했다”라는 문장에서 Self-Attention은 “그는”이 “개발자”와 높은 관련도를 가진다는 것을 계산합니다. 이를 통해 대명사, 문맥적 의미, 장거리 참조를 정확히 파악합니다. 동작 과정 (직관적 설명):- 각 토큰은 세 가지 벡터를 생성: Query(질문), Key(열쇠), Value(값)
- Query와 Key의 유사도를 계산 → Attention Score (어떤 단어에 주목할지)
- Score에 따라 Value를 가중 합산 → 문맥을 반영한 새로운 표현 생성
| 구성 요소 | 역할 | 설명 |
|---|---|---|
| Self-Attention | 문맥 파악 | 입력 토큰 간 관계를 계산 |
| Multi-Head Attention | 다양한 관점 | 여러 Attention을 병렬 수행 (문법, 의미, 참조 등 각각 다른 패턴 학습) |
| Feed-Forward Network | 변환 | 각 위치의 표현을 비선형 변환 |
| Positional Encoding | 순서 정보 | 토큰의 위치 정보를 부여 (Transformer는 순서를 모르므로 명시적 추가 필요) |
| Layer Normalization | 안정화 | 학습 안정성을 위한 정규화 |
Multi-Head Attention 심화: 왜 여러 개의 Head가 필요한가?
위 표에서 Multi-Head Attention이 “여러 Attention을 병렬 수행”한다고 설명했습니다. 그런데 왜 여러 개가 필요할까요? 하나의 Attention으로는 부족한 걸까요? 20년간 AI 시스템을 구축하면서 깨달은 직관이 있습니다: 언어에는 동시에 존재하는 여러 겹의 관계가 있습니다. 하나의 Attention Head는 한 번에 한 종류의 관계만 잘 포착합니다. 각 Head가 학습하는 패턴 예시(GPT 계열 모델의 실제 분석 결과):| Head | 학습하는 패턴 | 예시 |
|---|---|---|
| Head 1 | 문법적 관계(주어-동사) | “개발자** 가코드 를작성 했다**” → 주어-동사 연결 |
| Head 2 | 의미적 유사성 | ”Python은 AI에 적합한 언어 다” → “언어”와 “Python”의 의미 연결 |
| Head 3 | 대명사 참조(Coreference) | “김 부장은 보고서를 작성했고, 그는 만족했다” → “그”→“김 부장” |
| Head 4 | 인접 토큰 관계 | 바로 옆 단어와의 관계 (구문 분석) |
| Head 5 | 장거리 의존성 | 문장 시작과 끝의 논리적 연결 |
| Head 6 | 구분자/구조 패턴 | 괄호, 따옴표, 목록 구조 인식 |
- 문법 관계: “팀장은” → “칭찬했다” (주어-동사)
- 대명사 해석: “그의” → “김 대리의”, “그를” → “김 대리를”
- 시간 관계: “어제” → “해결했고” / “칭찬했다”
- 인과 관계: “해결했고” → “칭찬했다” (원인-결과)
참고 실무 인사이트: GPT-4 계열 모델은 약 96~128개의 Head를 사용합니다. Head 수를 줄이면 모델이 작아지고 빨라지지만, 복잡한 문장에서의 이해력이 떨어집니다. 이것이 소형 모델이 “간단한 질문은 잘 답하지만 복잡한 문맥에서 실수”하는 핵심 원인 중 하나입니다.
Positional Encoding 심화: 왜 위치 정보가 필요한가?
RNN은 단어를 순서대로 처리하므로 위치 정보가 자연스럽게 내재 되어 있습니다. “나는 밥을 먹었다”에서 “나는”이 첫 번째, “밥을”이 두 번째라는 것을 처리 순서 자체가 알려줍니다. 그러나 Transformer의 Self-Attention은 모든 토큰을 동시에 병렬 처리 합니다. 이 말은 “나는 밥을 먹었다”와 “먹었다 밥을 나는”이 Attention 계산에서 동일한 결과 를 낸다는 뜻입니다. 순서가 사라지는 것이죠. 따라서 위치 정보를 명시적으로 주입 해야 합니다. Positional Encoding 방식 비교:| 방식 | 사용 모델 | 원리 | 장점 | 단점 |
|---|---|---|---|---|
| Sinusoidal(고정) | 원래 Transformer (2017) | sin/cos 함수로 위치별 고유 벡터 생성 | 학습 불필요, 이론적으로 무한 길이 일반화 | 실제로는 긴 시퀀스에서 성능 저하 |
| Learned(학습) | BERT, GPT-2 | 위치별 벡터를 학습 파라미터로 설정 | 데이터에 최적화된 위치 표현 | 학습 시 본 최대 길이를 초과하면 작동 불가 |
| RoPE(Rotary) | Llama, Mistral, GPT-NeoX | 토큰 임베딩을 위치에 따라 “회전” | 상대적 위치 인코딩, 긴 컨텍스트에 유리 | 구현 복잡도 약간 높음 |
| ALiBi | BLOOM, MPT | Attention Score에 위치 기반 패널티 추가 | 추가 파라미터 없음, 길이 일반화 우수 | RoPE 대비 채택률 낮음 |
Encoder vs Decoder 구조: 왜 GPT는 Decoder-only인가?
원래 Transformer 논문(2017)은 Encoder-Decoder 구조를 제안했습니다. 하지만 현재 대부분의 LLM은 Decoder-only 구조를 사용합니다. 이 차이를 이해하면 모델 선택에 큰 도움이 됩니다. 세 가지 구조 비교:| 구조 | 대표 모델 | Attention 방식 | 최적 용도 |
|---|---|---|---|
| Encoder-only | BERT, RoBERTa | 양방향 (전체 문맥 참조) | 분류, 감성분석, 유사도 계산 |
| Decoder-only | GPT, Llama, Claude | 단방향 (왼쪽→오른쪽, 미래 토큰 차단) | 텍스트 생성, 대화, 범용 |
| Encoder-Decoder | T5, BART, 원래 Transformer | Encoder=양방향, Decoder=단방향+Cross-Attention | 번역, 요약, 입력→출력 변환 |
주의 실무 모델 선택 가이드: 텍스트 분류, 감성 분석, 유사도 계산에는 BERT 계열(Encoder-only)이 더 효율적이고 저렴합니다. “모든 것을 GPT-4로” 접근하지 마세요. 단순 분류 작업에 GPT-4를 쓰는 것은 F1 카레이서에게 출퇴근 운전을 시키는 것과 같습니다.
다음: 핵심 개념 >