Linear Probing
Apprends comment le sondage linéaire évalue des représentations d'IA gelées avec la régression logique, l'extraction de caractéristiques et les embeddings d'Ultralytics YOLO26 pour l'apprentissage par transfert.
Le sondage linéaire est une technique d'évaluation et d'adaptation qui mesure l'utilité des représentations apprises d'un modèle en entraînant un prédicteur linéaire simple sur des caractéristiques gelées. L'encodeur pré-entraîné reste inchangé, tandis que seule une couche linéaire, souvent une régression logistique pour la classification, est ajustée aux données étiquetées. De bonnes performances de sonde suggèrent que les embeddings de l'encodeur organisent déjà les concepts pertinents pour qu'ils puissent être séparés par des frontières de décision simples.
En machine learning, ce terme n'a aucun rapport avec le sondage linéaire dans les tables de hachage, où les emplacements de stockage voisins sont vérifiés après une collision. En IA et en deep learning, il désigne spécifiquement le sondage d'une représentation à l'aide d'un modèle linéaire.
Fonctionnement du sondage linéaire#
Un réseau de neurones typique contient un encodeur ou un backbone qui transforme une entrée brute en vecteur de caractéristiques, suivi d'une tête de prédiction spécifique à la tâche. Le sondage linéaire suit quatre étapes :
- Pré-entraîner ou charger un encodeur.
- Geler ses paramètres afin que l'entraînement ne puisse pas les mettre à jour.
- Effectuer une feature extraction sur des exemples étiquetés.
- Entraîner un classificateur linéaire en utilisant ces caractéristiques fixes.
Pour la classification multiclasse, la sonde est généralement une seule couche dense avec une sortie softmax ou un scikit-learn logistic regression classifier. Bien que la régression logistique comprenne une transformation de probabilité non linéaire, ses scores de classe et ses frontières de décision sont des fonctions linéaires des caractéristiques d'entrée.
Le sondage linéaire est particulièrement courant dans le self-supervised learning, où un encodeur apprend à partir de données non étiquetées. L'exemple Keras NNCLR example le démontre en entraînant un classificateur dense sur les caractéristiques d'un encodeur gelé. La sonde ayant une capacité limitée, elle ne peut pas compenser facilement des représentations faibles en apprenant des transformations non linéaires complexes.
Ce que révèlent les performances d'une sonde linéaire#
Une sonde linéaire teste si l'information est à la fois présente et facilement accessible dans une représentation. Si des images de chats et de chiens forment des groupes séparables dans l'espace d'embedding, un classificateur linéaire peut les distinguer avec peu de paramètres entraînables. Si l'information est encodée via un arrangement plus compliqué, un classificateur non linéaire peut réussir même lorsque la sonde linéaire est peu performante.
La précision de la sonde doit donc être considérée comme un outil de diagnostic plutôt que comme une mesure complète de la qualité du modèle. Elle peut être influencée par :
- La couche d'encodeur sélectionnée et la dimension de l'embedding.
- La résolution d'entrée et le prétraitement.
- La quantité et l'équilibre des données d'entraînement étiquetées.
- La régularisation appliquée au modèle linéaire.
- La fuite de données entre les ensembles d'entraînement et d'évaluation.
Utilise un validation dataset de test isolé, de préférence créé avec une procédure reproductible et stratifiée telle que train-test splitting utility de scikit-learn. Au-delà de la précision, un classification metrics report peut mettre en évidence des classes que la représentation ne sépare pas de manière cohérente.
Sondage linéaire vs méthodes associées#
Le sondage linéaire appartient à la famille plus large des méthodes de transfert et d'évaluation de représentation, mais plusieurs distinctions comptent :
- Sondage linéaire vs fine-tuning : Une sonde met uniquement à jour la tête linéaire. Le fine-tuning met à jour tout ou partie des poids de l'encodeur, offrant plus de flexibilité au modèle mais nécessitant un calcul supplémentaire et augmentant le risque de overfitting. Le TensorFlow transfer learning guide décrit le gel d'un modèle de base avant de le dé-geler éventuellement pour le fine-tuning.
- Sondage linéaire vs extraction de caractéristiques : L'extraction de caractéristiques produit les embeddings ; le sondage linéaire entraîne et évalue un prédicteur sur ces embeddings.
- Sondage linéaire vs régression linéaire : La régression linéaire prédit des valeurs continues. Les sondes de classification prédisent généralement des classes discrètes avec une régression logistique ou une couche softmax.
- Sondage linéaire vs évaluation par k plus proches voisins : Une sonde linéaire apprend les frontières de classe. Les méthodes des k plus proches voisins classent les échantillons en fonction d'embeddings stockés à proximité sans apprendre ces frontières. Le PyTorch transfer learning tutorial qualifie le flux de travail d'encodeur gelé très proche d'extracteur de caractéristiques fixe.
Sondage linéaire avec Ultralytics YOLO#
Un Ultralytics YOLO26 classification model pré-entraîné peut générer des embeddings d'image via l'API documentée model.embed(). L'exemple suivant gèle implicitement l'encodeur en précalculant les caractéristiques, puis ajuste une sonde linéaire pour distinguer les chats CIFAR-10 des chiens :
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))Seul le modèle de régression logistique apprend à partir des étiquettes de chats et de chiens ; les poids de l'encodeur YOLO26 restent fixes. Cela isole l'utilité de sa représentation visuelle plutôt que de mesurer sa capacité à s'adapter par un entraînement de bout en bout.
Applications concrètes et conseils pratiques#
-
Évaluation du pré-entraînement non étiqueté : Une équipe de robotique peut pré-entraîner un encodeur sur de grands volumes de vidéos d'entrepôt non étiquetées, puis sonder ses caractéristiques à l'aide d'un petit ensemble de données étiquetées de chariots élévateurs, de travailleurs et de palettes. Une précision de sonde élevée indique que la représentation peut prendre en charge une image classification en aval ou une détection avec un nombre limité d'annotations.
-
Comparaison de l'adéquation au domaine : Une équipe d'imagerie médicale peut geler plusieurs encodeurs candidats et entraîner des sondes linéaires identiques pour des catégories de tissus. Si un encodeur est nettement plus performant sous le même découpage et le même prétraitement, sa représentation constitue un meilleur point de départ pour un fine-tuning ultérieur.
Pour des comparaisons équitables, garde constants le découpage du jeu de données, la couche de caractéristiques, le prétraitement, le classificateur et les paramètres d'optimisation. Évalue à la fois le sondage linéaire et le fine-tuning complet lorsque c'est possible : la sonde mesure l'information accessible dans des caractéristiques fixes, tandis que le fine-tuning mesure l'efficacité avec laquelle le modèle complet peut s'adapter.






