Skip to main content
< LLM 기초 목차로 돌아가기
2017년 Google의 “Attention Is All You Need” 논문에서 소개된 Transformer는 모든 현대 LLM의 기반 아키텍처입니다. Transformer가 왜 혁신적인지 이해하려면, 이전 NLP 기술들의 발전 과정을 아는 것이 중요합니다. 자세한 내용은 NLP에서 LLM까지: 발전사를 참고하세요.

왜 Transformer가 혁신적인가?

Transformer 이전에는 RNN(순환 신경망)이 텍스트를 순차적으로 처리했습니다. “나는 오늘 회사에서 점심을 먹었다”라는 문장을 처리할 때 RNN은 “나는” → “오늘” → “회사에서” → … 순서대로 읽어야 했습니다. 이 방식에는 두 가지 치명적 문제가 있었습니다:
  1. 병렬 처리 불가: 단어를 하나씩 순서대로 처리해야 해서 학습이 느림
  2. 장거리 의존성 문제: 문장이 길어지면 앞부분의 정보를 “잊어버림”
성공 비유: RNN은 책을 한 글자씩 읽으면서 앞 내용을 점점 잊어가는 독자와 같습니다. Transformer는 책 전체를 펼쳐놓고 어떤 부분이든 즉시 참조할 수 있는 독자입니다.

Self-Attention: Transformer의 핵심 엔진

Self-Attention은 “이 단어가 문장 내 다른 모든 단어와 얼마나 관련 있는지” 를 수치로 계산하는 메커니즘입니다. 예를 들어, “그 개발자는 코드를 작성했고, 그는 매우 만족했다”라는 문장에서 Self-Attention은 “그는”이 “개발자”와 높은 관련도를 가진다는 것을 계산합니다. 이를 통해 대명사, 문맥적 의미, 장거리 참조를 정확히 파악합니다. 동작 과정 (직관적 설명):
  1. 각 토큰은 세 가지 벡터를 생성: Query(질문), Key(열쇠), Value(값)
  2. Query와 Key의 유사도를 계산 → Attention Score (어떤 단어에 주목할지)
  3. 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구분자/구조 패턴괄호, 따옴표, 목록 구조 인식
사고 실험: “만약 Head가 1개라면?” “김 대리는 어제 서버 장애를 해결했고, 그의 팀장은 그를 칭찬했다”라는 문장을 처리한다고 가정합시다.
  • 문법 관계: “팀장은” → “칭찬했다” (주어-동사)
  • 대명사 해석: “그의” → “김 대리의”, “그를” → “김 대리를”
  • 시간 관계: “어제” → “해결했고” / “칭찬했다”
  • 인과 관계: “해결했고” → “칭찬했다” (원인-결과)
Head가 1개라면, 이 4가지 관계를 하나의 Attention Score로 동시에 표현 해야 합니다. 이는 마치 한 장의 사진으로 빛의 색상, 밝기, 깊이를 모두 표현하려는 것과 같습니다. Multi-Head는 각각의 관계를 독립적인 채널 에서 포착한 뒤 합성합니다.
참고 실무 인사이트: 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토큰 임베딩을 위치에 따라 “회전”상대적 위치 인코딩, 긴 컨텍스트에 유리구현 복잡도 약간 높음
ALiBiBLOOM, MPTAttention Score에 위치 기반 패널티 추가추가 파라미터 없음, 길이 일반화 우수RoPE 대비 채택률 낮음
RoPE가 긴 컨텍스트에 필수인 이유: 현대 LLM의 128K~1M 토큰 컨텍스트 윈도우를 가능하게 한 핵심 기술이 RoPE입니다. RoPE는 절대 위치가 아닌 상대적 위치 를 인코딩합니다. “3번째 토큰”이 아니라 “두 토큰 앞에 있는 것”으로 관계를 표현합니다. 이것이 왜 중요할까요? Learned Positional Encoding으로 학습된 모델은 학습 시 본 최대 길이(예: 2048 토큰)를 넘어서면 위치 정보가 없어서 성능이 급격히 떨어집니다. 반면 RoPE는 상대적 거리만 중요하므로, 학습 시 보지 못한 더 긴 시퀀스에서도 위치 관계를 합리적으로 추론할 수 있습니다. Llama 모델이 8K로 학습한 후 RoPE 스케일링으로 128K까지 확장한 것이 대표적 사례입니다.

Encoder vs Decoder 구조: 왜 GPT는 Decoder-only인가?

원래 Transformer 논문(2017)은 Encoder-Decoder 구조를 제안했습니다. 하지만 현재 대부분의 LLM은 Decoder-only 구조를 사용합니다. 이 차이를 이해하면 모델 선택에 큰 도움이 됩니다. 세 가지 구조 비교:
구조대표 모델Attention 방식최적 용도
Encoder-onlyBERT, RoBERTa양방향 (전체 문맥 참조)분류, 감성분석, 유사도 계산
Decoder-onlyGPT, Llama, Claude단방향 (왼쪽→오른쪽, 미래 토큰 차단)텍스트 생성, 대화, 범용
Encoder-DecoderT5, BART, 원래 TransformerEncoder=양방향, Decoder=단방향+Cross-Attention번역, 요약, 입력→출력 변환
Masked Self-Attention의 원리 (Decoder): Decoder에서는 텍스트를 왼쪽에서 오른쪽으로 생성합니다. “나는 오늘 점심을”이라는 텍스트를 생성 중이라면, “점심을” 다음 토큰을 예측할 때 아직 생성하지 않은 미래 토큰을 볼 수 없어야 합니다. 이것이 Masked Self-Attention 입니다. 학습 시에는 정답 전체 문장이 주어지지만, 미래 토큰 위치의 Attention Score를 -무한대(마스킹) 로 설정하여 정보가 흐르지 않게 합니다. 이렇게 하면 학습과 추론의 동작이 일관되면서도, 학습 시에는 모든 위치를 병렬로 처리할 수 있습니다. Cross-Attention (Encoder-Decoder 모델): 번역 모델처럼 입력과 출력이 다른 구조(예: 영어→한국어)에서는 Decoder가 Encoder의 출력을 참조해야 합니다. 이때 Cross-Attention 이 사용됩니다. Decoder의 Query가 Encoder의 Key-Value를 참조하는 방식입니다. “왜 GPT는 Decoder-only인가?”에 대한 직관적 설명: GPT의 핵심 목표는 “다음 토큰 예측” 입니다. 이 과제는 본질적으로 단방향입니다 — 이전 토큰들을 보고 다음을 예측하는 것이지, 미래 토큰을 보고 예측하는 것이 아닙니다. Decoder-only 구조는 이 과제에 가장 자연스러운 아키텍처 입니다. 반면 BERT의 목표는 “빈칸 채우기(Masked Language Modeling)” 입니다. “나는 [MASK] 먹었다”에서 [MASK]를 예측할 때 “나는”도, “먹었다”도 참조해야 합니다. 따라서 양방향 Attention이 필요하고, Encoder-only 구조가 적합합니다.
주의 실무 모델 선택 가이드: 텍스트 분류, 감성 분석, 유사도 계산에는 BERT 계열(Encoder-only)이 더 효율적이고 저렴합니다. “모든 것을 GPT-4로” 접근하지 마세요. 단순 분류 작업에 GPT-4를 쓰는 것은 F1 카레이서에게 출퇴근 운전을 시키는 것과 같습니다.

다음: 핵심 개념 >