Attention Mechanism
— LLM의 핵심을 이해하다

목차
1. 왜 Attention이 필요한가? 2. Attention의 직관적 이해 3. Query, Key, Value — 세 가지 역할 4. Scaled Dot-Product Attention 5. Self-Attention: 스스로를 바라보다 6. Attention Score 시각화 7. 정리 & 다음 편 예고

1왜 Attention이 필요한가?

ChatGPT, Claude, Gemini — 우리가 매일 사용하는 AI의 핵심에는 Attention Mechanism이 있습니다. 2017년 Google이 발표한 논문 "Attention Is All You Need"에서 등장한 이 개념은, 현대 AI의 가장 중요한 돌파구 중 하나입니다.

하지만 Attention이 왜 필요했을까요? 그 이전에는 무엇이 있었을까요?

📌 핵심 문제: 긴 문장의 정보 손실
기존의 RNN(순환 신경망)은 문장을 순서대로 한 단어씩 처리합니다. "나는 어제 공원에서 친구와 축구를 했다"라는 문장에서, 마지막 단어 "했다"를 처리할 때 앞의 "나는"이라는 정보는 여러 단계를 거치며 희미해집니다. 이것이 바로 장기 의존성(Long-term Dependency) 문제입니다.
💡 비유로 이해하기

RNN은 전화 게임(Chinese Whispers)과 같습니다. 첫 번째 사람이 한 말이 10명을 거치면 원래 의미가 왜곡되죠. 반면 Attention은 모든 사람이 동시에 원본 메시지를 직접 참조할 수 있게 해줍니다.

RNN의 정보 전달 방식
나는
어제
공원에서
...
했다

⚠️ 정보가 순서대로 전달되면서 초기 정보가 점점 희미해진다

Attention의 정보 접근 방식
했다 나는 어제 공원에서 친구와 축구를 0.10 0.05 0.25 0.50

✅ "했다"가 모든 단어를 직접 참조하며, 관련 정보("축구를")에 더 높은 가중치를 부여한다

RNN Attention 정보 접근 순차적 (직전 상태만) 모든 위치에 직접 접근 긴 문장 정보 손실 심각 거리 무관하게 참조 병렬화 불가능 (순서 의존) 완전한 병렬 처리 계산 복잡도 O(n) 순차 O(n²) 이지만 병렬

2Attention의 직관적 이해

Attention의 핵심 아이디어는 놀랍도록 단순합니다:

"
중요한 것에 더 집중하고,
덜 중요한 것은 무시한다.
— Attention의 본질

우리가 문장을 읽을 때도 마찬가지입니다. "그 고양이가 매트 위에서 잠을 잤는데, 그것은 매우 편안해 보였다"에서 "그것"이 무엇을 가리키는지 이해하려면, 우리는 자연스럽게 "고양이"에 주의(attention)를 기울입니다.

🔍 비유로 이해하기

도서관에서 리포트를 쓴다고 상상해보세요. 책장에 100권의 책이 있지만, 여러분은 주제에 관련된 책 3~4권에만 집중합니다. Attention도 마찬가지로 — 입력의 모든 부분을 보되, 현재 작업에 관련된 부분에 더 큰 가중치를 부여합니다.

이것을 수학적으로 표현하면:

기본 개념
Output = α₁ · v₁ + α₂ · v₂ + ... + αₙ · vₙ
여기서 α₁ + α₂ + ... + αₙ = 1 (가중치의 합은 항상 1)
📐 가중 평균(Weighted Average)의 원리
Attention은 본질적으로 가중 평균입니다. 각 입력 값(value)에 중요도(attention weight)를 곱해서 더합니다. 중요한 정보는 큰 가중치를, 무관한 정보는 작은 가중치를 받습니다. 이 가중치들은 학습을 통해 자동으로 결정됩니다.

3Query, Key, Value — 세 가지 역할

Attention을 이해하는 열쇠는 Query(Q), Key(K), Value(V)라는 세 가지 개념입니다. 이 세 가지는 각각 다른 역할을 합니다.

🔑 비유: 검색 엔진

Google 검색을 떠올려 보세요.

Query = 검색창에 입력하는 질문 ("attention mechanism이 뭐야?")
Key = 각 웹페이지의 제목/태그 (검색어와 비교되는 것)
Value = 웹페이지의 실제 내용 (우리가 원하는 정보)

