티스토리 뷰

반응형

딥러닝 기초학습 8: Attention의 등장 — “기억하지 말고, 필요할 때 찾아보자”


LSTM까지 왔을 때, 나는 이런 생각이 들었다.

“이 정도면 충분히 똑똑한 거 아닌가?”

그런데 번역 모델을 실제로 써보면 꼭 이런 문제가 터진다.

  • 문장이 길어질수록 성능이 급격히 떨어지고
  • 앞부분 정보는 거의 잊어버리고
  • 중요한 단어가 있어도 제대로 반영이 안 된다

이때 나온 발상의 전환이 딥러닝 역사를 바꿨다.

👉 “기억을 억지로 들고 있지 말고,
필요할 때마다 다시 꺼내보자.”

이 아이디어가 바로 Attention 이다.

이번 글에서는

  • Attention이 왜 나왔는지
  • 기존 RNN/LSTM과 뭐가 근본적으로 달라졌는지
  • Query / Key / Value가 왜 필요한지
    를 수식 최소 + 직관 중심으로 설명한다.

1. LSTM의 한계를 다시 정확히 짚어보자

LSTM은 “기억 관리”를 정말 잘했다.
하지만 구조적 한계는 분명했다.

❌ 문제 1: 모든 정보를 하나의 벡터에 압축

  • 문장이 길어질수록 정보 손실
  • 중요한 단어와 덜 중요한 단어의 구분이 흐려짐

❌ 문제 2: 순차 처리

  • 앞 단어 → 뒤 단어 순서로만 계산
  • 병렬화 불가능 → 느림

❌ 문제 3: 장거리 의존성

  • 문장 앞과 뒤가 멀면 멀수록 연결이 약해짐

그래서 이런 질문이 자연스럽게 나왔다.

“굳이 과거 정보를 계속 들고 있어야 할까?”
“필요할 때 그 시점의 정보를 바로 참조하면 안 될까?”


2. Attention의 핵심 아이디어 (진짜 중요)

반응형

Attention의 본질은 딱 한 문장이다.

“현재 내가 보고 있는 것과
과거의 모든 정보 중에서
가장 관련 있는 것에 집중하자.”

즉,

  • 모든 과거 정보를 저장해 두고
  • 현재 시점에서 중요한 것만 골라서 사용

👉 이게 검색(search) 에 가깝다는 느낌이 든다.


3. 번역 예제로 보는 Attention의 직관

영어 → 한국어 번역을 생각해보자.

“I ate an apple because I was hungry.”

한국어로 번역할 때

  • “because”를 번역하는 순간
  • “hungry”와 강하게 연결되어야 한다

LSTM은:

  • 마지막 hidden state 하나로 전체 문장을 요약

Attention은:

  • “because”를 번역할 때
    문장 전체를 다시 보면서
    hungry 쪽에 높은 가중치
    를 준다

👉 이게 “집중(attention)”이다.


4. Attention을 구성하는 3요소: Query, Key, Value

여기서 사람들이 가장 헷갈린다.
근데 비유 하나면 끝난다.

📌 도서관 검색 비유

  • Query (Q) : 내가 지금 찾고 싶은 질문
  • Key (K) : 책들의 색인(목차, 키워드)
  • Value (V) : 책의 실제 내용

과정은 이렇다:

  1. Query로 모든 Key와의 유사도 계산
  2. 유사도가 높은 Key에 가중치 부여
  3. 그 가중치로 Value를 가중합

👉 결과 = 지금 상황에 가장 필요한 정보


5. Attention 계산 흐름 (개념적)

수식 말고 흐름으로 보자.

입력 시퀀스
 → (Key, Value로 변환)
현재 상태
 → Query 생성

Query × Key → 중요도 점수
중요도 점수 → Softmax
Softmax × Value → Attention Output

핵심은 이것이다:

모든 입력을 동일하게 보지 않는다.
상황에 따라 중요도를 다르게 본다.


6. Self-Attention — 진짜 혁명

Attention은 원래 Encoder–Decoder 구조에서 쓰였다.
그런데 한 단계 더 나간 아이디어가 나왔다.

“Query, Key, Value를
전부 **같은 입력에서 만들면 어떨까?”

이게 바로 Self-Attention이다.

Self-Attention의 의미

  • 문장 안에서
    단어들이 서로를 바라본다
  • 각 단어가
    “이 문장에서 나랑 제일 관련 있는 단어가 뭐지?”
    를 스스로 계산

그래서:

  • 장거리 의존성 문제 해결
  • 순서 상관없이 모든 단어 간 관계 학습 가능

7. 왜 Attention이 RNN을 이겼을까?

항목RNN/LSTMAttention

정보 접근 순차적 전체 동시 접근
장거리 의존성 약함 매우 강함
병렬 처리 불가 가능
속도 느림 빠름
구조 깊고 복잡 단순한 연산 조합

이 차이 때문에
Attention은 “구조 자체가 다른 모델” 이다.


8. PyTorch로 Attention 개념 맛보기

실제 코드로 보면 훨씬 감이 온다.

import torch
import torch.nn.functional as F

# 임의의 Query, Key, Value
Q = torch.randn(1, 4, 8)  # (batch, seq_len, dim)
K = torch.randn(1, 4, 8)
V = torch.randn(1, 4, 8)

# Attention score
scores = torch.matmul(Q, K.transpose(-2, -1)) / (8 ** 0.5)

# 가중치
weights = F.softmax(scores, dim=-1)

# 결과
output = torch.matmul(weights, V)

print(output.shape)  # (1, 4, 8)

✔ 실제 Transformer 내부에서 하는 계산의 축소판
✔ 그대로 실행 가능


9. Attention의 철학 (이게 중요하다)

Attention은 단순한 기술이 아니다.
사고방식의 전환이다.

  • ❌ “기억하려고 애쓰지 말자”
  • ✅ “필요할 때 꺼내 쓰자”
  • ❌ “순서대로만 보자”
  • ✅ “전체를 한 번에 보자”

이 철학이:

  • Transformer
  • BERT
  • GPT
  • LLM 전부의 출발점이다

10. 요약 정리

개념한 줄 요약

Attention 필요한 정보에 집중하는 메커니즘
Query 지금 내가 찾는 기준
Key 비교 기준
Value 실제 정보
Self-Attention 입력끼리 서로를 바라봄
핵심 장점 장거리 의존성 + 병렬 처리

📘 다음 글 예고

👉 딥러닝 기초학습 9: Transformer 구조 완전 해부 — Encoder, Decoder, Multi-Head Attention의 정체

다음 글에서는 드디어

  • Transformer 전체 구조
  • 왜 Encoder/Decoder로 나뉘는지
  • Multi-Head Attention이 왜 필요한지
  • Positional Encoding은 왜 등장했는지

그림 없이도 머릿속에 구조가 그려지게 설명한다.



딥러닝,Attention,SelfAttention,Transformer,NLP,QueryKeyValue,시계열,언어모델,딥러닝기초,PyTorch

※ 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/04   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
글 보관함
반응형