QKV를 1분 만에 이해하기 — 외우지 말고 문제를 기억하라

← 전체 목차 · 이전: 왜 대규모 모델은 전부 Transformer를 선택했나 · 다음: "다음 단어 예측"만으로는 부족하다 — LLM 추론 전 과정

Q, K, V는 외우지 마라. 세 기호를 정의로 암기하는 대신 그것들이 함께 푸는 하나의 문제를 기억해야 한다.

한 문장 안에서, 어떤 단어가 어떤 단어들을 중점적으로 참조해야 하는가, 그리고 참조하고 나서 무슨 정보를 가져오는가.

문제를 기억하면 세 기호는 저절로 제자리를 찾는다.

핵심 비유: 자료를 찾는 과정

기호비유 대상한 줄 책임
Q (Query)내 손에 든 질문무엇을 찾으려 하는가
K (Key)자료의 제목과 태그자기가 무엇인지 설명한다
V (Value)자료의 본문실제로 내용을 제공한다

흐름: Query --매칭--> Key --추출--> Value

계산 흐름: Q와 K로 유사도 → 점수 → V 집계

  1. 매칭할 때는 Query로 Key와 유사도를 계산한다.
  2. 유사도가 높을수록 그 정보가 주목할 가치가 크다(가중치가 크다).
  3. 모델이 어떤 단어를 처리할 때는 그 단어의 Q다른 단어들의 K에 점수를 매긴다.
  4. 점수를 softmax로 정규화한 뒤 그 가중치대로 V를 집계한다.

가장 자주 나오는 구분: K는 "누구를 볼지", V는 "무엇을 보았는지"

  • 점수를 매기고 나서 실제로 집계되는 것은 Value다.
  • Key는 "누구를 볼지" 판정에만 쓰인다(매칭도 판단용).
  • Value가 "무엇을 보았는지"를 제공한다.

한 줄로: K는 점수 계산에 참여하지만 출력에 들어가지 않고, V는 점수 계산에 참여하지 않지만 출력을 구성한다.

지시 대상 해소 예시

문장: "사과가 땅에 떨어졌다, 왜냐하면 그것이 익었기 때문이다."

  • 모델은 "그것"이 사과를 가리킨다고 판단해야 한다.
  • 방법: "그것"의 Query를 앞의 단어들과 매칭시켜 유사도가 높은 "사과"를 찾고, 관련 단어의 Value에서 정보를 가져온다.

한 줄 정리 (그대로 암기 가능)

Q는 현재 token의 질문, K는 다른 token들의 인덱스 태그, V는 내용 자체다. 그리고 Attention은 Q와 K로 가중치를 계산한 뒤, 그 가중치대로 V를 집계하는 것이다.

핵심 통찰

  1. 먼저 "문제"를 기억하고, 그다음에 "기호"를 기억할 것 — QKV가 외우기 어려운 이유는 대부분 세 글자의 정의를 외우고 그것들이 함께 봉사하는 하나의 문제("누구를 볼지 + 무엇을 볼지")를 외우지 않기 때문이다. 문제를 기억하면 세 기호는 자동으로 제자리를 찾는다.
  2. K와 V의 분업이 가장 큰 채점 포인트다 — K는 점수 계산에만 참여(주의력 가중치를 누구에게 배분할지 결정), V는 출력에만 참여(집계되어 들어오는 내용이 무엇인지 결정). 공식을 복창하는 것보다 이 점을 스스로 말할 수 있는 편이 이해의 깊이를 훨씬 잘 드러낸다.
  3. Attention의 본질은 한 번의 "소프트 검색"이다 — 태그(Key)가 달린 항목들을 Query로 검색해, 관련도에 따라 가중하여 본문(Value)을 가져온다. RAG의 검색-리콜 패러다임과 직관적으로 동형이며, 다만 Attention의 검색은 미분 가능하고 조밀하며 매 층 매 token마다 한 번씩 수행된다.
  4. 유사도가 곧 가중치이고, 가중치가 곧 "참조 정도"다 — softmax 이후의 주의력 점수를 "참조 비율"로 이해하는 편이 추상적인 행렬 곱으로 이해하는 것보다 구두 설명에 유리하다.
  5. 지시 대상 해소는 Self-Attention을 설명하는 가장 경제적인 예시다 — "그것"이 무엇을 가리키는지는 누구나 직관이 있고, 반드시 문맥에 의존해야 풀리는 과제이므로 Q가 앞 문맥에서 K를 찾는 과정에 자연스럽게 대응된다.
  6. "한 단어의 Q로 다른 단어들의 K에 점수를 매긴다"는 문장에 Self-Attention의 정의가 숨어 있다 — Q와 K가 같은 시퀀스에서 나와야 Self-Attention이다. Q가 다른 시퀀스(디코더 측 등)에서 오면 Cross-Attention이 된다. 추가 질문을 받았을 때의 가점 포인트다.

엔지니어링 실전 Tips

  • 비유를 먼저, 공식은 나중에: softmax(QKᵀ/√d)V를 곧바로 던지면 디테일을 파고드는 추가 질문에 말리기 쉽다. "자료 찾기"로 공감대를 만든 뒤 공식을 보태는 편이 안정적이다.
  • 소스가 말하지 않은 두 가지를 보태면 차이가 크게 벌어진다:
    • 스케일링 인자 √d_k: 나누지 않으면 내적의 분산이 차원에 비례해 커지고, softmax가 포화 구간에 들어가 기울기가 소실된다.
    • 다중 헤드(Multi-Head): 단일 QKV 조합은 한 가지 "참조 관계"만 표현할 수 있다. 다중 헤드는 문법·지시·의미 등 서로 다른 부분 공간을 동시에 주목하게 한다.
  • K와 V를 같은 것으로 말하지 말 것: 구현상 K와 V가 같은 은닉 상태를 서로 다른 선형 층에 통과시켜 얻어지더라도, 책임은 구분해서 설명해야 한다. 그렇지 않으면 결론을 외운 것으로 보인다.
  • KV Cache와 연결할 것: K/V가 "다른 token들의 태그와 내용"이라면, 추론 시 이미 생성된 token에 대해서는 불변이다. 이것이 KV Cache가 성립하는 전제이며, 여기서 자연히 이어지는 고빈도 추가 질문이다.
  • 예시 점수(90/70/50)는 어디까지나 예시: 실제 주의력 가중치는 softmax 정규화 후의 확률이며 합이 1이다. 구두 설명 시 "점수"를 최종 가중치라고 말하지 말고 "softmax 정규화를 거친다"를 한 문장 보탤 것.
  • 이어지는 학습 경로: 왜 √d_k로 나누는가 → Multi-Head의 역할 → KV Cache 원리 → MHA/MQA/GQA의 차이 → Flash Attention이 해결한 문제. 전부 QKV에서 직접 자라나는 추가 질문들이다.