Ultralytics YOLO27: Únete a la lista de espera.
Licencia YOLO
Volver al glosario de Ultralytics

Self-Attention

La autoatención permite que cada token de una secuencia pondere a todos los demás mediante consultas, claves y valores obtenidos de la misma entrada. Es el componente central de los Transformer.

La autoatención es el tipo de atención en el que las consultas, las claves y los valores proceden de la misma secuencia, de modo que cada token construye su nueva representación a partir de los demás tokens de esa secuencia. Una capa de autoatención puede conectar en un solo paso la primera y la última palabra de un párrafo, o esquinas opuestas de una imagen, mientras que una red neuronal recurrente (RNN) necesita un paso por posición y una red neuronal convolucional (CNN) necesita apilar muchas capas para ampliar su campo de visión. Apilada con capas prealimentadas, forma el Transformer presentado en el artículo de 2017 La atención es todo lo que necesitas, que constituye la base de los modelos de lenguaje grandes (LLM), los Transformers de visión (ViT) y los detectores basados en Transformer.

Cómo funciona la autoatención#

Cada token de entrada, representado como un embedding, se multiplica por tres matrices aprendidas para obtener una consulta, una clave y un valor. La salida del token i es una media ponderada del vector de valor de cada token, con pesos definidos mediante un softmax aplicado a los productos escalares escalados de la consulta del token i con todas las claves; este es el mecanismo de atención de producto escalar escalado descrito en la página sobre el mecanismo de atención. Como las consultas, las claves y los valores son proyecciones de los mismos tokens, una secuencia de n tokens produce una matriz de pesos n × n. En «El animal no cruzó la calle porque estaba demasiado cansado», la fila de «estaba» puede asignar la mayor parte de su peso a «animal» e incorporar el significado de esa palabra a su propia representación.

La autoatención multicabezal ejecuta en paralelo varias de estas operaciones con proyecciones más pequeñas y concatena los resultados, de modo que las distintas cabezas pueden seguir relaciones diferentes, como la sintaxis en una cabeza y la correferencia en otra. El Transformer original utilizaba 8 cabezas de 64 dimensiones cada una en un modelo de 512 dimensiones.

Ceguera al orden y enmascaramiento causal#

La autoatención trata la entrada como un conjunto. Si se desordenan los tokens, las salidas se desordenan del mismo modo y no cambia nada más, por lo que los modelos añaden información posicional, como los embeddings sinusoidales del Transformer original o el embedding posicional rotatorio (RoPE) de la mayoría de los LLM actuales. Los codificadores como BERT permiten que cada token atienda en ambas direcciones. Los LLM solo con decodificador aplican una máscara causal para que cada token atienda únicamente a sí mismo y a los tokens anteriores, lo que permite al modelo generar texto de izquierda a derecha y reutilizar las claves y los valores de los tokens anteriores desde una caché KV. MultiheadAttention de PyTorch muestra ambas propiedades cuando se pasa el mismo tensor como consulta, clave y valor:

import torch

torch.manual_seed(0)
tokens = torch.randn(1, 5, 16)  # una secuencia de 5 tokens con 16 características cada uno
attn = torch.nn.MultiheadAttention(embed_dim=16, num_heads=2, batch_first=True)

# Autoatención: las consultas, las claves y los valores son proyecciones de los mismos tokens
out, weights = attn(tokens, tokens, tokens)
print("Attention weights shape:", tuple(weights.shape))

# Al desordenar los tokens, solo se desordenan las salidas, por lo que el orden de las palabras es invisible sin información posicional
perm = torch.tensor([3, 0, 4, 1, 2])
out_shuffled, _ = attn(tokens[:, perm], tokens[:, perm], tokens[:, perm])
print("Same outputs after shuffling:", torch.allclose(out_shuffled, out[:, perm], atol=1e-6))

# Una máscara causal bloquea la atención a los tokens posteriores, como en un LLM solo con decodificador
mask = torch.triu(torch.ones(5, 5, dtype=torch.bool), diagonal=1)
_, causal_weights = attn(tokens, tokens, tokens, attn_mask=mask)
print(causal_weights[0].detach().round(decimals=2))

Imprime la forma de los pesos (1, 5, 5), True para la prueba de desorden y una matriz triangular inferior: el primer token asigna un peso de 1.00 a sí mismo, el segundo reparte 0.31 y 0.69 entre los dos primeros tokens, y todas las entradas por encima de la diagonal son 0.00.

  • Mecanismo de atención: Operación general que pondera los valores según la similitud entre consultas y claves. La autoatención es el caso en el que los tres proceden de una misma secuencia.
  • Atención cruzada: Las consultas proceden de una secuencia, y las claves y los valores, de otra. Un decodificador de traducción atiende a la frase de origen codificada, las consultas de objetos de un decodificador DETR atienden a las características de la imagen y un modelo de difusión de texto a imagen atiende a la indicación.
  • Convolución: Aplica el mismo filtro pequeño en cada posición, de modo que cada salida ve una ventana local fija cuyos pesos no dependen del contenido. La autoatención calcula sus pesos a partir del contenido y abarca toda la entrada.

