Part 6 · Self-Attention - Searching for the Right Information

필요한 정보를 찾기 위한 세 가지 역할

Attention이 필요한 정보에 집중하려면 먼저 무엇을 찾고 있는지, 각 단어가 어떤 특징을 가지고 있는지, 그리고 선택한 단어에서 어떤 정보를 가져올지를 구분해야 합니다. Query, Key, Value는 이 세 가지 역할에 붙인 이름입니다. 하나의 단어는 정보를 찾을 때는 Query가 되고, 다른 단어에게 자신을 보여 줄 때는 Key가 되며, 선택되었을 때 전달할 내용은 Value가 됩니다.

A Library Story

도서관에서 원하는 책을 찾는 상황

여러분은 도서관에 왔습니다. 오늘 찾고 싶은 것은 “트랜스포머를 처음 배우는 사람을 위한 책”입니다.

내가 찾는 책: 트랜스포머를 처음부터 쉽게 설명하는 책
파이썬 입문

프로그래밍 기초와 문법을 다루는 책

표지와 제목을 확인
딥러닝 수학

행렬과 미분을 중심으로 설명하는 책

표지와 제목을 확인
처음 배우는 Transformer

Attention부터 Transformer까지 쉽게 설명하는 책

내가 찾는 내용과 가장 가까움
세계 요리 여행

여러 나라의 요리법을 소개하는 책

표지와 제목을 확인

우리는 모든 책을 처음부터 끝까지 읽지 않았습니다. 먼저 찾고 싶은 내용을 정하고, 책들의 표지와 제목을 비교한 뒤, 가장 알맞은 책에서 실제 내용을 읽었습니다.

무엇을 찾을지 정한다 트랜스포머 입문서
책의 표지를 본다 무슨 책인지 확인
가장 알맞은 책을 찾는다 관련성이 큰 책
책 속 내용을 읽는다 실제로 필요한 정보
Query, Key, Value는 바로 이 과정에서 각자가 맡은 역할에 붙인 이름입니다.
Three Roles

세 가지 역할을 아주 쉽게 나누어 보자

Q
Query

지금 내가 찾고 있는 것이 무엇인지 나타냅니다.

“트랜스포머 입문서를 찾고 있어.”
K
Key

각 책이 어떤 책인지 알아보기 위한 표지와 제목 같은 정보입니다.

“나는 파이썬 책이야.”
“나는 트랜스포머 책이야.”
V
Value

책을 선택한 뒤 실제로 읽고 가져올 내용입니다.

Attention과 Transformer에 대한 실제 설명
간단히 기억하면 됩니다. Query는 찾는 것, Key는 비교할 단서, Value는 실제 가져올 내용입니다.
Why Key and Value Are Separate

왜 Key와 Value를 따로 나눌까?

도서관에서 책을 찾을 때를 다시 생각해 봅시다. 책을 찾기 위해 처음부터 모든 페이지를 읽으면 너무 오래 걸립니다.

모든 책 내용을 먼저 읽기

책을 고르기도 전에 수천 권의 내용을 모두 읽어야 합니다.

너무 느리고 비효율적입니다.

표지로 찾고, 내용은 나중에 읽기

먼저 제목과 표지로 관련 있는 책을 찾습니다.

선택한 뒤 실제 내용을 읽습니다.

Key는 찾기 위한 단서이고, Value는 찾은 뒤 사용할 실제 정보입니다. 역할이 다르기 때문에 따로 나눕니다.
Back to a Sentence

이제 문장으로 돌아가 보자

다음 문장에서 He가 누구인지 이해하려고 합니다.

Tom lives in New York. He loves the city.
현재 궁금한 것: He는 누구를 가리킬까?

컴퓨터는 He가 찾고 있는 관계를 기준으로 문장 속 여러 단어를 하나씩 살펴봅니다.

Tom ★★★★★ 사람을 나타내는 이름
New York ★ 장소 이름
city ★ 장소를 나타내는 말
Query He가 지금 찾는 것 “나는 누구를 가리키지?”
→
Key 각 단어를 알아보기 위한 단서 사람인가, 장소인가, 행동인가?
→
Value 선택된 단어에서 가져올 정보 Tom이라는 사람의 의미
He의 Query와 Tom의 Key가 잘 맞으면, 컴퓨터는 Tom의 Value를 더 많이 가져와 He는 Tom을 가리킨다는 문맥을 만듭니다.
One Word, Three Views

한 단어에서 Query, Key, Value가 모두 만들어진다

Self-Attention에서는 문장 속 모든 단어가 다른 단어를 찾아보기도 하고, 다른 단어에게 선택되기도 하며, 자신의 정보를 내어주기도 합니다.

Q
찾을 때의 모습

이 단어가 지금 어떤 정보를 찾고 있는지 나타냅니다.

나에게 필요한 정보는 무엇일까?
K
검색될 때의 모습

다른 단어가 나를 찾을 수 있도록 내 특징을 보여줍니다.

나는 이런 역할을 가진 단어야.
V
정보를 줄 때의 모습

다른 단어가 나를 참고할 때 실제로 전달할 내용입니다.

선택되면 이 정보를 가져가.
Query, Key, Value는 서로 다른 단어 세 개를 뜻하지 않습니다. 각 단어가 상황에 따라 사용하는 세 가지 역할입니다.
Try the Roles

현재 단어가 바뀌면 찾는 정보도 달라진다

아래에서 현재 이해하려는 단어를 선택해 보세요. Query가 달라지면 잘 맞는 Key와 가져올 Value도 달라집니다.

문장

세 가지 역할

Query:
잘 맞는 Key:
가져올 Value:
What We Have Not Calculated Yet

아직 남은 질문이 있다

이제 Query, Key, Value가 각각 무슨 역할을 하는지는 이해했습니다. 하지만 컴퓨터는 여전히 한 가지 계산을 해야 합니다.

Query와 여러 Key 중에서 어느 Key가 가장 잘 맞는지 어떻게 숫자로 정할까?

사람은 Tom이 He와 관련 있다는 것을 자연스럽게 알지만, 컴퓨터는 그 관련성을 숫자로 계산해야 합니다.

다음 페이지에서는 Query와 Key를 비교해 Attention Score를 만드는 과정을 쉬운 예시부터 살펴봅니다.
Summary

핵심 정리

  • Query는 현재 찾고 있는 정보가 무엇인지 나타냅니다.
  • Key는 각 단어가 어떤 단어인지 비교할 수 있게 보여주는 단서입니다.
  • Value는 해당 단어가 선택되었을 때 실제로 가져올 정보입니다.
  • Key는 검색용 단서이고, Value는 실제 내용이므로 역할이 다릅니다.
  • Self-Attention에서는 모든 단어에서 Query, Key, Value가 각각 만들어집니다.
  • 다음 단계는 Query와 Key가 얼마나 잘 맞는지 숫자로 계산하는 것입니다.