왜 Transformer는 Scaling에 유리한가
이 문서는 AI 전문가가 뉴비에게 설명하듯 작성된 개념 정리입니다. 암기가 아니라 "왜 그런지"를 이해하는 것이 목표입니다.
한 줄 요약
모델을 크게 만들 때 성능이 계속 안정적으로 올라가기 때문이다.
다른 구조(CNN, RNN)는 일정 크기 이상에서 성능이 잘 안 올라가거나 학습이 불안정해진다. Transformer는 그런 문제가 상대적으로 적다.
역사적 맥락
2017년 Google Brain의 논문 Attention Is All You Need가 나오기 전까지, 언어 모델은 RNN과 CNN이 주를 이뤘다. 이 두 구조는 모델을 키울수록 한계가 명확했다. Transformer는 그 한계를 구조적으로 해결했다.
이 문서를 읽고 설명할 수 있어야 하는 핵심 3가지
- RNN/CNN이 Scaling에 불리한 구조적 이유
- Self-Attention이 병렬 처리와 장거리 관계 포착에 유리한 이유
- Transformer의 O(n²) 한계와 후속 연구 방향
처음 보는 사람용 핵심 용어
- Scaling: 모델 크기(파라미터), 데이터, 연산량을 늘리는 것. 성능이 같이 올라가면 "Scaling이 잘 된다"고 한다.
- Vanishing Gradient: 역전파 시 gradient가 앞 레이어로 전달될수록 0에 가까워지는 현상. 긴 시퀀스에서 RNN이 겪는 대표 문제.
- Self-Attention: 같은 문장 안의 토큰끼리 서로 얼마나 관련 있는지 계산하는 메커니즘.
- Power-law Scaling: log-log 그래프에서 직선 패턴. 규모를 10배 늘리면 성능이 일정 비율로 향상된다는 뜻.
- Receptive Field: 모델이 한 번에 볼 수 있는 입력 범위. CNN은 좁고, Transformer는 전체.
1단. RNN이 Scaling에 불리한 이유
RNN은 문장을 순차적으로 처리한다.
단어1 → 단어2 → 단어3 → 단어4 # 앞 단어를 처리해야 다음 단어로 갈 수 있다
이 구조에서 두 가지 문제가 발생한다.
- Vanishing Gradient: 긴 문장에서 초반 토큰의 gradient가 역전파 과정에서 점점 사라진다. 모델이 먼 과거를 기억하지 못한다.
- 병렬 계산 불가: 앞 단계가 끝나야 다음 단계를 계산할 수 있어서 GPU를 풀로 활용하지 못한다.
결론: 파라미터를 늘려도 긴 문맥 학습이 안 되고, 계산 속도도 느려서 대규모 학습에 비효율적이다.
2단. CNN도 Scaling 한계가 있다
CNN의 local receptive field 구조에서, 멀리 떨어진 단어 간 관계를 포착하려면 레이어를 계속 쌓아야 한다.
# 거리 d만큼 떨어진 단어 관계를 보려면
# kernel size 3 기준으로 최소 ceil(d/2) 레이어가 필요하다
needed_layers = math.ceil(distance / (kernel_size // 2))
구조가 복잡해지고 학습이 불안정해진다. Scaling 비효율이다.
3단. Transformer의 핵심 구조
Transformer는 Attention으로 모든 토큰을 동시에 처리한다. 구조는 단순한 레이어 반복이다.
for _ in range(num_layers):
x = self_attention(x) # 모든 토큰을 동시에 처리
x = feed_forward(x) # 각 토큰 독립 변환
# 이것을 layer 수만큼 반복한다
4단. Self-Attention이 장거리 관계를 잘 포착하는 이유
예시 문장: The cat that chased the mouse is black
- Transformer: cat ↔ chased, mouse ↔ chased, cat ↔ is 를 한 번에 직접 연결
- RNN: cat → that → chased → mouse → is 순으로 가야 연결됨
Transformer는 모든 토큰 쌍이 동일한 거리에 있다. 장거리 의존성 포착에서 구조적 우위다.
5단. 병렬 계산과 GPU 활용
LLM 학습은 수천~수만 GPU를 동시에 돌린다. Transformer가 이 구조에 맞는다.
# RNN: 순차 처리 (병렬화 불가)
hidden = h0
for token in sequence:
hidden = rnn_cell(token, hidden) # 이전 결과에 의존
# Transformer: 완전 병렬 처리
outputs = attention(sequence) # 모든 토큰을 한 번에 처리
핵심 수식 정리
① Self-Attention 수식
Attention(Q, K, V) = softmax(Q @ K.T / sqrt(d_k)) @ V
- Q (Query): 현재 토큰이 "무엇을 찾는지"
- K (Key): 각 토큰이 "어떤 정보를 제공하는지"
- V (Value): 실제 전달할 정보
- √d_k: 내적 값이 커지면 softmax gradient가 0에 가까워지는 것을 막기 위한 스케일링
직관: "Q와 K의 유사도를 계산해서, 비슷할수록 V를 많이 가져온다." cat과 chased의 유사도가 높으면 chased의 V값을 cat에 반영한다.
한계: 계산 복잡도가 O(n²)이다. 토큰 수가 늘면 비용이 제곱으로 증가한다.
② Power-law Scaling
L(N) ≈ A * N**(-alpha) + B
# N: 파라미터 수, L: loss, alpha: scaling 지수
직관: 파라미터를 10배 늘리면 loss가 일정 비율로 감소한다. log-log 그래프에서 직선 패턴이 나타난다. Transformer에서만 이 패턴이 안정적으로 성립한다.
6단. 모델 크기 비교
| 모델 | 레이어 수 |
|---|---|
| BERT | 24 |
| GPT-3 | 96 |
| GPT-4 (추정) | 100+ |
레이어 반복 구조이기 때문에 24 → 48 → 96 → 120 으로 계속 쌓을 수 있다. 구조를 바꾸지 않아도 된다.
7단. Transformer의 단점 — O(n²) 문제
Self-Attention의 계산 복잡도는 시퀀스 길이의 제곱에 비례한다.
| 토큰 길이 | 계산량 |
|---|---|
| 1,000 | 1M |
| 10,000 | 100M |
| 100,000 | 10B |
긴 문서 처리 비용이 폭발한다. 이 문제를 해결하기 위한 후속 연구:
- FlashAttention: 메모리 접근 패턴을 최적화해 exact attention을 빠르게
- Sparse Attention: 중요한 토큰 쌍만 선택적으로 계산
- Linear Attention: 커널 근사로 O(n)으로 낮추는 시도
기존 방법과 비교
| 구조 | 장거리 관계 | 병렬화 | Scaling 안정성 |
|---|---|---|---|
| RNN | 어려움 (vanishing gradient) | 불가 | 낮음 |
| CNN | 레이어 증가 필요 | 가능 | 중간 |
| Transformer | 직접 연결 | 완전 병렬 | 높음 |
예상 질문 5개와 답변
- Q1. Transformer가 Scaling에 유리한 가장 근본적인 이유는?
병렬 계산이 가능하고, 레이어 반복 구조가 단순해서 파라미터를 늘려도 학습이 불안정해지지 않기 때문이다. - Q2. RNN 대비 Self-Attention의 장점은?
모든 토큰 쌍을 직접 연결하므로 장거리 의존성을 한 번에 포착할 수 있다. RNN은 순차 처리 때문에 vanishing gradient 문제가 있다. - Q3. Self-Attention의 계산 복잡도가 O(n²)인 이유는?
n개의 토큰 각각이 다른 n개의 토큰과 attention score를 계산하기 때문이다. 총 n×n 연산이 필요하다. - Q4. Scaling Law와 Transformer의 관계는?
Transformer는 parameter/data/compute 세 축 모두에서 power-law 성능 향상이 나타나는 구조다. Scaling Law 연구(Kaplan et al., 2020)의 실험 기반이 됐다. - Q5. Transformer의 O(n²) 문제를 해결하는 방법은?
FlashAttention(메모리 효율), Sparse Attention(선택적 계산), Linear Attention(O(n) 근사) 등의 변형 연구가 이어지고 있다.
다음에 스스로 해볼 실습 2가지
- 작은 Transformer를 직접 구현하고 레이어 수를 2 → 4 → 8로 늘리면서 언어 모델 perplexity 변화를 측정해보기
- 같은 task에서 RNN vs Transformer를 비교하고, 훈련 중 gradient norm 로그를 찍어서 vanishing 현상을 직접 확인해보기