Sean

[Part 2] Attention Is All You Need — 트랜스포머 원리 완전 해설

· 45 min read · by Sean
AITransformerAttention Is All You NeedLLM딥러닝Self-AttentionMulti-Head AttentionEncoder-Decoder
📚 시리즈 안내 — Part 2 / 2
  • Part 1AI 시대를 연 한 편의 논문 (입문편) 논문의 역사, 저자들의 뒷이야기, 세상을 바꾼 영향력
  • Part 2 — 트랜스포머 원리 완전 해설 (← 지금 이 글) Q·K·V, Multi-Head, Encoder/Decoder의 작동 원리

🎬이 글의 BGM

Steve Jablonsky - Arrival to Earth (영화 〈트랜스포머〉 OST)

Part 1에서 만났던 그 이름의 기원, 영화 〈트랜스포머〉의 메인 테마입니다. 러시아 Smolny Cathedral에서 펼쳐진 라이브 오케스트라 연주와 함께 깊이 있는 해설을 즐겨보세요.


💡이 글을 위한 준비물
  • 수식이 무서운 분들도 괜찮습니다. 모든 개념을 비유로 먼저 풀어드려요.
  • 입문편을 안 읽으셔도 따라올 수 있지만, 먼저 읽으시면 훨씬 재밌습니다.
  • 전체를 한 번에 다 이해하실 필요 없어요. 헷갈리는 부분은 표시해두고 넘어가세요.

🎯 1. 이 논문이 왜 역사적인가?

2017년 구글 연구팀 8명이 발표한 "Attention Is All You Need" 는 AI 역사에서 가장 중요한 논문 중 하나입니다. 제목부터 도발적이었죠. "Attention(주의 집중)만 있으면 다 된다"고 선언한 것이니까요.

이 논문이 발표되기 전과 후, AI의 세계는 완전히 달라졌습니다. 지금 우리가 매일 쓰는 ChatGPT, Claude, Gemini — 이 모든 AI가 이 논문에서 제안한 Transformer 구조 위에 만들어졌습니다.

🍎스마트폰 이전의 세상을 기억하시나요?

2007년 애플이 아이폰을 발표하기 전, 핸드폰은 그냥 전화기였습니다. 아이폰 하나가 음악 플레이어, 카메라, 인터넷, 지도를 하나로 합쳐 세상을 바꿨죠.

"Attention Is All You Need"AI 세계의 아이폰 발표 와 같습니다. 이 논문 하나가 번역, 대화, 코딩, 글쓰기, 이미지 생성까지 가능한 AI의 토대를 만들었습니다.

이 논문이 만들어낸 AI 계보

연도모델 / 제품회사기반
2018BERTGoogleTransformer Encoder 구조 활용
2018 ~ 2023GPT-1 ~ GPT-4OpenAITransformer Decoder 구조 활용
2022ChatGPTOpenAIGPT 기반 (Transformer)
2023 ~Claude 1 ~ 4AnthropicTransformer 기반 독자 아키텍처
2023 ~GeminiGoogleTransformer 기반
2024 ~LLaMA, Mistral 등Meta / 오픈소스모두 Transformer 기반
📌 핵심 한 줄

이 논문 이후 8년이 지난 지금, 전 세계에서 사용되는 모든 주요 대형 언어 모델(LLM)은 예외 없이 Transformer 구조를 기반으로 합니다. 단 하나의 논문이 만들어낸 결과입니다.


⏪ 2. Transformer 이전의 세계 — RNN과 LSTM의 한계

Transformer가 등장하기 전, AI 연구자들은 텍스트를 처리하는 데 주로 두 가지 모델을 사용했습니다. RNN(Recurrent Neural Network, 순환 신경망)과 그 개선판인 LSTM(Long Short-Term Memory)입니다.

이 모델들의 공통점은 단어를 왼쪽에서 오른쪽으로, 한 번에 하나씩 순서대로 처리한다는 것이었어요. 마치 사람이 책을 처음부터 끝까지 순서대로 읽는 것처럼요.

📖이렇게 상상해보세요

여러분이 긴 소설을 읽는데, 각 단어를 읽고 난 직후 그 단어를 조금씩 잊어가면서 다음 단어를 읽습니다. 처음 20페이지의 주인공 이름과 배경 설명을 300페이지 후반부에 이르렀을 때 제대로 기억하기가 매우 어렵습니다. 앞뒤 맥락을 연결 지어 이해하는 것이 점점 힘들어지는 구조입니다.

두 가지 핵심 문제

문제 1 — 병렬처리 불가 (Parallelization)

