Explicador en lenguaje claro
Query, Key y Value, explicados
Query, Key y Value son los tres vectores que attention deriva de cada token. La Query es lo que un token busca, la Key es lo que ofrece para que lo comparen, y el Value es la información que entrega cuando lo eligen. Comparar Queries con Keys produce las puntuaciones de attention; esas puntuaciones pesan los Values que se mezclan.
¿Qué significan de verdad Query, Key y Value en attention?
Attention es una búsqueda. Cada token hace una pregunta, su Query. Cada token también anuncia lo que contiene, su Key, y lleva el contenido que entregaría, su Value. Comparar una Query con todas las Keys produce puntuaciones, softmax las convierte en porciones, y la nueva representación del token es la mezcla de los Values pesada por esas porciones. Los tres papeles se calculan del mismo vector del token mediante matrices aprendidas. Nadie las escribe; el entrenamiento las encuentra.
Revisado por última vez el
Leer es el camino lento. Empieza con una lección gratis que puedes operar ahora mismo.
Empieza gratis: Cómo la atención mezcla el significado →Gratis, sin código, sin registro.
Diez segundos, sin lección: juega con el widget independiente, e insértalo en tu propia página.
Y después ve más a fondo: Query, Key, Value Bloqueada
Cómo funcionan Query, Key y Value, paso a paso
Cada token entra en una capa de attention como un vector de números. La capa multiplica ese vector por tres matrices de pesos aprendidas y obtiene tres vectores nuevos: la Query, la Key y el Value. Después pasan cuatro cosas.
- Puntuar: toma la Query del token actual y calcula su producto escalar con la Key de cada token que puede ver. Un número alto significa una buena coincidencia.
- Escalar: divide cada puntuación por la raíz cuadrada del largo de la Key, para que los vectores largos no den puntuaciones enormes.
- Normalizar: aplica softmax a las puntuaciones, así se vuelven pesos entre 0 y 1 que suman 1.
- Mezclar: multiplica el Value de cada token por su peso y súmalos. Esa suma es el nuevo vector del token, que ahora lleva información de los tokens con los que coincidió.
Un ejemplo resuelto con números pequeños
Toma la frase 'el gato duerme' y calcula attention para 'duerme'. Los vectores reales tienen decenas o cientos de números. Con dos basta para ver el mecanismo. Digamos que la Query de 'duerme' es [1, 2], y las tres Keys son el [0, 1], gato [2, 1] y duerme [1, 0].
Los productos escalares dan 2 para 'el', 4 para 'gato' y 1 para 'duerme'. Divide por la raíz cuadrada de 2, el largo del vector, y softmax los convierte en pesos de 0,18, 0,73 y 0,09. 'Duerme' presta casi toda su atención a 'gato'. Un verbo encontró su sujeto.
Ahora los Values: el [1, 0], gato [0, 4], duerme [2, 2]. Pesados y sumados dan [0,35, 3,11]. El nuevo vector de 'duerme' está hecho sobre todo de lo que 'gato' tenía para ofrecer. Ese es todo el truco: la Key decidió a quién se escucha, y el Value decidió qué dice.
| Token | Key | Query · Key | Peso | Value |
|---|---|---|---|---|
| el | [0, 1] | 2 | 0,18 | [1, 0] |
| gato | [2, 1] | 4 | 0,73 | [0, 4] |
| duerme | [1, 0] | 1 | 0,09 | [2, 2] |
Por qué importa en los modelos reales
Los modelos reales hacen esta búsqueda en paralelo, muchas veces. GPT-2 small reparte cada vector de 768 números entre 12 heads de attention de 64 números, y lo repite en 12 capas. Llama 3 8B usa 32 capas con 32 heads de Query de 128 números cada una. Cada head tiene sus propias tres matrices, así que cada una aprende un tipo distinto de coincidencia: una sigue la gramática, otra los nombres, otra busca la línea anterior.
Las Keys y los Values son además lo que guarda la KV cache. Para ahorrar memoria, Llama 3 hace que cuatro heads de Query compartan un mismo juego de Keys y Values, una idea llamada grouped-query attention. Tiene 8 heads de Key y Value por capa en vez de 32, así que la cache es cuatro veces más pequeña y los chats largos siguen siendo asequibles.
Y el paso de puntuar fija el costo del contexto largo. Cada token puntúa a todos los anteriores, así que el trabajo crece con el cuadrado del largo. Un prompt de 1.000 tokens supone cerca de medio millón de puntuaciones Query-Key por head en cada capa. Con 100.000 tokens son unos cinco mil millones. Quienes estudian por dentro los modelos han rastreado comportamientos reales hasta estas coincidencias. Las induction heads que describió Anthropic, por ejemplo, usan coincidencias Query-Key para encontrar la palabra que siguió a una aparición anterior de la palabra actual, y copian esa palabra hacia delante. Es buena parte de cómo los modelos continúan patrones que vieron antes en el prompt.
Lo que la gente entiende mal
- Q, K y V son propiedades guardadas de las palabras. Se producen al momento, por posición y por capa, multiplicando el vector del token por matrices aprendidas.
- El modelo busca las palabras en una tabla fija. Las puntuaciones se calculan del context vivo, y por eso la misma palabra atiende distinto en cada frase.
- Attention elige la respuesta. Solo decide qué información fluye hacia dónde. Puntuar la siguiente palabra pasa después, arriba de la pila.
Dónde lo ves en productos reales
- Los mapas de calor de attention son estas puntuaciones Query-Key pintadas como color.
- Que 'banco' se resuelva como río o dinero según la frase es este emparejamiento por context.
- Responder preguntas sobre documentos largos funciona porque las Queries pescan el pasaje relevante entre miles de Keys.
Preguntas frecuentes
- ¿De dónde salen query, key y value?
- Los tres se hacen a partir del mismo vector del token, multiplicado por tres matrices de pesos distintas aprendidas durante el entrenamiento. Nadie las escribe a mano. El modelo descubre, con miles de millones de ejemplos, qué proyecciones sirven como pregunta útil, como etiqueta útil y como contenido útil para pasar.
- ¿Qué diferencia hay entre key y value?
- La key es lo que un token anuncia para que los demás decidan si vale la pena mirarlo. El value es lo que reciben cuando lo miran. Separarlos permite que un token sea fácil de encontrar por un motivo y aporte algo totalmente distinto.
- ¿Por qué se dividen las puntuaciones por la raíz de la dimensión?
- Los dot products de vectores largos se hacen grandes, y las puntuaciones grandes hacen que el softmax colapse sobre un solo token, lo que frena el aprendizaje. Dividir por la raíz de la dimensión de las keys mantiene las puntuaciones en un rango donde los gradientes siguen sirviendo. Es higiene numérica, no una idea de modelado.
- ¿Por qué attention necesita tres vectores en vez de uno?
- Porque preguntar, ser encontrado y entregar son trabajos distintos. Si un solo vector hiciera los tres, una palabra solo podría ser encontrada por las mismas características que entrega. Matrices separadas de Query, Key y Value permiten que una palabra sea buscada por una propiedad, como ser el sujeto, y aporte otra, como su significado.
- ¿Query, Key y Value son iguales en todas las capas?
- No. Cada capa y cada head de attention tiene sus propias tres matrices aprendidas, así que el mismo token recibe una Query, una Key y un Value distintos en cada una. Así una capa puede seguir la gramática mientras otra sigue el significado o la posición.
- ¿Qué diferencia hay entre self-attention y cross-attention?
- En self-attention, las Queries, Keys y Values salen todas de la misma secuencia, así que un texto se atiende a sí mismo. En cross-attention, las Queries salen de una secuencia y las Keys y Values de otra, como un modelo de traducción que mira el texto original o un modelo de imágenes que mira tu prompt.
Explicadores relacionados
Más en Dentro del transformer
Una idea a la vez, en tu correo
Lecciones y explicadores nuevos, escritos como están escritas estas páginas. De vez en cuando, no a diario, y nunca una secuencia de venta.
Primero te enviamos un enlace de confirmación. Puedes darte de baja con un clic, cuando quieras. Privacidad.
Parte de See How AI Works, un curso interactivo gratuito, donde aprendes cómo funciona la IA moderna operándola, no viendo videos.