Linear Probing
Scopri come il probing lineare valuta le rappresentazioni AI congelate con la regressione logistica, l'estrazione delle caratteristiche e gli embedding di Ultralytics YOLO26 per il transfer learning.
Il probing lineare è una tecnica di valutazione e adattamento che misura l'utilità delle rappresentazioni apprese da un modello addestrando un predittore lineare semplice sulle feature congelate. L'encoder preaddestrato rimane invariato, mentre viene addestrato sui dati annotati solo un livello lineare, spesso una regressione logistica per la classificazione. Le prestazioni elevate del probe suggeriscono che gli embedding dell'encoder organizzano già i concetti rilevanti in modo che possano essere separati con semplici confini decisionali.
Nel machine learning, il termine non ha alcuna relazione con il probing lineare nelle tabelle hash, dove dopo una collisione vengono controllate le posizioni di memoria adiacenti. Nell'AI e nel deep learning, si riferisce nello specifico all'analisi di una rappresentazione con un modello lineare.
Come funziona il probing lineare#
Una rete neurale tipica contiene un encoder o backbone che trasforma l'input grezzo in un vettore di feature, seguito da una head di predizione specifica per il task. Il probing lineare segue quattro passaggi:
- Preaddestra o carica un encoder.
- Congela i suoi parametri in modo che l'addestramento non possa aggiornarli.
- Esegui la feature extraction su esempi annotati.
- Addestra un classificatore lineare usando queste feature fisse.
Per la classificazione multiclass, il probe è comunemente costituito da un singolo livello denso con output softmax oppure da un classificatore di regressione logistica di scikit-learn. Sebbene la regressione logistica includa una trasformazione di probabilità non lineare, i punteggi delle classi e i confini decisionali sono funzioni lineari delle feature di input.
Il probing lineare è particolarmente comune nel self-supervised learning, in cui un encoder apprende da dati non annotati. L'esempio NNCLR di Keras lo dimostra addestrando un classificatore denso sulle feature di un encoder congelato. Poiché il probe ha una capacità limitata, non può compensare facilmente rappresentazioni deboli apprendendo trasformazioni non lineari complesse.
Cosa rivela la prestazione del probe lineare#
Un probe lineare verifica se le informazioni sono presenti in una rappresentazione e facilmente accessibili. Se le immagini di gatti e cani formano gruppi separabili nello spazio degli embedding, un classificatore lineare può distinguerle con pochi parametri addestrabili. Se le informazioni sono codificate attraverso una disposizione più complessa, un classificatore non lineare può avere successo anche quando il probe lineare dà risultati scarsi.
L'accuratezza del probe dovrebbe quindi essere considerata uno strumento diagnostico, non una misura completa della qualità del modello. Può essere influenzata da:
- Il livello dell'encoder selezionato e la dimensione degli embedding.
- La risoluzione dell'input e il preprocessing.
- La quantità e il bilanciamento dei dati di addestramento annotati.
- La regolarizzazione applicata al modello lineare.
- Il data leakage tra i set di addestramento e di valutazione.
Usa un dataset di validazione tenuto da parte, preferibilmente creato con una procedura riproducibile e stratificata, come l'utility di suddivisione train-test di scikit-learn. Oltre all'accuratezza, un report delle metriche di classificazione può evidenziare le classi che la rappresentazione non separa in modo coerente.
Probing lineare e metodi correlati#
Il probing lineare appartiene alla più ampia famiglia dei metodi di transfer learning e valutazione delle rappresentazioni, ma è importante distinguere alcuni aspetti:
- Probing lineare vs fine-tuning: un probe aggiorna solo la head lineare. Il fine-tuning aggiorna alcuni o tutti i pesi dell'encoder, offrendo al modello maggiore flessibilità, ma richiedendo più risorse di calcolo e aumentando il rischio di overfitting. La guida al transfer learning di TensorFlow descrive il congelamento di un modello di base prima di sbloccarlo facoltativamente per il fine-tuning.
- Probing lineare vs feature extraction: la feature extraction produce gli embedding; il probing lineare addestra e valuta un predittore su tali embedding.
- Probing lineare vs regressione lineare: la regressione lineare prevede valori continui. I probe di classificazione generalmente prevedono classi discrete con la regressione logistica o un livello softmax.
- Probing lineare vs valutazione nearest-neighbor: un probe lineare apprende i confini tra le classi. I metodi nearest-neighbor classificano i campioni in base agli embedding memorizzati più vicini, senza apprendere tali confini. Il tutorial sul transfer learning di PyTorch definisce il workflow strettamente correlato con encoder congelato un estrattore di feature fisso.
Probing lineare con Ultralytics YOLO#
Un modello di classificazione Ultralytics YOLO26 preaddestrato può generare embedding delle immagini tramite l'API model.embed() documentata. L'esempio seguente congela implicitamente l'encoder precalcolando le feature, quindi adatta un probe lineare per distinguere i gatti dai cani di CIFAR-10:
import numpy as np
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
from sklearn.model_selection import train_test_split
from torchvision.datasets import CIFAR10
from ultralytics import YOLO
dataset = CIFAR10(root="data", train=False, download=True)
samples = [(image, label) for image, label in dataset if label in (3, 5)][:400]
images, labels = zip(*samples, strict=True)
encoder = YOLO("yolo26n-cls.pt")
embeddings = encoder.embed(list(images), verbose=False)
features = np.stack([embedding.cpu().numpy() for embedding in embeddings])
x_train, x_test, y_train, y_test = train_test_split(features, labels, test_size=0.25, random_state=42, stratify=labels)
probe = LogisticRegression(max_iter=1000)
probe.fit(x_train, y_train)
predictions = probe.predict(x_test)
print(accuracy_score(y_test, predictions))Solo il modello di regressione logistica apprende dalle etichette di gatti e cani; i pesi dell'encoder YOLO26 rimangono fissi. In questo modo si isola l'utilità della sua rappresentazione visiva, invece di misurare la sua capacità di adattarsi attraverso l'addestramento end-to-end.
Applicazioni nel mondo reale e indicazioni pratiche#
-
Valutazione del pretraining su dati non annotati: un team di robotica può preaddestrare un encoder su grandi volumi di video non annotati ripresi in magazzino, quindi analizzarne le feature con un piccolo dataset annotato di carrelli elevatori, lavoratori e pallet. Un'accuratezza elevata del probe indica che la rappresentazione può supportare la classificazione delle immagini o il rilevamento a valle con un'annotazione limitata.
-
Confronto dell'idoneità al dominio: un team di imaging medico può congelare diversi encoder candidati e addestrare probe lineari identici per le categorie di tessuto. Se un encoder ottiene prestazioni significativamente migliori con la stessa suddivisione e lo stesso preprocessing, la sua rappresentazione costituisce un punto di partenza più solido per il fine-tuning successivo.
Per confronti equi, mantieni costanti la suddivisione del dataset, il livello delle feature, il preprocessing, il classificatore e le impostazioni di ottimizzazione. Quando possibile, valuta sia il probing lineare sia il fine-tuning completo: il probe misura le informazioni accessibili nelle feature fisse, mentre il fine-tuning misura l'efficacia con cui il modello completo può adattarsi.









