Linear Probing
Le sondage linéaire entraîne un classificateur linéaire sur les caractéristiques d’un modèle gelé afin de tester ce que ses représentations encodent. Découvre son fonctionnement, le code et ses différences avec l’ajustement fin.
Le sondage linéaire est une technique qui mesure la quantité d’informations utiles contenues dans les représentations d’un modèle préentraîné. Pour cela, on entraîne uniquement un classifieur linéaire, la sonde, sur les caractéristiques gelées du modèle. Les poids de l’encodeur ne changent jamais : les images ou le texte le traversent une seule fois, les plongements obtenus deviennent des entrées fixes, puis une régression logistique ou une couche dense unique apprend à prédire les étiquettes à partir de ces entrées. Une précision élevée de la sonde signifie que l’encodeur organise déjà les exemples de telle sorte qu’une frontière droite sépare les classes. En structures de données, le même nom désigne une méthode sans rapport qui résout les collisions dans les tables de hachage en vérifiant l’emplacement suivant.
Fonctionnement du sondage linéaire#
Une expérience de sondage charge un encodeur préentraîné, le gèle, effectue une extraction de caractéristiques sur un jeu de données étiqueté, puis entraîne un classifieur linéaire sur les caractéristiques stockées ; les résultats sont rapportés sur un jeu de test mis de côté. La sonde comporte un poids par caractéristique et par classe, ainsi qu’un biais : elle ne peut donc tracer que des frontières de décision linéaires et ne peut pas créer de nouvelles caractéristiques. La précision obtenue reflète ce que l’encodeur a appris. La régression logistique applique une softmax ou une sigmoïde à ses scores, mais les frontières de décision restent linéaires dans l’espace des caractéristiques. Comme seule la sonde est entraînée, les caractéristiques peuvent être calculées une fois puis réutilisées, ce qui rend le sondage beaucoup moins coûteux que le réglage fin.
Les modèles de classification Ultralytics YOLO26 exposent leurs caractéristiques gelées via model.embed(), qui regroupe par défaut la sortie de la couche précédant la tête de classification en un vecteur par image, soit 256 nombres pour le modèle nano. L’exemple suivant sonde ces caractéristiques sur les chats et les chiens de CIFAR-10, des images basse résolution que le modèle entraîné sur ImageNet n’a jamais vues, puis ajuste la même sonde sur les pixels bruts à titre de comparaison :
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 sonde obtient un score de 0,573 sur les pixels bruts, à peine supérieur à 0,5 pour une prédiction au hasard, et de 0,833 sur les caractéristiques YOLO26. Cet écart mesure l’information sur les classes que l’encodeur YOLO26 gelé rend accessible linéairement.
Ce que révèle une sonde#
Une sonde linéaire vérifie si une information est à la fois présente et facile à extraire. Guillaume Alain et Yoshua Bengio ont proposé les sondes par classifieur linéaire comme outil de diagnostic dans « Understanding Intermediate Layers Using Linear Classifier Probes » et ont constaté que la séparabilité linéaire des caractéristiques augmentait de façon monotone avec la profondeur des réseaux étudiés. Sonder ainsi chaque couche montre où un réseau forme les concepts nécessaires à une tâche. En apprentissage auto-supervisé, la précision des sondes linéaires sur ImageNet est devenue la méthode standard de comparaison des encodeurs entraînés sans étiquettes, car la sonde n’apporte presque rien sur quoi une représentation faible pourrait s’appuyer. En traitement automatique des langues, des sondes entraînées sur les états cachés d’un modèle de langage vérifient s’il encode des propriétés telles que la catégorie grammaticale, la syntaxe ou la véracité d’une affirmation.
Les résultats d’une sonde dépendent de la couche choisie, de la résolution d’entrée et du prétraitement, de la quantité de données étiquetées, de la régularisation de la sonde et de la répartition des images entre entraînement et évaluation. Les comparaisons entre encodeurs ne sont donc valables que si tous ces facteurs restent constants. Lorsqu’une sonde linéaire échoue, une petite sonde non linéaire peut parfois réussir, ce qui montre que l’information est présente, mais encodée de manière non linéaire.
Sondage linéaire et méthodes connexes#
- Réglage fin : met à jour une partie ou la totalité des poids de l’encodeur avec ceux de la tête, ce qui améliore généralement la précision sur les données cibles. Dans « Fine-Tuning Can Distort Pretrained Features », le réglage fin a obtenu en moyenne une précision supérieure de 2 % au sondage linéaire sur la distribution, sur 10 jeux de données, mais une précision inférieure de 7 % en cas de décalage de distribution. LP-FT, qui consiste à effectuer d’abord un sondage linéaire puis un réglage fin à partir de cette tête, a surpassé le réglage fin complet de 1 % sur la distribution et de 10 % en cas de décalage.
- Évaluation par les k plus proches voisins : classe chaque plongement de test selon les étiquettes des plongements d’entraînement les plus proches, sans aucun entraînement ; il s’agit d’un autre protocole courant pour les encodeurs auto-supervisés.
- Extraction de caractéristiques et apprentissage par transfert : l’extraction de caractéristiques produit les plongements utilisés par une sonde. Entraîner une tête linéaire sur un réseau de base gelé est la forme la moins coûteuse d’apprentissage par transfert ; le tutoriel d’apprentissage par transfert de PyTorch décrit cette approche comme l’utilisation du réseau en tant qu’extracteur de caractéristiques fixe.
Limites du sondage linéaire#
Le sondage linéaire mesure dans quelle mesure l’information est accessible de façon linéaire, ce qui diffère de l’utilité d’une représentation après adaptation. Les auteurs des autoencodeurs masqués (MAE) ont constaté que les résultats du sondage linéaire et du réglage fin étaient largement décorrélés : leur encodeur ViT-L a atteint une précision de 73,5 % sur ImageNet avec le sondage linéaire, et le réglage fin de son dernier bloc Transformer uniquement a porté ce résultat à 81,0 %. MoCo v3 a obtenu un meilleur score que MAE au sondage, mais lui a été inférieur pour tous les réglages fins partiels.










