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

Contrastive Learning

El aprendizaje contrastivo entrena embeddings acercando los pares coincidentes y alejando otras muestras. Explica InfoNCE, SimCLR, MoCo, CLIP y el código.

El aprendizaje contrastivo entrena un modelo para que genere incrustaciones en las que los pares de muestras coincidentes, llamados positivos, queden cerca, y las muestras no coincidentes, llamadas negativas, queden lejos. Los pares pueden proceder de los propios datos, como dos recortes aumentados de una misma foto, o de datos emparejados de forma natural, como una imagen y su pie de foto, por lo que el aprendizaje contrastivo no necesita etiquetas de clase. Es una de las principales familias de métodos de aprendizaje autosupervisado para imágenes, junto con la reconstrucción de partes enmascaradas y la autodestilación. Los codificadores entrenados así generan características que pueden transferirse a la detección, la clasificación y la recuperación; el mismo objetivo también entrena modelos de visión y lenguaje, como CLIP, que después puede clasificar imágenes usando únicamente texto mediante el aprendizaje de tiro cero.

Cómo funciona el aprendizaje contrastivo#

Un método contrastivo consta de tres partes: una forma de crear pares positivos, un codificador que transforma cada muestra en un embedding normalizado y una función de pérdida que compara similitudes. En SimCLR, Ting Chen y sus colegas de Google crearon dos vistas de cada imagen mediante recortes aleatorios, distorsión del color y desenfoque; codificaron ambas con una ResNet compartida seguida de una pequeña cabeza de proyección y trataron las demás imágenes del lote como negativas:

La ampliación de datos define qué aprende a ignorar el modelo. Como los dos recortes de una imagen deben asignarse a puntos cercanos, el codificador aprende que los cambios de posición, escala y color no alteran lo que muestra la imagen y conserva las características que la distinguen de todas las demás. Con una ResNet-50 cuatro veces más ancha que la estándar, un clasificador lineal entrenado con las características congeladas de SimCLR alcanzó una exactitud top-1 del 76,5 % en ImageNet, igualando a una ResNet-50 supervisada.

Funciones de pérdida contrastiva#

  • Pérdida contrastiva por pares: la función de pérdida de 2006 de Raia Hadsell, Sumit Chopra y Yann LeCun acerca cada par positivo y aleja cada par negativo hasta que los dos quedan separados por un margen m como mínimo.
  • Pérdida por tripletes: compara un ancla con un ejemplo positivo y uno negativo, y exige que el positivo esté más cerca por un margen determinado. Google entrenó con ella los embeddings faciales de FaceNet en 2015.
  • InfoNCE: compara un positivo con muchos negativos a la vez. Si se dividen las similitudes s por una temperatura τ, la pérdida de un ancla es −log[exp(s₊/τ) / Σⱼ exp(sⱼ/τ)], una entropía cruzada de softmax en la que el positivo es la clase correcta entre todos los candidatos. Aaron van den Oord y sus colegas le dieron este nombre en codificación predictiva contrastiva en 2018; las pérdidas NT-Xent de SimCLR y la de CLIP son variantes de InfoNCE.
  • Pérdida sigmoide: SigLIP puntúa cada par como una coincidencia independiente de sí o no mediante una sigmoide, así que la función de pérdida no necesita normalizarse en todo el lote.

En PyTorch, InfoNCE se reduce a una entropía cruzada sobre una matriz de similitud cuya diagonal contiene los positivos:

import torch
import torch.nn.functional as F

torch.manual_seed(0)
# Stand-in embeddings for 8 images, a second view of each (row i of both is a positive pair),
# and 8 unrelated images
view1 = F.normalize(torch.randn(8, 128), dim=1)
view2 = F.normalize(view1 + 0.1 * torch.randn(8, 128), dim=1)
unrelated = F.normalize(torch.randn(8, 128), dim=1)

# InfoNCE: cosine similarities divided by a temperature, then cross-entropy where
# each row's positive (the diagonal) is the correct class among all 8 candidates
temperature = 0.1
targets = torch.arange(8)
for name, keys in [("Augmented views", view2), ("Unrelated images", unrelated)]:
    logits = view1 @ keys.T / temperature
    print(f"{name}: loss {F.cross_entropy(logits, targets):.3f}")

