— “Attention Is All You Need”가 남긴 진짜 변화
“단 한 편의 논문이 AI 판을 바꿨다”는 말, 좀 과장처럼 들리죠? 그런데 2017년에 Google이 발표한 Attention Is All You Need는 진짜로 그랬어요. 모델이 똑똑해진 게 아니라(물론 그것도 있지만), 정보가 모델 안에서 움직이는 방식 자체가 확 바뀌었습니다.
오늘은 그 핵심인 Transformer를 아주 자연스럽게—그러면서도 디테일 하나 안 놓치고—풀어볼게요.
먼저, 한 문장만 기억해도 됩니다.
Transformer는 마법이 아니라, 입력들이 서로 “대화”할 수 있게 만든 네트워크다.
그러니까… communication이 전부였던 거죠.

ML의 본질은 결국 “입력 → 출력” 매핑이다
Machine Learning이 하는 일은 생각보다 단순한 설명으로 시작할 수 있어요.
입력을 넣으면, 원하는 출력을 뽑아내는 규칙(매핑)을 학습하는 것.
예를 들면 이런 식이죠.
- 집값 예측: 침실 개수, 위치, zip code 같은 feature들 → 가격
- 스팸 분류: 단어/문자 sequence → “spam” or “not spam” (이진 출력)
이 매핑을 잘 배우는 대표적인 방법이 neural network입니다.
neural network는 결국 layer들의 줄(=sequence) 이고, 각 layer가 input을 output으로 바꾸는 수학적 변환을 담당해요.
가령 linear layer는 input에 linear transformation을 적용하죠.
이런 layer들을 여러 개 쌓으면, input이 output으로 바뀌는 긴 연산 체인이 만들어집니다. 그리고 training 동안 각 layer의 parameter가 업데이트되면서, 점점 더 정확한 매핑을 하게 되는 거고요.
…근데 여기서 문제가 하나 터집니다.
sequence task로 가면, 갑자기 난이도가 확 올라가요.
sequence task에서 “문맥”이 사라지면 끝이다
sentiment analysis 같은 작업을 떠올려볼까요?
문장은 token들의 줄인데, 만약 token을 하나씩 독립적으로 처리해버리면 어떻게 될까요?
문맥이 증발합니다.
단어들은 서로 영향을 주는데, 그 연결고리가 싹 끊겨버리는 거죠.
그래서 예전 모델들은 이 문제를 어떻게 해결했냐면…
RNN / LSTM: “한 글자씩 넘겨가며 기억하기”의 시대
RNNs와 LSTMs는 sequence를 토큰 하나씩 처리했습니다.
- token 하나 처리
- 내부 memory(state) 업데이트
- 다음 step으로 memory 전달
작동은 했어요. 하지만 치명적인 문제가 두 개 있었죠.
문제 1) sequential이라 training이 느리다
한 step이 끝나야 다음 step이 가능하니 parallel processing이 거의 불가능합니다.
규모가 커질수록 속도는 더 답답해지고요.
문제 2) 긴 문장에서 앞부분 정보가 사라진다
sequence가 길어지면, 끝까지 도달했을 때 초반 정보가 희미해져요.
long-term dependencies가 필요한 순간에 기억이 흐려지는 겁니다.
이때 등장한 게 Transformer. 그리고 그 핵심이 attention이었어요.
Transformer의 한 방: attention = 모델 내부의 “대화 채널”
Transformer는 여전히 neural network예요. layer를 쌓는 구조도 같고요.
근데 설계가 한 단계 “영리해졌습니다”.
Transformer는 attention layer를 넣어서, token들이 서로를 직접 바라보고 상호작용하게 만들었어요.
비유하자면 이거예요:
- RNN/LSTM은 “앞사람에게 전달받은 얘기만 들을 수 있는 줄서기”
- Transformer는 “단체 대화방에서 모두가 동시에 이야기 듣기/말하기”
attention 덕분에 token은 “2칸 옆”의 정보든 “200칸 멀리”의 정보든 필요한 걸 빠르게 끌어올 수 있어요. 문맥을 잡는 방식이 근본적으로 달라진 거죠.
Transformer의 큰 구조: encoder + decoder, 그리고 반복되는 block
Transformer는 기본적으로 encoder와 decoder로 구성됩니다.
(원래 논문에서는 translation 같은 작업을 위해 encoder-decoder 구조를 썼죠.)
둘 다 공통적으로 stacked blocks로 쌓여 있고, 각 block에는 핵심 레이어가 두 개 들어있습니다.
- attention layer
- feed forward layer(=MLP)
여기서 감각적으로 이해하면 쉬워요.
- attention layer: 토큰들이 서로 정보 교환(“너 뭐 알아?” “그거 좀 줘”)
- MLP layer: 각 토큰이 혼자 조용히 생각 정리(“방금 받은 정보로 내 의미를 다듬자”)
즉,
소통(communication) → 개인 정리(refinement)
이 리듬이 반복되면서 이해력이 쌓입니다.
그리고 training 안정성을 위해 residual connections와 layer normalization 같은 장치도 같이 들어가요. 화려하진 않아도, 이게 없으면 깊게 쌓았을 때 흔들리기 쉽거든요.
예시 문장으로 감 잡기: “Jake learned AI even though it was difficult.”
이 문장을 그대로 써볼게요.
“Jake learned AI even though it was difficult.”
attention layer에서 “it”은 혼자 의미를 못 정합니다. 그래서 주변을 훑어요.
다른 단어들을 보면서 “내가 가리키는 게 뭐지?”를 찾죠.
스크립트 흐름에서는 “it”이 Jake를 가장 관련 있는 token으로 학습한다고도 말하고, 뒤의 dot product 설명에서는 AI가 더 높은 점수를 얻는 예시도 나옵니다. 얼핏 보면 서로 안 맞는 것처럼 보이는데—사실 이런 포인트가 오히려 중요해요.
- 설명은 직관을 위한 예시이고,
- 실제 model에서는 training과 데이터에 따라 attention이 어디로 쏠릴지 달라질 수 있습니다.
중요한 건 하나:
“it” 같은 token이 문장 전체를 보고 필요한 정보를 골라서 끌어온다는 점이에요.
attention으로 업데이트된 뒤에는 각 token이 “더 풍부해진 표현(representation)”을 갖게 됩니다.
그리고 MLP layer에서 그 표현을 각자 더 다듬어요.
입력은 Transformer 안에서 이렇게 흐른다
Transformer가 문장을 처리하는 과정을 차근차근 따라가면 이렇습니다.
1) tokenizer가 text를 tokens로 쪼갠다
문장을 작은 단위인 tokens로 분해합니다.
2) tokens를 embeddings로 바꾼다
각 token은 embedding vector로 변환돼요. training을 거치면 이 벡터가 의미(semantic)를 담도록 최적화됩니다.
3) 그런데… Transformer는 원래 “순서 감각”이 없다
이게 의외 포인트죠. Transformer는 구조상 기본적으로 순서를 자동으로 알지 못합니다.
그래서 positional information을 embeddings에 더해줘요. 토큰이 sequence에서 어디에 있는지 알려주는 “특수한 패턴” 같은 느낌.
이게 없으면 이런 일이 생깁니다.
- “Jake learned AI”
- “AI learn Jake”
둘이 비슷하게 보일 수 있어요. 말이 안 되죠. 그래서 순서 정보를 넣습니다.
4) attention으로 섞고, MLP로 다듬고… 반복
block을 지나갈수록 attention은 토큰 간 정보를 섞어주고, MLP는 토큰별 표현을 매끈하게 다듬습니다.
마지막에 남는 건 여전히 “벡터들의 sequence”지만, 이제는 context-aware representations가 된 상태예요.
마지막 벡터들은 어디에 쓰일까? (task에 따라 다름)
최종 표현을 어떻게 쓰는지는 task마다 달라요.
- text generation: 마지막 representation을 이용해 다음 token을 예측
- sentiment analysis: 첫 번째 vector를 문장 대표로 써서 classifier에 넣기
같은 Transformer backbone에 “어떤 head를 붙이느냐”가 달라지는 거죠.
attention의 내부: Query / Key / Value가 하는 일
attention layer에서 각 token은 세 가지 표현을 만듭니다.
- Query(Q): “나는 뭘 찾고 있지?”
- Key(K): “내가 가진 정보는 이런 거야.”
- Value(V): “내가 실제로 전달할 내용은 이거야.”
아까 문장으로 돌아가면,
- “it”은 Query를 만들며 속으로 묻습니다: 내가 가리키는 개념이 뭐야?
- “Jake”, “AI” 같은 token들은 Key로 “내 정보의 성격”을 보여주고,
- Value에는 실제 의미(예: Jake는 사람, AI는 주제)가 담깁니다.
Step 1) dot product로 관련도 점수 만들기
각 token은 자기 Query와, 다른 token들의 Key를 dot product로 비교해 점수를 냅니다.
예시에서는 “it”이 “AI”의 Key와 비교했을 때 “Jake”보다 높은 점수를 받는 흐름으로 설명되죠—즉, 문맥상 AI가 더 중요하게 잡힌다는 뜻.
Step 2) softmax로 attention weights 만들기
점수들을 softmax로 정규화해서 attention weights(집중도)로 바꿉니다.
가장 관련 있는 token에 weight가 크게, 덜 관련 있는 token에는 작게 가요.
Step 3) weights로 Value를 가중합(weighted sum)
마지막으로 token은 모든 Value를 attention weights로 가중합해서, 자기 표현을 업데이트합니다.
그래서 “it”은 관련 token(예: AI)에서 더 많은 정보를 가져오고, 다른 단어들에서는 조금만 가져와서 더 풍부한 의미를 갖게 됩니다.
loop 없이 한 번에: attention을 matrix로 계산한다
Transformer가 빠른 이유는 여기서 터집니다.
토큰을 하나씩 돌면서 계산하지 않고,
Query/Key/Value를 각각 matrix로 쌓아 올린 다음 한 번에 연산합니다.
- dot products도 동시에
- weighted sums도 동시에
즉, 모든 token이 서로를 바라보는 작업이 parallel matrix operations으로 처리돼요.
효율적이고, fully differentiable하고, training에 아주 잘 맞는 구조죠.
training이 진행되면 attention은 “의미 있게 바라보는 법”을 배운다
처음 training 시작할 때 parameter는 random입니다.
당연히 Q/K/V도 의미 없는 상태예요. 모델은 “뭘 봐야 하는지”도, “뭘 줘야 하는지”도 모릅니다.
그런데 training이 계속되면서 Q/K/V를 만드는 parameter가 최적화되고, attention은 점점 패턴을 학습해요.
- “learned” 같은 verb가 자기 subject를 찾기 시작하고,
- “it” 같은 pronoun이 문맥상 중요한 noun(예: “AI”)을 향해 고개를 돌리게 됩니다.
이건 특별한 요술이 아니라, 그냥 optimization이 만든 결과예요.
모델이 “어디를 봐야 성능이 올라가는지”를 경험적으로 알아낸 거죠.
masked / multi-head / cross attention: 계산 방식을 살짝 튜닝한 버전들
스크립트에서 언급되는 변형들도 정리해볼게요.
- masked attention: sequence order를 지키고, 특히 generation에서 “미래 token을 몰래 보는 것”을 막아 causality를 보장
- multi-head attention: 한 번의 attention이 아니라 여러 head가 서로 다른 관계를 동시에 포착(문법, 장거리 참조, 의미 연결 등)
- cross attention: 한 sequence가 다른 sequence를 바라보는 방식(encoder-decoder 구조에서 특히 중요)
결국 이들은 “attention을 어떻게 계산할지”를 바꿔서, order/causality/multi-source 정보를 더 잘 다루게 해주는 장치라고 보면 됩니다.
Transformer가 거의 모든 옛 설계를 밀어낸 이유
Transformer가 이긴 이유는 멋진 단어 때문이 아니고, 딱 두 가지를 동시에 해결했기 때문입니다.
- parallelism: token을 동시에 처리하니 training이 훨씬 빨라졌다
- long-range context: 멀리 떨어진 정보도 직접 연결할 수 있다
여기에 residual connections, layer normalization 같은 안정 장치까지 더해져서 깊게 쌓아도 잘 학습되고, 다양한 task에 맞게 변형하기 쉬운 “범용 구조”가 됐어요.
translation, summarization, text generation… 다 소화합니다.
그리고 이게 언어에만 머물지 않았죠.
언어 밖으로도 확장: images, audio, code까지
Transformer가 빛나는 조건은 단순합니다.
데이터를 “서로 상호작용해야 하는 요소들의 sequence”로 볼 수 있으면, Transformer는 강하다.
그래서 language를 넘어
- images
- audio
- code
같은 영역으로 자연스럽게 확장됐어요.
또, 형태도 두 가지 큰 갈래로 자주 쓰입니다.
- encoder-decoder(원 논문처럼 translation에 적합)
- decoder-only(예: GPT 같은 text generation 중심)
겉모습은 달라도, 중심 아이디어는 같아요.
토큰들이 서로 대화한다는 것.
결국 남는 결론: 마법이 아니라 “소통”이다
정리해보면 Transformer는 이런 조합입니다.
- attention으로 토큰 간 정보 교환
- MLP로 토큰별 정리/정제
- positional information으로 순서 감각 부여
- matrix 연산으로 빠른 parallel 처리
- training으로 attention 패턴을 의미 있게 최적화
- masked/multi-head/cross attention 같은 변형으로 상황별 강화
그래서 마지막에 남는 메시지는 깔끔해요.
Transformer는 입력들이 서로 말할 수 있게 만든 네트워크다.
마법이 아니라, communication.
그리고 그게 “attention is all we need”라는 말이 계속 살아 있는 이유죠.
한눈에 보는 핵심 포인트 (스캔용)
- ML은 input → output 매핑을 학습한다
- sequence task는 문맥이 핵심이라 token을 독립 처리하면 의미가 무너진다
- RNN/LSTM은 step-by-step 처리라 느리고, 긴 의존성에 약했다
- Transformer는 attention으로 token들이 직접 상호작용하게 만들었다
- block은 attention + MLP로 구성되고, residual connections/layer normalization으로 안정화한다
- 처리 흐름: tokenizer → embeddings → positional information 추가 → (attention/MLP 반복) → context-aware representations
- self-attention은 Query/Key/Value, dot product, softmax weights, weighted sum으로 작동한다
- matrix 형태로 병렬 계산이 가능해 효율이 좋다
- masked/multi-head/cross attention은 causality, 다양한 관계, 다중 입력을 돕는다
- Transformer는 language뿐 아니라 images/audio/code로 확장된다
FAQ (2026 감각으로, 사람들이 진짜 묻는 질문들)
1) “Attention Is All You Need”가 새로 제시한 건 뭔가요?
Transformer architecture예요. recurrence 없이 attention 중심으로 문맥을 처리하게 만들었습니다.
2) RNN/LSTM은 왜 training이 느렸죠?
token을 sequential하게 처리해서 parallel computation이 어렵기 때문입니다.
3) attention이 해결하는 핵심 문제는요?
각 token이 다른 token들을 직접 바라보고, 필요한 문맥 정보를 선택적으로 끌어오는 능력을 제공합니다.
4) Query/Key/Value를 아주 쉽게 말하면?
Query는 “내가 찾는 것”, Key는 “내가 가진 단서”, Value는 “실제 전달 내용”이에요.
5) Transformer는 순서를 원래 모른다면서요—그럼 문장 순서는 어떻게 알아요?
embeddings에 positional information을 더해서 token 위치를 알려줍니다.
6) Transformer block 안에서 매번 무슨 일이 벌어지나요?
attention으로 정보를 섞고, MLP로 각 token 표현을 다듬고, residual connections/layer normalization으로 학습을 안정화합니다.
7) attention을 matrix로 계산하는 게 왜 그렇게 중요하죠?
token 간 상호작용을 한 번에 parallel로 처리할 수 있어서 효율이 크게 올라갑니다.
8) masked attention은 언제 필요해요?
text generation처럼 미래 token을 보면 안 되는 상황에서 causality를 지키려고 씁니다.
9) multi-head attention은 왜 head를 여러 개 쓰나요?
관계의 종류가 하나가 아니기 때문이에요. 여러 관점을 동시에 학습하게 해줍니다.
10) cross attention은 어디에 쓰나요?
한 sequence가 다른 sequence를 참고해야 할 때(대표적으로 encoder-decoder 구조) 사용합니다.
11) Transformer는 GPT 같은 language model에만 쓰이나요?
아니요. sequence로 볼 수 있는 데이터면 images/audio/code 등에도 널리 적용됩니다.
12) Transformer를 가장 단순하게 떠올리는 방법 하나만 주세요
“입력들이 서로 대화할 수 있는 네트워크”라고 생각하면 됩니다. 소통 먼저, 정리 나중.
'SW > 인공지능' 카테고리의 다른 글
| Deepgram Saga 리뷰: 실시간 음성 받아쓰기와 AI 음성 에이전트, 뭐가 다른가? (0) | 2026.01.22 |
|---|---|
| Anthropic의 Bun 인수, AI 네이티브 소프트웨어 시대를 여는 신호 (0) | 2026.01.21 |
| EOMT란 무엇인가? ViT 기반 이미지 세그멘테이션을 단순화한 최신 모델 정리 (0) | 2026.01.16 |
| 소설 속 인물이 ‘살아 움직이는’ 다중 에이전트 사회를 만들 수 있을까? (0) | 2026.01.15 |
| 소프트웨어 엔지니어가 꼭 알아야 할 Networking 핵심 개념 (Single Server에서 Kubernetes까지, TravelBody 성장 스토리로 끝내기) (0) | 2026.01.14 |