RNN은 앞 단어의 결과가 나올 때까지 다음 단어를 처리할 수 없습니다. 1만 개의 단어를 처리하려면 1만 번을 차례대로 기다려야 합니다. GPU의 병렬 연산 능력을 전혀 활용하지 못해 학습 속도가 매우 느렸어요. 현대의 수십억 개 파라미터 모델은 이 구조로는 학습 자체가 불가능했습니다.

문제 2 — 장거리 의존성 (Long-Term Dependency)

문장이 길어질수록 앞부분의 정보가 여러 단계를 거치며 약해집니다. 수학적으로 가중치들이 계속 곱해지면서 1보다 작으면 0으로 수렴(Gradient Vanishing), 1보다 크면 무한대로 발산(Gradient Explosion)하는 문제가 생깁니다. 긴 문서나 대화에서 앞뒤 내용을 연결하는 능력이 떨어질 수밖에 없었어요.

Transformer는 어떻게 해결했나?

Transformer는 이 두 문제를 한 번에 해결했습니다. 핵심 아이디어는 "순서대로 읽지 말고, 모든 단어를 동시에 보면서 서로의 관계를 계산하자"는 것이었어요.

구분RNN / LSTM 방식Transformer 방식
처리 방식순서대로 한 단어씩모든 단어를 동시에 비교
단계 의존성앞 단계 결과가 있어야 다음 가능모든 단어 쌍 관계를 한꺼번에 계산
GPU 활용병렬처리 불가병렬처리 100% 활용
장거리 연결단계를 거치며 약해짐아무리 먼 단어도 직접 연결

🎯 3. Attention이란 무엇인가?

Attention의 핵심 아이디어는 단순합니다. 어떤 단어를 처리할 때, 문장 안의 모든 단어를 참고하되 관련이 높은 단어에는 더 큰 가중치를 부여한다는 것입니다.

즉, "지금 이 단어를 이해하기 위해 문장 안의 어떤 단어에 집중해야 하는가?" 를 수학적으로 계산하는 메커니즘이에요.

🔍형사 비유로 이해하기

여러분이 형사라고 상상해보세요. 긴 증인 진술서를 읽을 때, 모든 문장을 똑같이 중요하게 보지 않습니다. '범행 당일 밤' 이라는 단어를 보는 순간, 자동으로 '시간', '장소', '알리바이' 관련 문장들에 집중하게 되죠.

관련 없는 잡담 부분은 낮은 중요도를, 핵심 단서에는 높은 중요도를 두는 것 — 이것이 바로 Attention입니다.

구체적인 예시로 이해하기

아래 문장에서 "만났다" 라는 단어를 처리할 때, 각 단어가 얼마나 중요한지 생각해보세요.

"나는  어제  서울역  근처  카페에서  친구를  만났다"

"만났다" 를 이해하기 위한 Attention Score (예시):

단어Attention Score의미
친구를████████████ 0.45← 만남의 대상 (가장 중요)
카페에서████████ 0.25← 만남의 장소
어제██████ 0.15← 만남의 시점
서울역████ 0.10← 간접 위치
나는██ 0.05← 주어 (덜 중요)
합계1.00(Softmax 적용 후 확률 형태)

이처럼 "만났다"는 "친구를"에 가장 강하게 주목하고, 나머지 단어들에는 상대적으로 낮은 가중치를 부여합니다. 이 가중치에 따라 각 단어의 정보를 섞어서 "만났다"의 풍부한 의미 표현을 만들어내는 거예요.

📌 핵심 한 줄

Attention = 모든 단어 쌍에 대해 "얼마나 관련 있는가?"를 점수로 계산하고, 그 점수에 비례해서 정보를 가져오는 메커니즘. RNN처럼 기억이 희미해지지 않고, 아무리 멀리 있는 단어도 직접 연결할 수 있습니다.

Self-Attention vs Cross-Attention

Attention에는 두 가지 종류가 있어요. 이 개념은 나중에 Encoder/Decoder 설명에서 다시 나오니 여기서 미리 이해해 두세요.

종류Q 출처K, V 출처용도예시
Self-Attention같은 문장같은 문장문장 내 단어끼리의 관계 파악"그는 사과를 먹었다"에서 '그'가 누구인지
Cross-Attention출력 문장입력 문장입력과 출력 문장 간의 관계번역 시 한국어 단어와 영어 단어 대응

🔢 4. 단어를 숫자로 — Word Embedding

컴퓨터는 "사과"라는 텍스트를 직접 이해하지 못합니다. 모든 것은 숫자로 변환되어야 해요. 그런데 단순히 "사과 = 1, 배 = 2, 자동차 = 3" 처럼 번호를 매기면 어떤 문제가 생길까요?