Imprime Augmented views: loss 0.016 y Unrelated images: loss 2.505. Cuando el positivo de cada fila es claramente la clave más similar, la pérdida se aproxima a cero. Con claves no relacionadas, supera ln 8 ≈ 2.08, la pérdida de una conjetura uniforme entre ocho candidatos, porque dividir por una temperatura de 0.1 convierte las similitudes debidas al azar en conjeturas erróneas con confianza. Una temperatura más baja agudiza la softmax y concentra la pérdida en los negativos más difíciles. MoCo usa τ = 0.07, y CLIP inicializa su temperatura aprendida con el mismo valor.

Negativos, tamaño del lote y variantes#

InfoNCE mejora con más negativos, por lo que su número es un factor de coste clave. SimCLR los extraía de lotes muy grandes. MoCo, desarrollado por Kaiming He y sus colegas de Facebook AI Research, mantenía una cola de 65.536 embeddings de lotes recientes como negativos y los codificaba con una copia del codificador actualizada lentamente por impulso; así, el número de negativos no dependía del tamaño del lote. Los negativos aleatorios pueden ser falsos negativos, como otra foto de la misma raza de perro, y los negativos muy fáciles aportan poco aprendizaje; por eso, la selección de negativos difíciles busca muestras que puedan confundirse. El aprendizaje contrastivo supervisado (SupCon) utiliza etiquetas para tratar como positivos todos los ejemplos de una misma clase. Los métodos no contrastivos, como BYOL, SimSiam y DINO, prescinden por completo de los negativos y evitan que todas las entradas colapsen en el mismo embedding mediante redes asimétricas, gradientes detenidos o centrado.

  • Aprendizaje de métricas: tarea más amplia de aprender una función de distancia, de la que proceden las pérdidas contrastivas y por tripletes. Hoy en día, «aprendizaje contrastivo» suele referirse a la variante autosupervisada con muchos negativos, popularizada por SimCLR y MoCo.
  • Autocodificadores: aprenden reconstruyendo la entrada, así que sus características deben conservar los detalles a nivel de píxel. Las características contrastivas solo conservan lo que distingue una muestra de las demás.
  • JEPA: predice los embeddings de regiones ocultas de una imagen a partir de las visibles y aprende en el espacio de embeddings sin pares negativos.
  • Aprendizaje supervisado: entrena el modelo con un conjunto fijo de clases asignadas por personas, mientras que el preentrenamiento contrastivo solo necesita una regla para determinar qué muestras coinciden.

Aplicaciones#

  • Modelos de visión y lenguaje: CLIP entrenó un codificador de imágenes y uno de texto con 400 millones de pares de imágenes y pies de foto, usando lotes de 32.768 elementos, para que las indicaciones de texto puedan clasificar y recuperar imágenes. Los modelos YOLOE-26 de Ultralytics codifican los nombres de las clases con el codificador de texto MobileCLIP2 de Apple, entrenado con un objetivo contrastivo al estilo de CLIP, y puntúan cada región candidata frente a esos embeddings de texto en una cabeza contrastiva; así, set_classes(["forklift", "pallet"]) convierte los mismos pesos en un detector para nuevas categorías.
  • Búsqueda semántica: los embeddings de imágenes y texto entrenados de forma contrastiva se almacenan en una base de datos vectorial y se consultan por similitud.
  • Preentrenamiento con pocas etiquetas: en ámbitos como el análisis de imágenes médicas, donde escasean las etiquetas de expertos, el preentrenamiento contrastivo con exploraciones sin etiquetar proporciona un modelo base que el ajuste adapta con un pequeño conjunto etiquetado.
  • Reconocimiento facial y reidentificación: las pérdidas contrastivas y por tripletes entrenan embeddings en los que las fotos de una misma persona u objeto quedan próximas entre sí. Los embeddings de 128 dimensiones de FaceNet alcanzaron una exactitud del 99,63 % en el benchmark Labeled Faces in the Wild.

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