Linear Probing
El sondeo lineal entrena un clasificador lineal con las características de un modelo congelado para comprobar qué codifican sus representaciones. Cómo funciona, código y comparación con el ajuste fino.
La evaluación con sondas lineales es una técnica que mide cuánta información útil contienen las representaciones de un modelo preentrenado: para ello, se entrena únicamente un clasificador lineal, la sonda, sobre sus características congeladas. Los pesos del codificador nunca cambian: las imágenes o el texto pasan por él una vez, las incrustaciones resultantes se convierten en entradas fijas y una regresión logística o una única capa densa aprende a predecir las etiquetas a partir de ellas. Una precisión alta de la sonda significa que el codificador ya organiza los ejemplos de modo que una frontera recta separa las clases. En estructuras de datos, el mismo nombre se refiere a un método distinto para resolver colisiones en tablas hash comprobando la siguiente posición.
Cómo funciona la prueba lineal#
Un experimento con una sonda carga un codificador preentrenado, lo congela, realiza una extracción de características en un conjunto de datos etiquetado, entrena un clasificador lineal con las características almacenadas y presenta los resultados obtenidos en un conjunto de prueba reservado. La sonda tiene un peso por característica para cada clase, además de un sesgo, por lo que solo puede trazar fronteras de decisión lineales y no puede generar características nuevas por sí misma; cualquier exactitud que alcance refleja lo que ha aprendido el codificador. La regresión logística aplica una softmax o una sigmoide a sus puntuaciones, pero las fronteras de decisión siguen siendo lineales en el espacio de características. Como solo se entrena la sonda, las características se pueden calcular una vez y reutilizar, lo que hace que la evaluación con sondas sea mucho menos costosa que el ajuste fino.
Los modelos de clasificación Ultralytics YOLO26 exponen características congeladas mediante model.embed(), que, de forma predeterminada, agrupa la salida de la capa anterior al cabezal de clasificación en un vector por imagen: 256 números para el modelo nano. El siguiente ejemplo evalúa con una sonda esas características en gatos y perros de CIFAR-10, imágenes de baja resolución que el modelo entrenado con ImageNet nunca había visto, y ajusta la misma sonda sobre píxeles sin procesar para compararlas:
from pathlib import Path
import numpy as np
from PIL import Image
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from torchvision.datasets.utils import download_and_extract_archive
from ultralytics import YOLO
# 500 cat and 500 dog images from the CIFAR-10 test split
download_and_extract_archive("https://github.com/ultralytics/assets/releases/download/v0.0.0/cifar10.zip", "data")
cats = sorted(Path("data/cifar10/test/cat").glob("*.png"))[:500]
dogs = sorted(Path("data/cifar10/test/dog").glob("*.png"))[:500]
paths, labels = cats + dogs, [0] * 500 + [1] * 500
# Frozen YOLO26 classifier features, and raw pixels as a baseline representation
encoder = YOLO("yolo26n-cls.pt")
features = np.stack([encoder.embed(path, verbose=False)[0].cpu().numpy() for path in paths])
pixels = np.stack([np.asarray(Image.open(path)).ravel() / 255 for path in paths])
# Train the same linear probe on each representation and score it on held-out images
for name, x in [("raw pixels", pixels), ("YOLO26 features", features)]:
x_train, x_test, y_train, y_test = train_test_split(x, labels, test_size=0.3, random_state=0, stratify=labels)
probe = LogisticRegression(max_iter=5000)
probe.fit(x_train, y_train)
print(f"{name}: {probe.score(x_test, y_test):.3f}")La sonda obtiene 0,573 con píxeles sin procesar, apenas por encima del 0,5 de una predicción al azar, y 0,833 con las características de YOLO26. Esta diferencia mide la información sobre las clases que el codificador congelado de YOLO26 hace accesible de forma lineal.
Qué revela una sonda#
Una sonda lineal comprueba si la información está presente y si es fácil de extraer. Guillaume Alain y Yoshua Bengio propusieron las sondas de clasificación lineal como herramienta de diagnóstico en «Understanding Intermediate Layers Using Linear Classifier Probes» y descubrieron que la separabilidad lineal de las características aumentaba de forma monótona con la profundidad en las redes que estudiaron. Evaluar así cada capa muestra dónde forma una red los conceptos que necesita una tarea. En el aprendizaje autosupervisado, la precisión de las sondas lineales en ImageNet se convirtió en el método estándar para comparar codificadores entrenados sin etiquetas, ya que la sonda añade muy poco a lo que podría aprovechar una representación débil. En el procesamiento del lenguaje natural, las sondas entrenadas con los estados ocultos de un modelo de lenguaje comprueban si este codifica propiedades como la categoría gramatical, la sintaxis o la veracidad de una afirmación.
Los resultados de las sondas dependen de la capa elegida, la resolución de entrada y el preprocesamiento, la cantidad de datos etiquetados, la regularización de la sonda y la división de las imágenes entre entrenamiento y evaluación; por tanto, las comparaciones entre codificadores solo son válidas si todos estos factores se mantienen constantes. Cuando falla una sonda lineal, a veces funciona una pequeña sonda no lineal, lo que demuestra que la información está presente, pero codificada de forma no lineal.
Evaluación con sondas lineales y métodos relacionados#
- Ajuste fino: Actualiza algunos o todos los pesos del codificador junto con el cabezal, lo que suele dar una mayor precisión en los datos objetivo. En «Fine-Tuning Can Distort Pretrained Features», el ajuste fino obtuvo de media un 2 % más de precisión dentro de la distribución que la evaluación con sondas lineales en 10 conjuntos de datos, pero un 7 % menos bajo cambio de distribución. LP-FT —primero evaluación con sondas lineales y después ajuste fino a partir de ese cabezal— superó al ajuste fino completo en un 1 % dentro de la distribución y en un 10 % bajo cambio de distribución.
- Evaluación con k vecinos más cercanos: Clasifica cada incrustación de prueba según las etiquetas de las incrustaciones de entrenamiento más cercanas, sin entrenar nada; es otro protocolo habitual para codificadores autosupervisados.
- Extracción de características y aprendizaje por transferencia: La extracción de características genera las incrustaciones que consume una sonda, y entrenar un cabezal lineal sobre una red troncal congelada es la forma más barata de aprendizaje por transferencia. El tutorial de aprendizaje por transferencia de PyTorch lo describe como usar la red como extractor fijo de características.
Limitaciones de la evaluación con sondas lineales#
La evaluación con sondas lineales mide hasta qué punto la información es accesible de forma lineal, lo cual no es lo mismo que medir la utilidad de una representación después de adaptarla. Los autores de los autocodificadores enmascarados (MAE) descubrieron que los resultados de la evaluación con sondas lineales y del ajuste fino apenas estaban correlacionados: el codificador ViT-L alcanzó una precisión del 73,5 % en ImageNet con evaluación lineal; ajustar solo su último bloque Transformer la elevó al 81,0 %, y MoCo v3 obtuvo mejores resultados que MAE con sondas, pero quedó por detrás en todas las configuraciones de ajuste fino parcial.










