Skip to main content

Transformer 아키텍처

"Attention Is All You Need" — RNN 없이 Attention만으로 시퀀스를 처리하는 혁명적 아키텍처


📌 이 글의 목적

Transformer는 현대 AI의 기반 아키텍처임. GPT, BERT, Claude, Gemini, Llama 모두 Transformer 기반. 이 글은 Transformer의 내부 동작을 수학적 직관과 함께 이해하는 것이 목표.


1. 왜 Transformer인가

RNN의 한계Transformer의 해결
순차 처리 → 병렬화 불가Self-Attention → 완전 병렬 처리
긴 시퀀스 → 기울기 소실어떤 위치든 직접 참조 → 장거리 의존성
학습 느림GPU 활용 극대화 → 대규모 학습 가능

2. Self-Attention 메커니즘

2.1 Query, Key, Value

모든 토큰이 세 가지 벡터를 가짐:

벡터역할비유
Query (Q)"나는 무엇을 찾고 있는가"검색어
Key (K)"나는 어떤 정보를 가지고 있는가"문서 제목
Value (V)"내가 제공할 실제 정보"문서 내용

2.2 Attention 계산

Attention(Q, K, V) = softmax(Q · Kᵀ / √dₖ) · V

단계별:

  1. Q와 K의 내적 → 각 토큰 쌍의 유사도(관련성) 점수
  2. √dₖ로 나눔 → 값이 너무 커지는 것 방지 (Softmax 안정화)
  3. Softmax → 확률로 변환 (합계 = 1)
  4. V와 곱셈 → 관련 있는 토큰의 정보를 가중합으로 수집

💡 핵심 직관: "나는 밥을 먹었다"에서 "먹었다"를 처리할 때, Query("먹었다")와 Key("밥을")의 내적이 크므로 → "밥을"의 Value에 높은 가중치를 줌 → "먹었다"의 출력에 "밥을"의 정보가 많이 반영됨.

2.3 Masked Self-Attention (디코더용)

GPT(Decoder-only)에서는 미래 토큰을 참조하면 안 됨 (다음 토큰 예측이 목표이므로).

Mask를 적용하여 현재 위치 이후의 토큰에 대한 Attention을 -∞로 설정 → Softmax 후 0이 됨.


3. Multi-Head Attention

3.1 왜 여러 개의 헤드인가

하나의 Attention은 하나의 관점에서만 관계를 포착함. 여러 헤드를 병렬로 실행하면 다양한 관계를 동시에 포착 가능.

항목설명
헤드 수보통 8, 16, 32, 64개 (모델 크기에 비례)
각 헤드의 차원d_model / 헤드 수
효과다양한 관계 패턴을 병렬로 학습

4. Positional Encoding

4.1 왜 필요한가

Self-Attention은 순서를 모름. "나는 밥을 먹었다"와 "밥을 나는 먹었다"가 같은 Attention 결과를 냄. 위치 정보를 별도로 주입해야 함.

4.2 방법

방법원리사용
사인/코사인sin/cos 주파수로 위치 인코딩원래 Transformer
학습 가능 임베딩위치별 벡터를 학습✅ GPT, BERT
RoPE (Rotary PE)회전 행렬로 상대적 위치 인코딩Llama, 최신 LLM
ALiBiAttention에 위치 기반 페널티일부 모델

5. Transformer 전체 구조

5.1 Encoder-Decoder (원래 Transformer)

5.2 핵심 컴포넌트

컴포넌트역할
Multi-Head Self-Attention토큰 간 관계 학습
Feed-Forward Network각 토큰 독립적으로 비선형 변환 (2층 MLP)
Layer Normalization학습 안정화
Residual Connection기울기 소실 방지 (ResNet에서 가져옴)
Positional Encoding순서 정보 주입

6. 세 가지 변형

변형핵심대표 모델주요 용도
Encoder-only양방향 Attention. 입력 전체를 동시에 봄BERT, RoBERTa분류, 임베딩, NER
Decoder-onlyMasked Attention. 왼→오 단방향GPT, Claude, Llama텍스트 생성, LLM
Encoder-Decoder인코더의 출력을 디코더가 Cross-Attention으로 참조T5, BART번역, 요약

7. Transformer가 강력한 이유

이유설명
병렬 처리모든 토큰을 동시에 처리 → GPU 활용 극대화
장거리 의존성모든 토큰이 모든 토큰을 직접 참조 (O(n²))
스케일링모델/데이터를 키우면 예측 가능하게 성능 향상 (Scaling Law)
범용성텍스트, 이미지(ViT), 음성, 비디오, 단백질 구조까지

다음 글

LLM Overview — 대규모 언어 모델의 진화, Scaling Law, 추론 최적화


📝 참고 자료