Query와 Key를 비교해서 관련도(score)를 매기고, 그 점수에 따라 Value를 가중 합산하는 것이 Attention입니다.

1

Query 생성 — "무엇을 찾고 있는가?"

현재 처리 중인 단어가 다른 단어들에게 던지는 질문입니다. "나와 관련된 정보가 있니?" 라고 모든 단어에게 물어보는 것과 같습니다.

q = x · W_Q   // 입력 x를 Query 행렬로 변환
2

Key 생성 — "나는 이런 정보를 가지고 있다"

각 단어가 자신을 설명하는 라벨입니다. Query가 "축구 관련 정보 있어?" 라고 물으면, Key는 "나는 스포츠 관련 단어야!" 라고 대답합니다.

k = x · W_K   // 입력 x를 Key 행렬로 변환
3

Value 생성 — "실제 전달할 정보"

단어가 담고 있는 실질적인 내용입니다. Query-Key 비교로 관련도가 높다고 판단되면, 이 Value가 최종 출력에 더 많이 반영됩니다.

v = x · W_V   // 입력 x를 Value 행렬로 변환
💡 왜 Q, K, V를 분리할까?
하나의 입력 벡터 x에서 세 가지 서로 다른 선형 변환(W_Q, W_K, W_V)을 적용해 각각의 역할을 분리합니다. 이렇게 하면 모델이 "질문하는 방식", "자신을 소개하는 방식", "전달하는 정보"를 독립적으로 학습할 수 있습니다. 같은 단어도 맥락에 따라 다른 Q, K, V를 갖게 됩니다.
Q, K, V 생성 과정
입력 벡터 x × W_Q × W_K × W_V Query (Q) Key (K) Value (V) "무엇을 찾는가?" "나는 무엇인가?" "전달할 정보" Q · K → Score Score × V → Output

4Scaled Dot-Product Attention

이제 Attention의 정확한 수학적 공식을 살펴봅시다. 이것이 Transformer의 핵심 연산입니다.

핵심 공식
Attention(Q, K, V) = softmax( Q · Kᵀ / √d_k ) · V

이 공식을 한 단계씩 분해해 봅시다:

1

유사도 계산: Q · Kᵀ

Query와 Key의 내적(dot product)을 계산합니다. 두 벡터가 비슷한 방향을 가리킬수록 내적 값이 커집니다. 이 값이 바로 두 단어 사이의 관련도 점수(score)입니다.

score = Q · Kᵀ   // 결과: n × n 행렬 (모든 쌍의 유사도)
2

스케일링: / √d_k

내적 값을 Key 벡터의 차원 수(d_k)의 제곱근으로 나눕니다. 왜? 차원이 클수록 내적 값이 커져서 softmax가 극단적인 값(거의 0 또는 1)을 출력합니다. 스케일링으로 이를 방지합니다.

scaled = score / √d_k   // d_k=64일 때, √64 = 8로 나눔
3

정규화: softmax

스케일링된 점수에 softmax를 적용합니다. 모든 값을 0~1 사이로 변환하고, 합이 정확히 1이 되게 합니다. 이것이 바로 Attention Weight(주의 가중치)입니다.

weights = softmax(scaled)   // 각 행의 합 = 1.0
4

가중 합산: × V

Attention Weight와 Value 벡터를 곱해서 더합니다. 중요한 단어의 Value는 크게, 덜 중요한 단어의 Value는 작게 반영됩니다. 이것이 Attention의 최종 출력입니다.

output = weights · V   // 가중 합산 → 문맥이 반영된 벡터
⚠️ √d_k로 나누는 이유 — 수학적 직관
d_k차원의 두 랜덤 벡터의 내적의 분산은 d_k에 비례합니다. 즉 차원이 512이면 내적 값이 매우 커질 수 있습니다. softmax는 입력이 크면 하나에만 거의 1을 주고 나머지는 0으로 만듭니다(포화 현상). √d_k로 나누면 분산이 1로 정규화되어 softmax가 부드러운 분포를 유지합니다.

🔢 구체적 예시로 따라가기

문장 "I love AI"에서 "love"의 Attention을 계산해 봅시다. (d_k = 4로 단순화)

