Linear Probing
선형 프로빙은 동결된 모델의 특징을 사용해 선형 분류기를 학습하여 표현이 무엇을 인코딩하는지 테스트합니다. 작동 방식, 코드, 미세 조정과의 차이를 다룹니다.
선형 프로빙은 사전 학습된 모델의 표현에 얼마나 유용한 정보가 담겨 있는지 측정하는 기법으로, 고정된 특성 위에 프로브라고 하는 선형 분류기만 학습합니다. 인코더의 가중치는 전혀 변경되지 않습니다. 이미지나 텍스트를 한 번 인코더에 통과시키고, 그 결과로 얻은 임베딩을 고정 입력으로 사용하여 로지스틱 회귀 또는 단일 완전 연결 레이어가 레이블을 예측하도록 학습합니다. 프로브 정확도가 높다는 것은 인코더가 이미 예시를 클래스 간에 직선 경계로 구분할 수 있도록 배치했다는 뜻입니다. 자료구조 분야에서 같은 용어는 해시 테이블의 충돌을 해결하기 위해 다음 슬롯을 확인하는, 이와 무관한 방법을 가리킵니다.
선형 프로빙의 작동 방식#
프로브 실험에서는 사전 학습된 인코더를 불러와 고정하고, 레이블이 지정된 데이터셋에서 특성 추출을 수행한 다음, 저장된 특성에 선형 분류기를 학습하고 별도로 보유한 테스트 세트에서 결과를 보고합니다. 프로브에는 클래스별 특성 하나당 가중치 하나와 편향이 있으므로 선형 결정 경계만 그릴 수 있으며 자체적으로 새로운 특성을 만들 수 없습니다. 따라서 프로브가 달성한 정확도는 인코더가 학습한 내용을 반영합니다. 로지스틱 회귀는 점수에 소프트맥스 또는 시그모이드를 적용하지만, 결정 경계는 여전히 특성 공간에서 선형입니다. 프로브만 학습하므로 특성을 한 번 계산해 재사용할 수 있어 프로빙은 파인튜닝보다 훨씬 저렴합니다.
Ultralytics YOLO26 분류 모델은 model.embed()를 통해 고정된 특성을 제공합니다. 기본 설정에서는 분류 헤드 직전 레이어의 출력을 풀링하여 이미지마다 벡터 하나로 변환하며, 나노 모델에서는 256개의 숫자가 됩니다. 다음 예제에서는 모델이 학습 중 본 적 없는 저해상도 이미지인 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보다 간신히 높았고, YOLO26 특성에서는 0.833을 기록했습니다. 이 차이는 고정된 YOLO26 인코더가 클래스 정보를 선형적으로 얼마나 쉽게 접근할 수 있도록 만드는지를 측정합니다.
프로브가 보여주는 것#
선형 프로브는 정보가 존재하는지와 쉽게 읽어낼 수 있는지를 테스트합니다. Guillaume Alain과 Yoshua Bengio는 진단 도구로 선형 분류기 프로브를 제안한 “선형 분류기 프로브를 사용한 중간 레이어 이해”에서, 자신들이 연구한 네트워크의 특성이 깊이에 따라 단조롭게 선형 분리 가능해진다는 사실을 발견했습니다. 이 방식으로 모든 레이어를 프로빙하면 네트워크가 작업에 필요한 개념을 형성하는 지점을 파악할 수 있습니다. 자기 지도 학습에서는 레이블 없이 학습한 인코더를 비교하는 표준 방법으로 ImageNet의 선형 프로브 정확도를 사용했습니다. 프로브가 약한 표현에 의존할 만한 요소를 거의 추가하지 않기 때문입니다. 자연어 처리에서는 언어 모델의 은닉 상태를 대상으로 학습한 프로브를 사용해 품사, 구문, 문장의 진위 여부와 같은 속성을 인코딩하는지 테스트합니다.
프로브 결과는 선택한 레이어, 입력 해상도와 전처리, 레이블이 지정된 데이터의 양, 프로브의 정규화, 학습 이미지와 평가 이미지의 분할 방식에 따라 달라집니다. 따라서 인코더를 비교하려면 이러한 조건을 모두 동일하게 유지해야 합니다. 선형 프로브가 실패하더라도 작은 비선형 프로브가 성공할 때가 있는데, 이는 정보가 존재하지만 비선형적으로 인코딩되어 있음을 보여줍니다.
선형 프로빙과 관련 기법 비교#
- 파인튜닝: 헤드와 함께 인코더 가중치의 일부 또는 전부를 업데이트하며, 일반적으로 대상 데이터에서 더 높은 정확도를 얻습니다. “파인튜닝은 사전 학습된 특성을 왜곡할 수 있습니다”에 따르면, 10개 데이터셋에서 파인튜닝의 분포 내 정확도는 선형 프로빙보다 평균 2% 높았지만 분포 변화 상황에서는 7% 낮았습니다. 먼저 선형 프로빙을 수행한 다음 해당 헤드에서 파인튜닝하는 LP-FT는 분포 내에서 전체 파인튜닝보다 1%, 분포 변화 상황에서 10% 더 높은 성능을 보였습니다.
- k-최근접 이웃 평가: 학습을 전혀 하지 않고 각 테스트 임베딩을 가장 가까운 학습 임베딩의 레이블로 분류합니다. 이는 자기 지도 인코더에 흔히 사용하는 또 다른 평가 프로토콜입니다.
- 특성 추출 및 전이 학습: 특성 추출은 프로브가 사용하는 임베딩을 생성합니다. 고정된 백본에 선형 헤드를 학습시키는 것은 가장 저렴한 전이 학습 방식이며, PyTorch의 전이 학습 튜토리얼에서는 이를 네트워크를 고정된 특성 추출기로 사용하는 것이라고 설명합니다.
선형 프로빙의 한계#
선형 프로빙은 정보에 선형적으로 얼마나 쉽게 접근할 수 있는지를 측정하며, 이는 적응 후 표현이 얼마나 유용한지와는 다릅니다. 마스크드 오토인코더(MAE)의 저자들은 선형 프로빙 결과와 파인튜닝 결과의 상관관계가 대체로 낮다는 사실을 발견했습니다. 이들의 ViT-L 인코더는 선형 프로빙으로 ImageNet 정확도 73.5%를 기록했으며, 마지막 트랜스포머 블록만 파인튜닝하자 정확도가 81.0%로 올랐습니다. MoCo v3는 MAE보다 높은 프로브 성능을 보였지만, 모든 부분 파인튜닝 설정에서 MAE보다 낮았습니다.










