Linear Probing
Линейное зондирование обучает линейный классификатор на признаках замороженной модели, чтобы проверить, что закодировано в её представлениях. Как оно работает, код и сравнение с дообучением.
Линейное зондирование — метод, позволяющий оценить, сколько полезной информации содержат представления предобученной модели: для этого поверх её замороженных признаков обучают только линейный классификатор — зонд. Веса энкодера не меняются: изображения или текст проходят через него один раз, полученные эмбеддинги становятся фиксированными входными данными, а логистическая регрессия или один полносвязный слой учится предсказывать по ним метки. Высокая точность зонда означает, что энкодер уже располагает примеры так, что классы разделяются прямой границей. В структурах данных это же название обозначает несвязанный с описанным метод разрешения коллизий в хеш-таблицах: проверку следующей ячейки.
Как работает линейное зондирование#
В эксперименте с зондированием загружают предобученный энкодер, замораживают его, выполняют извлечение признаков на размеченном датасете и обучают линейный классификатор на сохранённых признаках, а результаты оценивают на отложенной тестовой выборке. У зонда есть один вес на каждый признак и класс, а также смещение, поэтому он может строить только линейные границы принятия решений и не способен самостоятельно создавать новые признаки; достигнутая им точность отражает то, чему научился энкодер. Логистическая регрессия применяет softmax или сигмоиду к оценкам, но границы принятия решений в пространстве признаков остаются линейными. Поскольку обучается только зонд, признаки можно вычислить один раз и использовать повторно, поэтому зондирование намного дешевле дообучения.
Модели классификации Ultralytics YOLO26 предоставляют доступ к замороженным признакам через model.embed(): по умолчанию этот механизм объединяет выход слоя перед классификационной головой в один вектор на изображение — 256 чисел для nano-модели. В следующем примере зондируются эти признаки на изображениях кошек и собак из CIFAR-10 — моделях с низким разрешением, которых модель, обученная на ImageNet, никогда не видела, — и для сравнения тот же зонд обучается на исходных пикселях:
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}")Зонд набирает 0,573 на исходных пикселях — лишь немного выше 0,5, соответствующих угадыванию, — и 0,833 на признаках YOLO26. Эта разница показывает, насколько замороженный энкодер YOLO26 делает информацию о классах линейно доступной.
Что показывает зондирование#
Линейный зонд проверяет, присутствует ли информация и насколько легко её извлечь. Гийом Ален и Йошуа Бенжи предложили использовать зонды на основе линейного классификатора для диагностики в работе «Понимание промежуточных слоёв с помощью зондов на основе линейного классификатора» и обнаружили, что в изученных ими сетях линейная разделимость признаков монотонно возрастала с глубиной. Зондирование каждого слоя таким способом показывает, на каком этапе сеть формирует понятия, необходимые для задачи. В самоконтролируемом обучении точность линейного зонда на ImageNet стала стандартным способом сравнения энкодеров, обученных без меток: зонд почти ничего не добавляет, на что могло бы опереться слабое представление. В обработке естественного языка зонды, обученные на скрытых состояниях языковой модели, проверяют, кодирует ли она такие свойства, как часть речи, синтаксис или истинность утверждения.
Результаты зондирования зависят от выбранного слоя, разрешения входных данных и предобработки, объёма размеченных данных, регуляризации зонда и разделения изображений на обучающую и оценочную выборки. Поэтому сравнивать энкодеры можно, только если все эти параметры неизменны. Если линейный зонд не справляется, небольшой нелинейный зонд иногда даёт результат, показывая, что информация присутствует, но закодирована нелинейно.
Линейное зондирование и родственные методы#
- Дообучение: Обновляет часть или все веса энкодера вместе с головой, что обычно повышает точность на целевых данных. В работе «Дообучение может искажать предобученные признаки» точность на данных из того же распределения при дообучении в среднем была на 2% выше, чем при линейном зондировании, на 10 датасетах, но при сдвиге распределения — на 7% ниже. Метод LP-FT, в котором сначала выполняется линейное зондирование, а затем дообучение от полученной головы, превзошёл полное дообучение на 1% на данных из того же распределения и на 10% при сдвиге.
- Оценка методом k ближайших соседей: Классифицирует каждый тестовый эмбеддинг по меткам ближайших обучающих эмбеддингов без какого-либо обучения; это ещё один распространённый протокол для энкодеров, обученных самоконтролируемым способом.
- Извлечение признаков и перенос обучения: При извлечении признаков создаются эмбеддинги, которые использует зонд, а обучение линейной головы на замороженной базовой сети — самый дешёвый вариант переноса обучения. В руководстве PyTorch по переносу обучения этот подход описан как использование сети в качестве фиксированного экстрактора признаков.
Ограничения линейного зондирования#
Линейное зондирование измеряет, насколько линейно доступна информация, а это не то же самое, что полезность представления после адаптации. Авторы маскированных автоэнкодеров (MAE) обнаружили, что результаты линейного зондирования и дообучения в основном не коррелировали: энкодер ViT-L достиг точности 73,5% на ImageNet при линейном зондировании, а дообучение только последнего блока трансформера повысило её до 81,0%. При этом результаты зондирования MoCo v3 были выше, чем у MAE, но во всех вариантах частичного дообучения MoCo v3 уступала.