숫자 3이 숫자 2보다 크다는 수학적 관계가 의미 없이 생겨버립니다. "자동차"가 "배"보다 크거나 중요한 것이 아닌데도 그렇게 되죠. 그래서 각 단어를 여러 개의 숫자로 이루어진 벡터(Vector)로 표현합니다. Transformer에서는 512개의 숫자를 사용해요.

🗺️단어를 512차원 공간의 좌표라고 생각해보세요

'사과'와 '배'는 둘 다 과일이니까 이 공간에서 서로 가깝게 위치합니다. '사과'와 '자동차'는 전혀 다른 개념이니 멀리 떨어져 있어요.

더 흥미로운 건, '왕 - 남자 + 여자 = 여왕'처럼 벡터 연산으로 단어의 의미 관계를 계산할 수 있다는 점! 2D 지도가 아니라 512차원 지도라는 것만 다릅니다.

임베딩의 신기한 성질

단어 쌍의미 관계벡터 특성
사과 ↔ 배둘 다 과일벡터 거리가 가까움
왕 ↔ 여왕성별만 다른 왕족거리 가깝고, 성별 방향 벡터 차이 존재
서울 ↔ 한국수도-국가 관계파리-프랑스 벡터와 동일한 방향 차이
달리다 ↔ 걷다이동 동사, 속도 차이비슷한 공간, 속도 벡터 차이
사과 ↔ 자동차전혀 다른 개념벡터 거리가 멀리 떨어짐

학습을 통해 최적화되는 가중치

중요한 점은 이 512개의 숫자(가중치)가 처음에는 무작위 값으로 시작한다는 거예요. 모델이 수억 개의 문장을 학습하면서 "어떤 단어가 어떤 단어와 함께 자주 등장하는가", "어떤 단어가 비슷한 문맥에서 쓰이는가" 를 파악하고, 그에 맞게 이 숫자들을 조금씩 조정합니다. 최종적으로 의미가 비슷한 단어는 가까운 벡터를 갖게 되죠.

💡임베딩 차원은 왜 512인가?

논문에서는 d_model = 512 를 사용했습니다. 차원이 클수록 더 풍부한 의미를 표현할 수 있지만 계산량도 늘어나요. GPT-3는 12,288차원, 최신 모델들은 더 큰 차원을 사용합니다. 512는 당시 번역 태스크에서 성능과 효율의 균형점이었어요.


📍 5. 순서를 기억하라 — Positional Encoding

Transformer의 강점인 "모든 단어를 동시에 처리" 하는 방식에는 한 가지 문제가 있어요. 순서를 모른다는 것입니다.

"나는 밥을 먹었다""밥을 나는 먹었다" 는 단어 구성은 같지만 어순이 달라요. 모든 단어를 동시에 보면 이 둘의 차이를 알 수 없습니다. 그래서 각 단어에 위치 정보를 명시적으로 추가 해줘야 해요. 이것이 Positional Encoding(위치 인코딩)입니다.

🏃운동회 100미터 달리기를 떠올려보세요

선수들이 모두 같은 유니폼을 입고 뒤섞여 있으면 누가 1번 레인인지 알 수 없습니다. 그래서 각 선수에게 등번호를 달아줍니다. 1번 레인 선수는 등에 '1', 2번 레인 선수는 '2'처럼요.

Positional Encoding은 단어에 "넌 문장에서 1번째야", "넌 5번째야" 라고 등번호를 달아주는 것입니다.

왜 단순히 1, 2, 3 숫자를 안 쓰나?

제일 먼저 떠오르는 방법은 첫 번째 단어에 1, 두 번째에 2, 세 번째에 3을 더하는 것이에요. 하지만 이 방법에는 두 가지 문제가 있습니다.

방법문제점
1, 2, 3, 4 … 정수 추가문장이 길어질수록 숫자가 커져서 단어의 의미 정보(0 근처의 작은 값들)를 압도. 위치 정보가 의미보다 너무 커짐.
0.1, 0.2 … 0~1 정규화학습 시 100단어짜리 문장을 봤다면, 500단어 문장이 오면 본 적 없는 위치 값이 나와 대응 불가. 학습 데이터 범위 밖의 길이에 취약.
Sin / Cos 함수 (✅ 채택!)항상 -1 ~ +1 범위 유지 (의미 정보와 균형). 문장 길이 무관하게 모든 위치값 표현 가능. 상대적 위치 관계도 표현 가능.

Sin/Cos 함수를 쓰는 방법

단어 벡터의 각 차원(0번 ~ 511번)에 대해 아래 공식으로 위치 값을 계산합니다.

PE(pos, 2i)   = sin(pos / 10000^(2i/d_model))   ← 짝수 차원
PE(pos, 2i+1) = cos(pos / 10000^(2i/d_model))   ← 홀수 차원

