Linear Probing
Linear probing huấn luyện bộ phân loại tuyến tính trên đặc trưng của model đã đóng băng để kiểm tra thông tin mà các biểu diễn của model mã hóa. Cách hoạt động, code và so sánh với fine-tuning.
Linear probing là kỹ thuật đo lượng thông tin hữu ích chứa trong biểu diễn của một model được huấn luyện trước bằng cách chỉ huấn luyện một bộ phân loại tuyến tính, gọi là probe, trên các đặc trưng đã đóng băng. Trọng số encoder không bao giờ thay đổi: ảnh hoặc văn bản chỉ đi qua encoder một lần, các embedding tạo ra trở thành đầu vào cố định, rồi hồi quy logistic hoặc một lớp fully connected duy nhất học cách dự đoán nhãn từ các embedding đó. Độ chính xác cao của probe cho thấy encoder đã sắp xếp các mẫu sao cho có thể dùng một ranh giới thẳng để phân tách các lớp. Trong cấu trúc dữ liệu, tên gọi này cũng chỉ một phương pháp không liên quan để xử lý va chạm trong bảng băm bằng cách kiểm tra ô kế tiếp.
Cách linear probing hoạt động#
Một thử nghiệm probe tải encoder đã huấn luyện trước, đóng băng encoder, thực hiện trích xuất đặc trưng trên dataset có nhãn rồi huấn luyện bộ phân loại tuyến tính trên các đặc trưng đã lưu; kết quả được báo cáo trên tập kiểm tra giữ lại. Probe có một trọng số cho mỗi đặc trưng ở mỗi lớp, cộng thêm một bias, nên chỉ có thể tạo ranh giới quyết định tuyến tính và không thể tự tạo đặc trưng mới; độ chính xác đạt được phản ánh những gì encoder đã học. Hồi quy logistic áp dụng softmax hoặc sigmoid lên các điểm số, nhưng ranh giới quyết định vẫn tuyến tính trong không gian đặc trưng. Vì chỉ probe được huấn luyện nên có thể tính toán và tái sử dụng đặc trưng, khiến probing rẻ hơn nhiều so với tinh chỉnh.
Model phân loại Ultralytics YOLO26 cung cấp các đặc trưng đã đóng băng thông qua model.embed(); theo mặc định, công cụ này gộp đầu ra của lớp đứng trước head phân loại thành một vector cho mỗi ảnh, gồm 256 số đối với model nano. Ví dụ sau dùng probe trên ảnh mèo và chó trong CIFAR-10, là những ảnh độ phân giải thấp mà model được huấn luyện trên ImageNet chưa từng thấy, rồi khớp cùng probe đó trên pixel thô để so sánh:
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}")Probe đạt 0.573 trên pixel thô, chỉ nhỉnh hơn mức đoán 0.5 một chút, và đạt 0.833 trên đặc trưng YOLO26; khoảng cách này đo lượng thông tin về lớp mà encoder YOLO26 đã đóng băng giúp truy cập tuyến tính.
Probe cho thấy điều gì#
Linear probe kiểm tra xem thông tin vừa có mặt, vừa dễ trích xuất hay không. Guillaume Alain và Yoshua Bengio đề xuất dùng probe bộ phân loại tuyến tính làm công cụ chẩn đoán trong bài viết "Tìm hiểu các lớp trung gian bằng probe bộ phân loại tuyến tính" và phát hiện tính phân tách tuyến tính của đặc trưng tăng đơn điệu theo độ sâu trong các mạng mà họ nghiên cứu. Dùng probe theo cách này ở mọi lớp cho thấy mạng hình thành những khái niệm cần thiết cho tác vụ tại đâu. Trong học tự giám sát, độ chính xác linear probe trên ImageNet trở thành cách tiêu chuẩn để so sánh các encoder được huấn luyện không nhãn, vì probe gần như không bổ sung gì để một biểu diễn yếu có thể dựa vào. Trong xử lý ngôn ngữ tự nhiên, probe được huấn luyện trên trạng thái ẩn của model ngôn ngữ kiểm tra xem model có mã hóa các thuộc tính như từ loại, cú pháp hoặc tính đúng sai của một phát biểu hay không.
Kết quả probe phụ thuộc vào lớp được chọn, độ phân giải đầu vào và tiền xử lý, lượng dữ liệu có nhãn, regularization của probe, cũng như cách chia ảnh giữa tập huấn luyện và tập đánh giá; do đó, chỉ có thể so sánh các encoder khi giữ cố định tất cả yếu tố này. Khi linear probe không hiệu quả, đôi khi probe phi tuyến nhỏ lại thành công, cho thấy thông tin có tồn tại nhưng được mã hóa theo cách phi tuyến.
Linear probing và các phương pháp liên quan#
- Tinh chỉnh: Cập nhật một phần hoặc toàn bộ trọng số encoder cùng với head, thường giúp đạt độ chính xác cao hơn trên dữ liệu mục tiêu. Trong bài viết "Tinh chỉnh có thể làm sai lệch đặc trưng đã huấn luyện trước", tinh chỉnh đạt độ chính xác cao hơn trung bình 2% trong phân phối so với linear probing trên 10 dataset, nhưng thấp hơn 7% khi phân phối thay đổi; LP-FT, tức linear probing trước rồi tinh chỉnh từ head đó, vượt tinh chỉnh toàn bộ 1% trong phân phối và 10% khi phân phối thay đổi.
- Đánh giá k láng giềng gần nhất: Phân loại mỗi embedding trong tập kiểm tra theo nhãn của các embedding huấn luyện gần nhất mà không cần huấn luyện, đây là một giao thức phổ biến khác dành cho encoder tự giám sát.
- Trích xuất đặc trưng và học chuyển giao: Trích xuất đặc trưng tạo ra các embedding mà probe sử dụng; huấn luyện head tuyến tính trên backbone đã đóng băng là hình thức học chuyển giao ít tốn kém nhất, được hướng dẫn học chuyển giao của PyTorch gọi là sử dụng mạng làm bộ trích xuất đặc trưng cố định.
Giới hạn của linear probing#
Linear probing đo mức độ thông tin có thể truy cập tuyến tính, khác với mức độ hữu ích của một biểu diễn sau khi thích nghi. Các tác giả của autoencoder có mặt nạ (MAE) phát hiện kết quả linear probing và tinh chỉnh phần lớn không tương quan: encoder ViT-L đạt độ chính xác ImageNet 73.5% khi linear probing, chỉ tinh chỉnh khối transformer cuối cùng đã nâng mức đó lên 81.0%, còn MoCo v3 có kết quả probe cao hơn MAE nhưng lại kém hơn MAE trong mọi thiết lập tinh chỉnh một phần.










