스킬캠퍼스

오늘 끝나면

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

단 한 줄의 핵심 공식

Transformer의 심장은 Luong의 Dot-product Attention에 나눗셈 하나를 더한 게 전부다.

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을 버리다

모델

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

손실

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