pos      = 단어의 문장 내 위치 (0, 1, 2, 3 …)
i        = 벡터의 차원 인덱스 (0, 1, 2 … 255)
d_model  = 임베딩 차원 수 (= 512)

차원마다 Sin/Cos 함수의 주기를 다르게 설정하면, 서로 다른 위치에 있는 단어들이 모두 고유한 패턴을 갖게 됩니다. 마치 악보처럼 여러 주파수가 겹쳐서 각 위치만의 "지문"을 만드는 것이죠.

📌 핵심 한 줄

최종 입력 = Word Embedding 벡터 + Positional Encoding 벡터

이렇게 단어의 "의미""위치"가 합쳐진 벡터가 Transformer의 실제 입력이 됩니다.


🔑 6. Q · K · V — Attention의 작동 원리

Attention 계산의 핵심은 세 가지 벡터 Q(Query), K(Key), V(Value)입니다. 이 이름들이 처음에는 추상적으로 느껴지지만, 비유를 통해 이해하면 굉장히 직관적이에요.

🎬유튜브 검색을 생각해보세요!

여러분이 검색창에 "파이썬 기초 강의" 를 입력합니다. 유튜브는 수백만 개 영상의 제목/태그를 이 검색어와 비교해서 관련도를 계산하고, 관련도가 높은 영상들을 결과로 보여줍니다.

  • Query (Q) = 내가 검색창에 입력한 검색어 ("파이썬 기초 강의")
  • Key (K) = 각 영상이 갖고 있는 제목/태그 (영상을 설명하는 라벨)
  • Value (V) = 영상의 실제 내용 (썸네일, 설명, 조회수 등)

Q와 K를 비교해 관련도 점수를 내고 → 관련도에 비례해서 V(실제 내용)를 가져오는 것이 Attention입니다. 단어들이 서로를 검색하면서 필요한 정보를 가져오는 거예요!

Q, K, V 각각의 역할

기호이름역할유튜브 비유
QQuery (질의)지금 처리 중인 단어가 "나와 관련 있는 단어가 누구야?" 라고 묻는 벡터검색어
KKey (키)각 단어가 "나는 이런 정보를 갖고 있어" 라고 자신을 소개하는 벡터영상 제목/태그
VValue (값)실제로 전달할 정보 내용. Q-K 매칭이 되면 이 값을 가져간다영상 실제 내용

Q, K, V는 어디서 만들어지나?

입력 벡터(Word Embedding + Positional Encoding)에 각각 서로 다른 가중치 행렬 을 곱해서 만듭니다. 이 가중치 행렬(W^Q, W^K, W^V)도 학습을 통해 최적화돼요.

입력 벡터 X에서 Q, K, V 생성:

Q = X × W^Q   ← Q 생성용 가중치 행렬
K = X × W^K   ← K 생성용 가중치 행렬
V = X × W^V   ← V 생성용 가중치 행렬

Attention 계산 4단계

유사도 계산: Q × K^T (내적)

모든 Q 벡터와 모든 K 벡터의 내적(Dot Product) 을 계산합니다. 내적값이 클수록 두 단어가 서로 관련이 높다는 뜻이에요. 결과는 (단어수 × 단어수) 크기의 Attention Score 행렬 이 됩니다.

스케일 조정: √d_k 로 나누기

벡터 차원(d_k)이 클수록 내적값이 커져서 점수들이 극단적으로 치우칩니다. 이를 막기 위해 Key 벡터 차원의 제곱근(√d_k)으로 나눠줘요. 이 과정이 있어서 이름에 "Scaled"가 붙었습니다.

확률로 변환: Softmax 적용

스케일된 점수들에 Softmax 함수 를 적용합니다. 모든 값이 0~1 사이가 되고 합은 1이 돼요. 이것이 각 단어에 대한 "주목 비율"입니다.

가중 합산: Softmax 결과 × V

각 단어의 Softmax 확률값과 해당 단어의 Value 벡터를 곱해서 모두 더합니다. 관련도가 높은 단어의 Value는 많이, 낮은 단어의 Value는 조금 반영돼요. 이것이 Attention의 최종 출력입니다.

전체 수식 정리

Scaled Dot-Product Attention:

Attention(Q, K, V) = Softmax( Q × K^T / √d_k ) × V

Q   : Query 행렬   (문장 길이 × d_k)
K   : Key 행렬     (문장 길이 × d_k)
V   : Value 행렬   (문장 길이 × d_v)
d_k : Key 벡터의 차원 수 (= 64, 논문 기준)

👥 7. Multi-Head Attention — 8개의 눈으로 동시에