El Transformer original de codificador-decodificador combina autoatención bidireccional, autoatención causal y atención cruzada:

Coste y variantes eficientes#

Calcular la puntuación de cada par de tokens hace que el tiempo y la memoria crezcan con el cuadrado de la longitud de la secuencia: 1.000 tokens generan un millón de puntuaciones por cabeza y 100.000 tokens generan diez mil millones. FlashAttention calcula la autoatención exacta en bloques sin almacenar la matriz completa, la atención de consultas agrupadas (GQA) comparte claves y valores entre cabezas para reducir la caché KV, y la atención de ventana deslizante, dispersa y lineal reduce el número de pares. En visión, el número de tokens depende de la resolución de la imagen, por lo que muchos detectores aplican autoatención solo donde los mapas de características son más pequeños. YOLO26 ejecuta autoatención multicabezal solo en el bloque C2PSA al final de su backbone y en un bloque C3k2 con atención del neck, ambos sobre el mapa de características de 20×20 y stride 32 de una imagen de 640 píxeles, es decir, 400 tokens. Su módulo de atención calcula las consultas, las claves y los valores con una convolución 1×1 sobre ese mapa y añade información posicional mediante una convolución depthwise 3×3 aplicada a los valores.

Explora las soluciones

Visión artificial en el deporte

Visión artificial en el deporte

Descubre cómo Ultralytics YOLO impulsa la visión artificial en el deporte con el seguimiento de jugadores y balones, analíticas de rendimiento, información útil para entrenadores y rehabilitación de deportistas.
Más información
Visión artificial para imágenes aéreas

Visión artificial para imágenes aéreas

Convierte imágenes aéreas y de drones en información útil en tiempo real para la agricultura, la acuicultura, la conservación y el análisis geoespacial con Ultralytics YOLO.
Más información
Visión artificial en el sector aeroespacial

Visión artificial en el sector aeroespacial

Aplica la visión artificial en el sector aeroespacial con Ultralytics YOLO para inspeccionar aeronaves, detectar objetos extraños en pistas, gestionar operaciones en tierra y detectar defectos en materiales compuestos.
Más información
Visión artificial en seguridad

Visión artificial en seguridad

Protege todas tus instalaciones con los modelos Ultralytics YOLO. La IA visual permite supervisar perímetros, detectar amenazas, reconocer matrículas y mejorar la seguridad laboral.
Más información
Visión artificial en robótica

Visión artificial en robótica

Potencia máquinas más inteligentes con los modelos Ultralytics YOLO. La IA visual en robótica impulsa la navegación autónoma, la percepción, el seguimiento de objetos y el control en tiempo real.
Más información
Visión artificial en logística

Visión artificial en logística

Agiliza la logística con modelos Ultralytics YOLO. La IA visual permite inspeccionar paquetes, clasificarlos, realizar el seguimiento de vehículos y supervisar la seguridad del almacén en tiempo real.
Más información
Visión artificial en el comercio minorista

Visión artificial en el comercio minorista

Reinventa el comercio minorista con modelos Ultralytics YOLO. La IA visual permite realizar el seguimiento del inventario, supervisar estanterías, gestionar colas y obtener información más útil sobre los clientes.
Más información
Visión artificial en el sector sanitario

Visión artificial en el sector sanitario

Desarrolla soluciones sanitarias con modelos Ultralytics YOLO. La IA visual en el sector sanitario permite acelerar el diagnóstico por imagen, mejorar los diagnósticos y supervisar a los pacientes.
Más información
Visión artificial en la fabricación

Visión artificial en la fabricación

Optimiza la fabricación con modelos Ultralytics YOLO. La IA visual mejora el control de calidad, la detección de defectos, el cumplimiento de las normas de uso de EPI y la automatización de las líneas de montaje.
Más información
Visión artificial en la automoción

Visión artificial en la automoción

Aplica la visión artificial al sector de la automoción con modelos Ultralytics YOLO. La IA visual mejora la seguridad vial, la asistencia al conductor y la automatización de vehículos para lograr carreteras más inteligentes.
Más información
Visión artificial en la agricultura

Visión artificial en la agricultura

Incorpora la IA de visión a la agricultura inteligente con modelos Ultralytics YOLO. Impulsa la monitorización de cultivos, el seguimiento del ganado y la agricultura de precisión para obtener cosechas más abundantes e inteligentes.
Más información

¡Construyamos juntos el futuro de la IA!

Inicia tu recorrido hacia el futuro del aprendizaje automático