Step 1: Q · Kᵀ (유사도 계산)
0.5 1.2 0.3 0.8
Q ("love")
·
0.2 0.8 1.1
0.9 1.0 0.7
0.1 0.4 0.6
0.7 0.3 1.0
Kᵀ (모든 단어의 Key)
=
1.77 2.06 2.21
Score: [I, love, AI]
Step 2 & 3: 스케일링 + Softmax
[1.77, 2.06, 2.21]
÷√4
[0.89, 1.03, 1.11]
softmax
[0.28, 0.33, 0.36]

"love"는 "AI"에 0.36, 자기 자신에 0.33, "I"에 0.28의 가중치를 부여

5Self-Attention: 스스로를 바라보다

Transformer에서 사용되는 Attention은 특별히 Self-Attention이라고 합니다. "Self"가 붙는 이유는, 같은 문장 내의 단어들끼리 서로를 참조하기 때문입니다.

🔄 Self-Attention vs Cross-Attention
Self-Attention: Q, K, V가 모두 같은 입력에서 나옵니다. 문장 내 단어들이 서로를 참조합니다.

Cross-Attention: Q는 한 곳에서, K와 V는 다른 곳에서 옵니다. 예: 번역에서 한국어 문장(Q)이 영어 문장(K, V)을 참조합니다.

Self-Attention이 강력한 이유는, 문맥에 따라 같은 단어도 다르게 표현할 수 있기 때문입니다:

Self-Attention의 문맥 이해
문장 1: "나는 사과 를 먹었다" 먹었다 → 과일! → "과일" 의미 강화 문장 2: "그는 사과 를 했다" 했다 → 행동! → "사죄" 의미 강화 같은 "사과"라는 단어가 문맥에 따라 Self-Attention을 통해 완전히 다른 의미를 갖게 됩니다

이것이 Self-Attention의 진정한 힘입니다. 각 단어가 주변 문맥을 능동적으로 수집하여, 단순한 단어 임베딩을 문맥이 반영된 풍부한 표현으로 변환합니다.

6Attention Score 시각화

실제로 Attention이 어떤 단어에 집중하는지 히트맵으로 시각화할 수 있습니다. 아래는 "The cat sat on the mat because it was tired"에서 각 단어의 Attention 분포를 보여줍니다.

Attention Score Heatmap (예시)
The cat sat on mat it was tired
it
0.03
0.42
0.08
0.02
0.10
0.20
0.05
0.10
tired
0.02
0.30
0.12
0.03
0.05
0.20
0.10
0.18
sat
0.04
0.35
0.15
0.16
0.20
0.02
0.03
0.05

"it"이 "cat"에 0.42로 가장 높은 attention — 대명사가 올바른 선행사를 찾아냄!

🎯 Attention이 하는 일의 본질
위 히트맵에서 핵심적인 발견: "it"은 "cat"에 가장 높은 attention을 줍니다. 이것은 모델이 "it"이 "cat"을 가리킨다는 것을 스스로 학습했다는 뜻입니다. 이런 대명사 해소(coreference resolution)는 전통적 NLP에서 매우 어려운 문제였지만, Self-Attention은 이를 자연스럽게 해결합니다.

7정리 & 다음 편 예고

Q · Kᵀ
유사도 계산
softmax
가중치 정규화
× V
정보 추출
📝
이번 글에서 배운 것
  • RNN의 한계와 Attention이 필요한 이유
  • Attention = 가중 평균이라는 핵심 직관
  • Query, Key, Value의 역할과 의미
  • Scaled Dot-Product Attention의 수학적 공식과 각 단계
  • Self-Attention이 문맥을 이해하는 방법
  • Attention Score를 히트맵으로 시각화하는 방법
🔮
다음 편: Multi-Head Attention & Transformer 아키텍처

Attention 하나만으로는 부족합니다. 다음 편에서는:
Multi-Head Attention으로 여러 관점에서 동시에 바라보는 방법,
그리고 이것을 쌓아 올려 만든 Transformer 아키텍처의 전체 구조를 다룹니다.

공유하기
JS
Juwon Seo
경기북과학고 · AI Engineer × Creative Developer
LLM 기초 시리즈를 연재합니다. 다음 편을 기대해 주세요!