Transformer는 Attention을 한 번만 계산하지 않습니다. 서로 다른 8개의 Attention을 동시에 병렬로 계산해요. 이를 Multi-Head Attention(다중 헤드 어텐션)이라고 합니다. 왜 하나가 아닌 여럿일까요?

🎬같은 영화를 여러 전문가가 동시에 분석한다고 생각해보세요
  • Head 1 — 영화 평론가: 스토리 구조와 서사 전개에 집중
  • Head 2 — 촬영 감독: 카메라 앵글, 색감, 조명 기법에 집중
  • Head 3 — 음악 감독: 배경음악과 음향 효과에 집중
  • Head 4 — 배우 코치: 연기력과 감정 표현에 집중

각자가 다른 측면을 전문적으로 분석하고 나서 의견을 합치면, 한 사람이 모든 것을 보는 것보다 훨씬 풍부한 이해가 가능합니다. Multi-Head Attention도 똑같아요. 8개의 'Head'가 단어 관계를 각각 다른 관점으로 분석한 후 결과를 합칩니다.

각 Head는 무엇을 배울까?

각 Head가 정확히 무엇을 학습할지는 미리 정해지지 않습니다. 학습을 통해 자동으로 결정돼요. 실험적으로 관찰해보면 Head마다 다른 언어적 패턴을 학습하는 경향이 있습니다.

Head주로 학습하는 패턴예시
Head 1문법적 의존 관계"먹었다"와 "밥을"의 동사-목적어 관계
Head 2대명사 참조 해결"그는 사과를 먹었다. 가 누구인지"
Head 3의미적 유사성같은 범주(과일, 동물 등) 단어들끼리 연결
Head 4위치적 근접성인접한 단어들의 지역 문맥 파악
Head 5~8기타 다양한 패턴시제, 부정, 화제 전환 등

Multi-Head Attention 계산 방법

512차원 벡터를 8등분하여 각 Head에 64차원씩 배분합니다. 각 Head가 독립적으로 Attention을 계산한 후, 결과를 이어붙이고(Concatenation) 선형 변환으로 다시 512차원으로 맞춰요.

Multi-Head Attention 수식:

MultiHead(Q, K, V) = Concat(head_1, …, head_h) × W^O
head_i             = Attention(Q×W_i^Q, K×W_i^K, V×W_i^V)

h    = Head 개수 (논문에서 h=8)
d_k  = d_model / h = 512 / 8 = 64  (각 Head의 차원)
W^O  = 출력 선형 변환 가중치 (512 × 512)
계산량은 Single-Head와 동일

차원을 나눠쓰기 때문에 계산량은 똑같이 유지 됩니다. 다만 성능은 훨씬 좋아져요!

📌 핵심 한 줄

Multi-Head의 핵심: 8개의 Head가 서로 다른 언어적 패턴(문법, 의미, 대명사 참조 등)을 동시에 전문적으로 분석 → 결과를 합쳐서 훨씬 풍부하고 다층적인 문맥 이해. 계산량은 Single-Head와 같은데 성능은 훨씬 좋습니다.


🏗️ 8. Encoder 구조 — 입력을 깊이 이해하는 파트

Transformer의 전체 구조는 Encoder(인코더)Decoder(디코더)로 나뉩니다. 논문에서는 영어→프랑스어 번역을 목표로 설계했어요. Encoder는 입력 언어(영어)를 완전히 이해하는 파트, Decoder는 그 이해를 바탕으로 출력 언어(프랑스어)를 생성하는 파트입니다.

🎤국제회의의 통역사 팀을 떠올려보세요

Encoder는 "완전히 이해하는 역할" 을 맡은 사람과 같습니다. 한국어 연설을 처음부터 끝까지 들으면서 발언자의 의도, 맥락, 감정, 강조점까지 완벽하게 이해합니다. 이 이해를 바탕으로 핵심 요약본(Context Vector)을 만들어내죠.

Decoder는 이 요약본을 받아서 영어로 번역하는 역할을 합니다.

Encoder Block의 4가지 Sub-layer

하나의 Encoder Block은 아래 4개의 레이어로 구성되고, 이 블록이 6번 반복됩니다.

🔷Sub-layer 1: Multi-Head Self-Attention

입력 문장 내 모든 단어들이 서로를 Attention합니다. "나는 서울에서 태어났고 거기서 학교를 다녔다" 에서 '거기서''서울' 을 가리킨다는 것을 파악하는 것처럼, 단어 간의 모든 의존 관계를 학습합니다. Q, K, V 모두 같은 문장에서 나오므로 'Self'-Attention이에요.

🔷Sub-layer 2: Add & Layer Normalization (잔차 연결)

