스킬캠퍼스
Day 10 · Transformer
강의

오늘 끝나면

Transformer

  • Self-Attention이 모든 단어의 관계 행렬을 한 번에 계산한다는 점을 이해한다
  • Query·Key·Value를 검색 비유로 설명한다
  • 스케일링과 위치 인코딩이 왜 필요한지 말한다

실습 미션

Attention 행렬에서 '지쳤기'가 '동물은'을 강하게 보도록 단어 방향을 조절한다.

성공 조건

  • 강조 행을 '지쳤기'로 선택
  • 가장 많이 보는 대상이 '동물은'이 되게 만들기
  • ÷√dk 토글을 껐다 켜며 분포 쏠림 차이 확인

AI · Day 10 / 지도학습 · 생성 DL

Attention Is
All You Need

어제까진 RNN에 Attention을 붙였음. 2017년, 구글 8명이 반대로 물음. RNN 빼고 Attention만 남기면? 순차 처리가 사라짐. GPT랑 Claude의 심장이 됨.

P.01AI · Day 10

RNN을 통째로 삭제하다

Seq2Seq+Attention은 강력했음. 근데 고질병 하나 있었음. 한 번에 한 단어씩만 처리함.

RNN은 h₂ 계산하려면 h₁이 먼저 끝나야 함. 1000단어면 1000번 줄 서서 기다림.

GPU는 수천 연산을 동시에 함. 근데 순차 의존성이 그 능력을 묶어버림.

2017년 6월, Vaswani 등 8명의 답은 과격했음. RNN을 통째로 삭제하고 Attention만 남김. 모든 단어가 서로를 동시에 봄. 문장 전체를 한 번에 처리함.

순차 처리 vs 병렬 처리
RNN — 순차 (한 칸씩 기다림)w1w2w3w4t1 → t2 → t3 → t4 (느림)Transformer — 병렬 (동시에)w1w2w3w4모든 단어 한 번에 (빠름)

순차 의존성을 없애 GPU 병렬성을 끝까지 끌어쓴다

P.02AI · Day 10

Query, Key, Value — 도서관 검색

Self-Attention 핵심은 의외로 단순함. 모든 단어가 세 가지 역할을 동시에 맡음.

도서관을 떠올림. Query는 내가 던지는 질문임. Key는 각 책의 색인표임. Value는 책의 실제 내용임.

질문(Q)을 모든 색인(K)과 맞춰봄. 잘 맞는 책의 내용(V)을 많이 가져옴.

문장 "그 동물은 길을 건넜다. 너무 지쳤기때문이다"에서 "지쳤기"의 Query는 "동물"의 Key와 강하게 매칭됨. 모델은 무엇이 지쳤는지 스스로 알아냄. 문법 규칙 하나 안 줬는데 됨.

SELF-ATTENTION 직관
Q질문"지쳤기"K: 동물0.8K: 길0.1K: 건너다0.1V: 동물↑가져옴Q·K = 점수 → softmax → V 가중합가장 잘 맞는 단어의 내용을 많이 가져온다

모든 단어가 Q·K·V 세 역할을 동시에 맡는 도서관 검색

P.03AI · Day 10

단 한 줄의 핵심 공식

Luong의 Dot-product Attention 기억함? Transformer 심장은 거기에 나눗셈 하나 더한 게 전부임.

Query와 Key 내적해 점수 냄. √dₖ로 나눠 크기 안정시킴. softmax로 확률 만듦. 그 확률로 Value 가중합함.

이 한 줄이 RNN 수십 년을 대체함.

파이썬 코드 보기
import torch, torch.nn.functional as F

def attention(Q, K, V):
    d_k = Q.size(-1)
    scores = Q @ K.transpose(-2, -1)
    scores = scores / d_k ** 0.5      # 스케일링
    weights = F.softmax(scores, dim=-1)
    return weights @ V, weights       # 가중합

# Q,K,V: (batch, seq_len, d_k)
out, attn = attention(Q, K, V)

√dₖ로 나눔? 차원이 커지면 내적값이 너무 커짐. softmax가 한쪽으로 쏠림. 나눠주면 기울기가 살아 학습이 안정됨.

