|

어텐션 QKV 완전 정복 — AI의 심장을 3단계로 이해하는 법

어텐션이 AI의 핵심이라는 말은 많이 들었을 것이다. 그런데 정확히 무엇을 계산하는지 설명할 수 있는 사람은 드물다. 문장 속 단어 하나를 처리할 때, AI는 그 단어만 보지 않는다. 앞뒤 모든 단어를 동시에 펼쳐놓고, 그중 지금 가장 관련 있는 것이 무엇인지를 가려낸다.

이것이 바로 어텐션(Attention)이다. 지난 편까지 벡터의 내적과 임베딩을 다뤘다. 이번 편은 이 시리즈의 심장이다. 어텐션과 그 안의 QKV가 무엇인지, 왜 이것이 AI의 핵심인지를 다룬다. 결론을 먼저 말하면, 어텐션은 문맥을 만드는 메커니즘이고, QKV는 정답을 찍는 게 아니라 맥락을 만드는 세 개의 장치다.

어텐션이란 무엇인가

어텐션이란 문장의 모든 단어를 한 번에 펼쳐놓고, 지금 다루는 단어가 다른 단어들과 얼마나 관련 있는지를 계산해 문맥(맥락)을 만드는 메커니즘이다. 앞 편에서 임베딩으로 단어를 숫자로 바꿨지만, 그것만으로는 부족하다. “사과를 먹었다”의 사과와 “사과 신제품을 샀다”의 사과는 같은 단어지만 의미가 다르다. 이 차이를 만들어내는 것이 어텐션이다.

어텐션의 정체를 이해하려면 일반 데이터베이스와 비교하면 좋다. 일반 DB는 키(Key)를 주면 정해진 값(Value) 하나가 정확히 튀어나온다. 전화번호부에서 이름을 찾으면 번호가 나오는 식이다. 그런데 어텐션은 다르다. 정답 하나를 찍는 게 아니라, 주변 단어들과의 관계를 종합해 지금 이 단어가 처한 맥락을 만들어낸다. 이 차이가 어텐션의 본질이다.

QKV란 무엇인가 — 쿼리·키·밸류

어텐션의 가중치 안에는 세 가지가 숨어 있다. 쿼리(Query), 키(Key), 밸류(Value), 줄여서 QKV다. 이 셋의 역할을 F1 레이스 상황으로 풀어보자. 마지막 코너에 진입한 드라이버는 앞차와의 간격, 타이어 잔여 그립, 노면 온도, 남은 랩 수, 뒤차의 압박을 동시에 살피고, 그중 지금 가장 중요한 것에 집중한다.

구성이름역할F1 비유
Q쿼리현재 단어가 던지는 질문 리스트“지금 내게 가장 중요한 게 뭐지?”
K다른 단어들이 가진 특징각 정보가 내건 식별표
V밸류각 단어가 가진 실제 정보그 정보의 실제 내용

쿼리는 현재 단어가 던지는 질문 리스트다. “나는 음식인가, 동물인가, 어떤 역할을 하는가” 같은 질문이다. 마지막 코너에 진입한 드라이버가 “지금 가장 중요한 정보가 뭐지”라고 묻는 것과 같다. 키는 비교 대상이 되는 다른 단어들이 내건 특징이다. 앞차 간격, 타이어 상태, 뒤차 압박 같은 각 정보의 식별표다. 밸류는 각 단어가 실제로 담고 있는 정보다.

이 시나리오는 개념 설명을 위한 가상의 상황입니다. 실제 F1 팀의 전략과 다를 수 있습니다.

QKV는 어떻게 문맥을 만드는가

QKV가 맥락을 만드는 과정은 세 단계다.

첫째, 쿼리(Q)와 키(K)를 내적한다. 지난 편에서 내적은 두 벡터의 유사도라고 했다. 즉 현재 단어의 질문과 다른 단어들의 특징이 얼마나 맞아떨어지는지를 점수로 계산한다. 드라이버가 “지금 중요한 게 뭐지”라는 질문을 던지고, 앞차 간격, 타이어, 뒤차 정보 각각이 그 질문에 얼마나 관련 있는지를 따지는 것이다.

둘째, 그 점수를 확률로 바꾼다. 어느 단어가 90퍼센트 관련, 어느 단어가 7퍼센트, 어느 단어가 3퍼센트 관련 있는지 분포가 나온다. 셋째, 이 확률로 밸류(V)를 가중합한다. 90퍼센트짜리 정보는 강하게, 3퍼센트짜리는 약하게 섞어 하나의 새로운 벡터를 만든다. 이 결과물이 바로 컨텍스트 벡터(맥락)다. 특정 단어 하나가 아니라, “지금 이 단어가 처한 상황”을 담은 벡터다.

QKV 어텐션이 중요한 정보에 가중치를 두는 장면을 표현한 삽화

핵심은 이것이다. QKV는 정답을 찍지 않는다. 맥락을 만든다. 드라이버가 “앞차 간격”이라는 단일 답을 고르는 게 아니라, 모든 정보를 종합한 “지금 이 순간의 상황 판단”을 만들어내는 것과 같다.

QKV의 중요한 규칙들