Add (잔차 연결, Residual Connection): Attention 출력에 원래 입력을 더해줍니다. 수식으로는 Output = Attention(x) + x 예요. 딥러닝에서 레이어가 깊어질수록 Gradient(학습 신호)가 역전파 도중 0에 수렴하는 Gradient Vanishing 문제가 생기는데, 입력을 바로 더해주면 Gradient가 이 경로를 타고 손실 없이 전달될 수 있습니다.

Layer Normalization: 합산된 값의 평균과 분산을 정규화해요. 각 샘플(문장)별로 독립적으로 계산하므로 문장 길이가 달라도 문제없습니다. Batch Normalization을 쓸 수 없는 이유는 문장마다 길이가 다르기 때문이에요.

🔷Sub-layer 3: Position-wise Feed-Forward Network

각 단어의 표현에 2층의 완전연결 신경망(Fully-Connected Layer) 을 적용합니다. 구체적으로 512차원 → 2048차원으로 늘렸다가 → ReLU 활성함수 → 다시 512차원으로 압축해요.

"Position-wise"모든 위치(각 단어)에 동일한 가중치를 공유 하는 신경망을 적용한다는 뜻입니다. Self-Attention이 단어들 사이의 관계를 파악한다면, FFN은 각 단어의 표현 자체에 비선형 변환을 가해 표현력을 강화해요.

🔷Sub-layer 4: 다시 Add & Layer Normalization

FFN 적용 후에도 동일하게 잔차 연결과 Layer Normalization을 반복합니다.

Encoder Block이 6번 반복되는 이유

처음 Encoder Block이 입력 문장의 기본적인 패턴을 파악하면, 두 번째 Block은 그 결과 위에서 더 고차원적인 패턴을 파악합니다. 6번 반복하면서 점점 추상적이고 풍부한 의미 표현이 만들어져요.

Encoder 전체 구조

입력 문장: "I love AI"
   ↓ Word Embedding + Positional Encoding
   ↓ [ Encoder Block 1 ]  Multi-Head Self-Attention → Add&Norm → FFN → Add&Norm
   ↓ [ Encoder Block 2 ]  반복
   ↓ [ Encoder Block 3 ]  반복
   ↓ [ Encoder Block 4 ]  반복
   ↓ [ Encoder Block 5 ]  반복
   ↓ [ Encoder Block 6 ]  반복
   ↓
Context Vector  ← "I love AI"의 완전한 의미 표현 (512차원 × 단어수)

🔄 9. Decoder 구조 — 출력을 한 단어씩 생성하는 파트

Decoder는 Encoder가 만든 Context Vector를 받아서 출력을 한 단어씩 순서대로 생성합니다. Encoder Block과 비슷하지만 두 가지가 추가돼요: Masked Multi-Head AttentionCross-Attention입니다.

🎤Decoder는 동시통역사와 같습니다

한국어 원문을 이해한 통역사(Encoder)의 요약본을 받아서, 지금까지 번역한 영어 단어들을 참고하면서 다음에 올 영어 단어를 하나씩 말합니다. 이미 말한 부분은 알지만 아직 말하지 않은 부분은 모르는 상태에서 번역해나가는 것이죠.

Sub-layer 1: Masked Multi-Head Self-Attention

Decoder도 먼저 지금까지 생성된 출력 단어들끼리 Self-Attention을 합니다. 그런데 여기에 Mask(마스크)가 붙어요. 왜 마스킹이 필요할까요?

⚠️마스킹이 없으면 어떤 문제가 생기나?

번역 학습 중, Decoder에는 정답 문장("J'aime l'IA")이 통째로 입력됩니다. "J'aime" 를 생성하는 단계에서 이미 정답인 "l'IA" 를 볼 수 있다면 그냥 정답을 베끼는 것과 같습니다. 학습은 됐지만 실제 사용 시에는 정답을 미리 모르기 때문에 쓸모가 없어져요.

마치 시험 중에 다음 문제의 정답을 미리 보는 것과 같습니다.

해결책으로 Look-ahead Mask를 적용합니다. Attention Score 행렬에서 현재 위치 이후의 모든 값을 -∞(음의 무한대) 로 설정해요. Softmax를 거치면 -∞는 0이 되므로 미래 단어에 대한 주목 비율이 완전히 0이 됩니다.

Look-ahead Mask 예시 (3단어 문장):

         단어1   단어2   단어3
단어1  [   0    -∞     -∞   ]   ← 단어1은 단어1만 볼 수 있음
단어2  [   0     0     -∞   ]   ← 단어2는 단어1,2만 볼 수 있음
단어3  [   0     0      0   ]   ← 단어3은 모든 이전 단어 볼 수 있음

