

확률부터 LLM까지 — 데이터 사이언스 자기주도 학습 플랫폼
Query·Key·Value는 어텐션에서 각 토큰의 임베딩을 학습되는 세 행렬 Loading...로 투영해 만든 세 벡터로, Q는 "무엇을 찾는가", K는 "나는 어떤 정보인가", V는 "실제로 전달할 내용"의 역할을 맡는다.
이 내용은 넘스탯의 어텐션 시뮬레이터에서 직접 실험으로 확인할 수 있습니다.
각 단계를 클릭하면 해당 학습 내용을 볼 수 있습니다
학습 진도 (완료한 단계)
0%
어텐션은 각 토큰이 문장 안의 다른 토큰들에게서 필요한 정보를 끌어오는 장치입니다. 이때 각 토큰은 임베딩 벡터 하나로 세 가지 일을 동시에 해야 합니다 — 질문을 던지고(무엇이 필요한가), 검색에 응답하고(나는 어떤 정보인가), 내용을 전달하는(실제로 줄 것은 무엇인가) 일입니다. 그래서 하나의 임베딩을 세 개의 벡터, 즉 Query(질의)·Key(색인)·Value(내용)로 투영해 역할을 나눕니다.
문장 속 토큰 "먹었다"가 목적어를 찾는 상황을 아주 작은 숫자로 흉내 냅니다. "먹었다"의 Query: q = [1, 0] ("먹을 수 있는 것"을 찾는 질의라고 가정) "사과"의 Key: k1 = [1, 0] (음식 성질을 광고) "어제"의 Key: k2 = [0, 1] (시간 성질을 광고) 유사도 = 내적: q·k1 = 1×1 + 0×0 = 1 ← "사과"와 잘 맞음 q·k2 = 1×0 + 0×1 = 0 ← "어제"와는 무관 softmax로 가중치 변환: e^1/(e^1+e^0) ≈ 0.731, e^0/(e^1+e^0) ≈ 0.269 → "먹었다"는 "사과"의 Value를 73%, "어제"의 Value를 27% 비율로 섞어 가져옵니다.
정답: Query는 검색창에 입력하는 검색어, Key는 책 등에 붙은 색인 라벨, Value는 책 속의 실제 내용입니다. 검색어와 색인을 대조해 관련도를 매기고, 관련도가 높은 책의 내용을 많이 가져옵니다.
정답: 모두 같은 토큰 임베딩 하나에서 만들어집니다. 임베딩에 학습되는 세 행렬 Loading...를 각각 곱해 서로 다른 세 벡터로 투영합니다.
정답: 한 토큰의 Query와 다른 토큰의 Key의 내적으로 판단합니다. 내적이 클수록 관련이 높다고 보고, softmax를 거쳐 그 토큰의 Value를 더 큰 비중으로 가져옵니다.