SCALED DOT-PRODUCT
Self-Attention 행렬 · 단어 방향을 돌리면 전체가 동시에 다시 칠해진다
동물은지쳤기때문에Key (보는 대상) →동물은지쳤기때문에0.500.210.270.020.170.400.390.030.210.380.390.020.030.070.050.85
각 단어의 의미 방향 θ (Q와 K를 같은 벡터로 본 토이 모델)
강조해서 볼 단어(행)
행 합 = 1.00
최대 가중치
0.39
가장 많이 봄
지쳤기
펴짐(엔트로피)
0.83
"지쳤기"가 여러 단어를 적당히 섞어 본다
한 칸 한 칸이 아니라 N×N 행렬 전체가 한 번에 계산된다 — 이것이 병렬성의 정체
P.04AI · Day 10

여러 머리와 위치 신호

머리(head)가 하나면 한 종류의 관계만 봄. 그래서 Transformer는 Attention을 여러 개 병렬로 돌림.

8개 head가 각자 다른 관점을 봄. 한 head는 주어-동사 관계를 봄. 다른 head는 멀리 떨어진 대명사 참조를 봄. 결과를 이어붙여(concat) 섞으면 풍부한 표현이 됨.

근데 문제 하나 있음. Attention은 단어를 동시에보니 순서 정보가 없음. "개가 사람을 물다"랑 "사람이 개를 물다"를 구분 못 함. 이때 위치 인코딩(Positional Encoding)을 더해 각 단어에 좌표를 심어줌.

  • Multi-Head — 여러 관점을 병렬로 학습
  • Positional Encoding — 잃어버린 순서를 sin/cos로 복원
  • 잔차 연결 + 정규화 — 깊게 쌓아도 학습되게
MULTI-HEAD ATTENTION
입력 Xhead1head2head3head4concat + Linear풍부한 표현 출력head마다 다른 관계를 본다

8개 머리가 각자 다른 관점을 병렬로 본 뒤 이어붙인다

P.05AI · Day 10

모든 LLM의 출발점

Transformer는 번역기로 태어남. 근데 진짜 혁명은 그 다음이었음. 이 구조를 반으로 쪼개 쓰기 시작함.

인코더만 떼면 BERT(이해 특화)가 됨. 디코더만 떼면 GPT(생성 특화)가 됨. 매일 쓰는 ChatGPT, Claude, Gemini가 전부 2017년 이 한 논문의 후손임.

비즈니스 교훈은 분명함. 병렬화 가능한 구조가 GPU·데이터·자본을 먹고 끝없이 커질 수 있었음. 그래서 "모델 더 키우면 더 똑똑해진다"는 스케일링 법칙이 성립함. Transformer는 알고리즘이 아니라 확장 가능한 플랫폼이었음.

Q. Attention은 단어를 동시에 보는데, 그럼 순서 정보는 어떻게 앎?모델 스스로는 순서를 모름. 입력 임베딩에 Positional Encoding(위치마다 다른 sin/cos 패턴)을 더해각 단어에 위치 좌표를 심음. 그래서 "개가 사람을 물다"랑 "사람이 개를 물다"를 구분함.
TRANSFORMER 가계도
Transformer2017Encoder만BERT (이해)Decoder만GPT (생성)GPT · Claude오늘의 모든 LLM이 이 한 뿌리에서 나왔다

한 구조를 반으로 쪼개 BERT·GPT가 갈라져 나왔다

3줄 요약

  1. 12017 Attention Is All You Need — RNN을 버리다
  2. 2Transformer은 준비운동 → 지도학습 → 시퀀스 → 생성모델 → 실무 적용 흐름 안의 한 칸이다.
  3. 3개념을 외우는 것보다 입력을 바꾸면 무엇이 달라지는지 보는 것이 우선이다.

완료 전 점검

복습 카드

Transformer

2017 Attention Is All You Need — RNN을 버리다

모델

입력을 받아 예측이나 출력을 만드는 계산 규칙

손실

예측이 정답에서 얼마나 빗나갔는지 재는 숫자