Sub-layer 2: Cross-Attention (Encoder-Decoder Attention)

Decoder의 두 번째 Attention이 핵심입니다. 이 단계에서 Encoder와 Decoder가 연결돼요.

Cross-Attention에서 Q, K, V의 출처:

Q (Query) = Decoder 내부 (지금 번역 중인 위치)        ← Decoder에서 옴
K (Key)   = Encoder 최종 출력 (Context Vector)      ← Encoder에서 옴
V (Value) = Encoder 최종 출력 (Context Vector)      ← Encoder에서 옴

Decoder의 현재 위치(Q)가 Encoder의 전체 출력(K, V)을 검색해서, 지금 번역할 단어를 생성하기 위해 입력 문장의 어느 부분을 참고해야 할지를 계산합니다. 예를 들어 "사랑해""love" 로 번역할 때, 입력 문장에서 "사랑해" 위치에 가장 강하게 주목해요.

최종 출력: Dense + Softmax Layer

6개의 Decoder Block을 거친 최종 벡터(512차원)는 마지막 단계를 거쳐 실제 단어로 변환됩니다.

Linear Layer (선형 변환)

512차원 벡터를 어휘 사전 크기만큼 확장 합니다. 예를 들어 어휘 사전에 50,000개의 단어가 있다면 512차원 → 50,000차원으로 변환해요.

Softmax (확률 변환)

50,000개의 값에 Softmax를 적용해 모든 값을 확률(0~1, 합=1) 로 변환합니다. 가장 높은 확률의 단어가 다음 토큰으로 선택돼요.

다음 단어 선택 → 반복

선택된 단어를 다시 Decoder 입력에 추가하고, 종료 토큰(EOS)이 나올 때까지 반복합니다. 이 과정이 자동회귀(Auto-Regressive) 생성이에요.

Transformer 전체 구조 요약

입력: "나는 AI를 사랑한다"
  ↓ Embedding + Positional Encoding
  ↓ Encoder Block × 6  (Self-Attention + FFN)
  ↓ Context Vector  ─────────────────────────┐
                                              ↓  (K, V로 입력)
출력: <START>                              Decoder Block × 6
  ↓ Masked Self-Attention                  (Cross-Attention에서
  ↓ Cross-Attention  ←────────────────────┘   Encoder와 연결)
  ↓ FFN
  ↓ Linear + Softmax
"I" → "love" → "AI" → <END>

🚀 10. 왜 이 논문이 AI 역사를 바꿨나?

이 논문이 발표됐을 때만 해도 연구자들 사이에서 "그래도 번역 모델 하나 잘 만든 거 아닌가?" 정도의 반응도 있었습니다. 그러나 이후 불과 1~2년 만에 AI 연구의 모든 패러다임이 뒤집혔어요.

혁명 1: 병렬처리로 초대형 모델 학습이 가능해졌다

RNN은 순서 의존적이어서 아무리 GPU를 늘려도 학습 속도를 대폭 올릴 수 없었습니다. Transformer는 모든 연산이 병렬로 가능해요. GPU 1,000개를 써도 되고, TPU 클러스터를 써도 됩니다. 이 덕분에 GPT-3(1,750억 파라미터), GPT-4, Claude, Gemini 같은 초대형 모델이 현실적인 시간과 비용 안에 학습될 수 있었어요.

🚢컨테이너선 발명을 생각해보세요

컨테이너 이전에는 항구에서 짐을 하나하나 손으로 싣고 내렸습니다. 컨테이너 이후에는 표준화된 박스로 크레인이 한꺼번에 처리하게 됐죠. 물류량이 10배, 100배로 늘었습니다.

Transformer도 마찬가지예요. 병렬처리 덕분에 AI가 처리할 수 있는 데이터와 모델 크기가 수십 배, 수백 배로 폭발적으로 증가했습니다.

혁명 2: 사전학습(Pre-training) + 전이학습이 가능해졌다

Transformer 구조는 한 번 대규모로 학습해두면 다양한 태스크에 재사용할 수 있습니다. "대규모 텍스트로 언어 자체를 학습 → 특정 태스크에 맞게 미세조정(Fine-tuning)" 패러다임이 만들어졌어요. 번역용으로 만든 모델이 요약도, QA도, 감정분석도 할 수 있게 된 겁니다.

📅 Transformer 이후 주요 모델 타임라인

