티스토리 뷰

반응형

딥러닝 기초학습 9: Transformer 구조 완전 해부 — Encoder·Decoder·Multi-Head Attention이 왜 이렇게 생겼는가


Attention을 이해하고 나면,
다음 질문은 딱 하나다.

“그래서 이걸 어떻게 ‘모델’로 조립했길래 이렇게 강력해졌지?”

그 답이 바로 Transformer다.

이번 글은 Transformer를
블랙박스가 아니라 기계 구조도처럼
머릿속에 그려지게 만드는 글이다.


1. Transformer 한 줄 정의

“RNN 없이, Attention만으로 시퀀스를 처리하는 최초의 딥러닝 아키텍처”

Transformer는

  • 순차 계산 ❌
  • 기억 전달 ❌
  • 대신 Self-Attention + 병렬 처리

이 선택 하나로 NLP의 판이 바뀌었다.


2. Transformer의 큰 그림

입력 토큰
 → Embedding
 → Positional Encoding
 → [ Encoder × N ]
 → [ Decoder × N ]
 → Linear
 → Softmax

핵심은 Encoder와 Decoder가 같은 블록을 반복한다는 점이다.
(“깊이”는 반복 횟수로 만든다)


3. Encoder 블록 내부 구조 (진짜 중요)

Encoder 하나를 뜯어보면 항상 이 순서다.

Input
 → Multi-Head Self-Attention
 → Add & Norm
 → Feed Forward Network
 → Add & Norm

왜 이렇게 생겼을까?

(1) Self-Attention

  • 입력 문장 안에서 단어 간 관계를 계산
  • 장거리 의존성 해결

(2) Add & Norm (Residual + LayerNorm)

반응형
  • gradient 흐름 안정화
  • 깊은 네트워크 학습 가능

(3) Feed Forward Network (FFN)

  • 각 토큰을 독립적으로 변환
  • 비선형 표현력 강화

👉 Encoder는
“문장 전체의 관계를 이해한 뒤,
각 단어를 한 번 더 똑똑하게 바꿔주는 블록”
이다.


4. Decoder는 왜 더 복잡할까?

Decoder 블록은 Encoder보다 한 단계 더 많다.

Input
 → Masked Multi-Head Self-Attention
 → Add & Norm
 → Encoder-Decoder Attention
 → Add & Norm
 → Feed Forward Network
 → Add & Norm

Decoder에만 있는 두 가지 포인트

① Masked Self-Attention

  • 미래 단어를 보지 못하게 막는다
  • 오토리그레시브 생성의 핵심

예:
“나는 오늘 ___” 을 예측할 때
아직 안 나온 단어를 보면 안 됨

② Encoder-Decoder Attention

  • Decoder가 Encoder의 출력을 참조
  • 번역에서 “입력 문장 ↔ 출력 단어” 정렬

5. Multi-Head Attention은 왜 필요한가?

“Attention 하나면 충분하지 않나?”
아니다. 시야가 너무 단일하다.

직관적 이유

사람도 문장을 볼 때

  • 문법 관계
  • 의미 관계
  • 위치 관계
    동시에 본다.

Multi-Head Attention은:

  • 같은 문장을
  • 여러 관점(head) 으로 병렬 분석한다.
Input
 → Head 1 (문법)
 → Head 2 (의미)
 → Head 3 (거리)
 → ...
 → Concat
 → Linear

그래서 표현력이 폭발적으로 증가한다.


6. Positional Encoding — 순서 정보는 어디서 오나?

Transformer는 순서를 “기억”하지 않는다.
그래서 순서를 숫자로 알려줘야 한다.

그게 Positional Encoding이다.

핵심 개념

  • 각 위치(position)에 고유한 벡터 추가
  • 토큰 임베딩 + 위치 임베딩

수식은 몰라도 된다. 핵심은 이것:

“단어 의미 + 위치 정보”를 합쳐서 입력한다

이 덕분에

  • “고양이가 사람을 물었다”
  • “사람이 고양이를 물었다”
    를 구분할 수 있다.

7. Transformer 학습 흐름 요약

1) 입력 문장 → Encoder
2) Encoder 출력 → 전체 문맥 벡터
3) Decoder는 이전 출력 + Encoder 정보로 다음 토큰 예측
4) 이 과정을 병렬로 학습

이 구조 덕분에:

  • 학습은 매우 빠르고
  • 문맥 이해는 매우 강해졌다

8. PyTorch로 Transformer 핵심 구조 맛보기

아래는 실제 Transformer 구성 요소를 그대로 쓰는 코드다.

import torch
import torch.nn as nn

d_model = 512
nhead = 8

encoder_layer = nn.TransformerEncoderLayer(
    d_model=d_model,
    nhead=nhead,
    dim_feedforward=2048
)

encoder = nn.TransformerEncoder(
    encoder_layer,
    num_layers=6
)

src = torch.randn(10, 32, d_model)  # (seq_len, batch, d_model)
out = encoder(src)

print(out.shape)  # (10, 32, 512)

✔ 실무에서도 쓰는 공식 API
✔ 구조 이해용으로 최고


9. Transformer가 RNN/LSTM을 완전히 대체한 이유

항목RNN/LSTMTransformer

계산 방식 순차 병렬
장거리 의존성 약함 강함
학습 속도 느림 빠름
구조 복잡 단순 반복
확장성 제한 매우 높음

이 차이 때문에:

  • BERT
  • GPT
  • T5
  • 모든 최신 LLM
    이 Transformer 기반이다.

10. Transformer의 철학 (이걸 기억하자)

Transformer는 단순한 모델이 아니다.

  • ❌ 기억을 쌓아두지 않는다
  • 관계를 계산한다
  • ❌ 순서를 따라가지 않는다
  • 전체를 동시에 본다
  • ❌ 구조를 복잡하게 만들지 않는다
  • 단순 블록을 반복한다

이 철학이
대규모 학습 + 확장성과 완벽하게 맞아떨어졌다.


11. 요약 정리

구성 요소역할

Encoder 입력 문장 이해
Decoder 출력 문장 생성
Self-Attention 문맥 관계 계산
Multi-Head 다양한 관점 학습
FFN 비선형 변환
Add & Norm 안정적 학습
Positional Encoding 순서 정보 주입

 

딥러닝,Transformer,EncoderDecoder,MultiHeadAttention,SelfAttention,PositionalEncoding,NLP,LLM,딥러닝기초,PyTorch

※ 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/04   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
글 보관함
반응형