QKV를 제대로 이해하려면 몇 가지 규칙을 알아야 한다.

먼저 가중치 공유다. Q를 만드는 가중치(WQ), K를 만드는 가중치(WK), V를 만드는 가중치(WV)는 모든 단어가 공유한다. 고양이든 비행기든 같은 변환 규칙을 쓴다. 이렇게 해야 일반화가 잘 되고 학습 효율이 높아진다. 단어마다 전용 규칙을 만들면 데이터가 폭발하고 학습이 어려워진다.

규칙내용
가중치 공유WQ·WK·WV는 모든 단어가 공유
레이어별 차이층마다 가중치가 다름 (문법·의미·추론 등)
멀티헤드큰 차원을 여러 헤드로 쪼개 병렬 처리
학습 시작랜덤한 작은 값에서 출발해 최적화

다음은 레이어별 차이다. WQ, WK, WV는 한 레이어 안에서는 모든 단어가 공유하지만, 레이어마다는 다르다. 1층은 문법, 2층은 의미, 3층은 추론처럼 각 층이 다른 방향으로 처리한다(실제 역할은 예시일 뿐, 정확히 무엇인지는 사람이 들여다봐도 해석되지 않는 영역이다).

그리고 멀티헤드 어텐션이 있다. 12,288차원 같은 큰 차원을 96개 헤드로 쪼개(각 128차원) 병렬로 처리한다. 헤드마다 문법, 시간, 감정처럼 서로 다른 관점에서 같은 문장을 본다. 마지막으로 학습 시작 시 WQ, WK, WV는 랜덤한 작은 값에서 출발해 학습을 거치며 최적화된다.

어텐션이 AI의 심장인 이유

왜 어텐션이 AI의 심장일까. 이전 방식인 RNN, LSTM은 단어를 순차적으로 처리했다. 그래서 문장이 길어지면 앞 단어를 점점 잊는 장기 의존성 문제가 생겼다. “예선에서 가장 빨랐던 머신이 결승에서는 끝내 순위를 지키지 못했다”에서 “지키지 못했다”를 만들 때쯤이면 “예선”과 “가장 빨랐던”이 흐려지는 식이다.

어텐션은 이 문제를 정면으로 해결했다. 문장의 모든 단어를 동시에 펼쳐놓고 한 번에 관계를 계산하기 때문이다. 멀리 떨어진 단어도 똑같이 선명하게 본다. 마지막 코너의 드라이버가 앞차, 타이어, 뒤차를 동시에 보는 것처럼, 어텐션은 문장 전체를 한눈에 보고 지금 가장 중요한 것에 집중한다. 그래서 어텐션을 모르면 AI를 안다고 말하기 어렵고, QKV를 모르면 어텐션을 안다고 말하기 어렵다.

핵심 요약

이번 편의 핵심은 세 가지다. 첫째, 어텐션은 문장의 모든 단어를 펼쳐놓고 관계를 계산해 문맥을 만드는 메커니즘이며, 일반 DB처럼 정답을 찍는 게 아니라 맥락을 만든다. 둘째, QKV는 쿼리(질문 리스트), 키(특징), 밸류(실제 정보)로, Q와 K를 내적해 유사도를 구하고 확률로 V를 가중합해 컨텍스트 벡터를 만든다. 셋째, WQ·WK·WV는 모든 단어가 공유하되 레이어마다 다르며, 멀티헤드로 병렬 처리된다.

다음 편에서는 이 어텐션이 트랜스포머 전체 안에서 어떻게 흐르는지, 소프트맥스와 FFN까지 LLM의 전체 동작을 다룬다.

함께 읽으면 좋은 글

AI에게 정확히 질문하는 법, 즉 사람의 쿼리 설계가 궁금하다면 이 글이 좋은 연결점이다.

AI를 쓰는 엔지니어가 왜 강한지 그 구조가 궁금하다면 함께 읽어볼 만하다.

트랜스포머와 어텐션의 원논문 개념을 더 알아보고 싶다면 위키백과 트랜스포머 문서에서 살펴볼 수 있다.

FAQ

일반 DB는 키를 주면 정해진 값 하나가 정확히 튀어나온다. 반면 QKV는 정답 하나를 찍는 게 아니라, 쿼리와 키의 유사도를 계산하고 밸류를 가중합해 “지금 이 단어가 처한 맥락”을 만든다. 즉 DB는 검색이고, QKV는 문맥 생성이다.

쿼리는 현재 단어가 던지는 질문 리스트(“나는 음식인가, 동물인가”)이고, 키는 비교 대상 단어들이 내건 특징이며, 밸류는 각 단어가 가진 실제 정보다. 쿼리와 키를 내적해 관련도를 구한 뒤, 그 비율로 밸류를 섞어 맥락을 만든다.

큰 차원을 여러 헤드로 나눠 병렬 처리하기 위해서다. 12,288차원을 96개 헤드로 쪼개면 각 헤드가 128차원씩 맡아 동시에 계산한다. 또한 헤드마다 문법, 감정, 시간처럼 서로 다른 관점에서 문장을 보기 때문에, 한 번에 다양한 측면을 포착할 수 있다.

관련 글 보기