연도모델의미
2017Transformer 논문 발표영어-프랑스어 번역에서 최고 성능. GPU 8개로 3.5일 학습.
2018BERT (Google)Encoder만 사용. NLP 11개 태스크 동시 최고 성능. "사전학습 혁명" 시작.
2018GPT-1 (OpenAI)Decoder만 사용. 텍스트 생성. GPT 계보의 시작.
2020GPT-3 (OpenAI)1,750억 파라미터. Few-shot 학습으로 거의 모든 언어 태스크 수행.
2022ChatGPT (OpenAI)출시 5일 만에 사용자 100만 명. AI 대중화 원년.
2023 ~Claude, Gemini, LLaMA모두 Transformer 기반. 코딩, 이미지, 멀티모달로 확장.

혁명 3: 언어를 넘어 모든 데이터로 확장

Transformer의 Attention 메커니즘은 언어에만 국한되지 않았습니다. 이미지(ViT), 오디오, 단백질 구조(AlphaFold 2), 코드, 동영상까지 — 순서가 있는 어떤 데이터도 Transformer로 처리할 수 있다는 것이 밝혀졌어요. 논문 저자들도 예상하지 못했던 범용성이었습니다.

📌 핵심 한 줄

"Attention Is All You Need" 는 번역 논문으로 시작했지만, 결과적으로 현대 AI 혁명의 설계도가 됐습니다. 논문의 제목처럼, Attention 하나로 정말 모든 것이 가능해졌어요.


📋 11. 전체 요약 한눈에

지금까지 다룬 핵심 개념들을 카드 형태로 정리해드릴게요. 헷갈리는 개념이 있으면 위로 다시 올라가 확인하세요.

개념핵심 설명비유
Word Embedding단어 → 512개 숫자 벡터 변환. 의미가 비슷한 단어는 가까운 벡터💡 단어를 512차원 지도 위의 좌표로
Positional Encoding동시 처리로 잃은 순서 정보를 Sin/Cos 함수로 보완💡 선수들에게 등번호 달아주기
Query (Q)현재 단어가 "관련 단어 누구야?" 묻는 벡터💡 유튜브 검색창에 입력한 검색어
Key (K)각 단어가 "나는 이런 정보야" 소개하는 벡터💡 영상의 제목과 태그
Value (V)Q-K 매칭되면 실제로 전달되는 정보💡 영상의 실제 내용
Scaled Dot-Product AttentionSoftmax(Q×K^T / √d_k) × V💡 관련도 높은 단어 정보를 더 많이 섞기
Multi-Head Attention8개 Attention 병렬 계산 후 합산. 64차원씩 분배💡 8명의 전문가가 다른 측면 분석
Self-AttentionQ,K,V 모두 같은 문장. Encoder에서 사용💡 팀 회의에서 팀원끼리 소통
Cross-AttentionQ는 Decoder, K·V는 Encoder. Decoder에서 사용💡 영한사전으로 대응 단어 찾기
Masked Self-AttentionDecoder에서 미래 단어를 -∞로 마스킹💡 시험 중 다음 문제 정답 가리기
Encoder (× 6)Self-Attention + FFN 6번 반복. Context Vector 생성💡 원문을 완전히 이해하는 통역사
Decoder (× 6)Masked Self + Cross + FFN 6번 반복. 자동회귀 생성💡 이해한 내용을 번역하는 통역사
Residual ConnectionOutput = f(x) + x. Gradient Vanishing 방지💡 원본 백업을 유지하며 덧붙이기
Layer Normalization각 레이어 출력을 샘플별로 정규화. 평균 0, 분산 1💡 시험 점수를 100점 만점으로 표준화
Feed-Forward Network각 위치에 2층 신경망: 512→2048→ReLU→512💡 각 단어의 표현을 개별적으로 가공

💌 마치며: "Attention Is All You Need"의 의미

제목 그대로 "Attention, 그것 하나면 충분하다"고 선언한 논문입니다. RNN, CNN 같은 복잡한 구조 없이도 오직 Attention 메커니즘만으로 당시 최고 성능을 뛰어넘을 수 있다는 것을 증명했어요.

🎯Simple is Best — 이 단순하지만 강력한 아이디어

이 단순하지만 강력한 아이디어 하나가, 지금 우리가 사는 AI 시대를 열었습니다.

8년이 지난 지금, 우리가 매일 사용하는 ChatGPT, Claude, Gemini, 그리고 앞으로 나올 모든 AI들이 이 작은 논문 하나에서 출발했다는 사실. 정말 놀랍지 않나요?

기술이 어렵게 느껴질 때는 항상 이런 생각을 해봅니다. "세상을 바꾼 아이디어들은 의외로 단순하다" 고요. 트랜스포머도 그런 아이디어 중 하나였어요.

긴 글 함께해주셔서 감사합니다. ✨


📚시리즈 다시 보기

📄 원문 논문


#AI #Transformer #Attention #SelfAttention #MultiHeadAttention #Encoder #Decoder #딥러닝 #LLM #AttentionIsAllYouNeed