Ultralytics YOLO27: ウェイトリストに登録する
YOLOのライセンス
Ultralytics用語集に戻る

Linear Probing

線形プロービングでは、凍結したモデルの特徴に線形分類器を学習させ、表現が何を符号化しているかを調べます。仕組み、コード、ファインチューニングとの比較について解説します。

線形プロービングは、凍結した特徴の上に線形分類器(プローブ)のみをトレーニングすることで、事前学習済みモデルの表現にどれだけ有用な情報が含まれているかを測定する手法です。エンコーダーの重みは一切変更されません。画像やテキストを一度だけ通し、得られた埋め込みを固定入力として、ロジスティック回帰または単一の全結合層でラベルを予測します。プローブの精度が高ければ、エンコーダーがすでに、クラスを直線的な境界で分離できるようにデータ例を配置していることを意味します。データ構造における同じ用語は、ハッシュテーブルの衝突を解決するため、次のスロットを確認する無関係な手法を指します。

線形プロービングの仕組み#

プローブ実験では、事前学習済みエンコーダーを読み込み、重みを凍結して、ラベル付きデータセットで特徴抽出を行い、保存した特徴を使って線形分類器をトレーニングします。結果は、学習に使っていないテストセットで評価します。プローブにはクラスごとに特徴1つにつき重みが1つと、バイアスがあるため、線形の決定境界しか描けず、独自の特徴を作ることはできません。したがって、達成した精度はエンコーダーが学習した内容を反映します。ロジスティック回帰はスコアにソフトマックスまたはシグモイドを適用しますが、決定境界は特徴空間上で線形のままです。トレーニングするのはプローブだけなので、特徴は一度計算すれば再利用でき、ファインチューニングより大幅に低コストでプロービングできます。

Ultralytics YOLO26の分類モデルは、model.embed()を通じて凍結した特徴を公開します。既定では、分類ヘッドの前の層の出力をプーリングし、画像ごとに1つのベクトルに変換します。nanoモデルでは256個の数値になります。次の例では、ImageNetでトレーニングされたモデルが見たことのない低解像度画像である、CIFAR-10の猫と犬の画像を使って特徴をプロービングし、比較のために生ピクセルでも同じプローブを学習します。

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は、「Understanding Intermediate Layers Using Linear Classifier Probes」で線形分類器プローブを診断手法として提案し、調査したネットワークでは、特徴の線形分離可能性が層の深さとともに単調に増加することを見いだしました。この方法で各層をプロービングすれば、タスクに必要な概念がネットワークのどこで形成されるかが分かります。自己教師あり学習では、ラベルなしでトレーニングしたエンコーダーの比較に、ImageNet上の線形プローブ精度が標準的に使われるようになりました。プローブが表現にほとんど何も付け加えないため、弱い表現がプローブに頼る余地がほとんどないからです。自然言語処理では、言語モデルの隠れ状態でトレーニングしたプローブを使い、品詞、構文、文が真実かどうかといった特性をモデルが符号化しているかを検証します。

プローブの結果は、選択した層、入力解像度と前処理、ラベル付きデータの量、プローブの正則化、トレーニング画像と評価画像の分割に左右されます。そのため、これらすべての条件を固定しなければ、エンコーダー間の比較は成り立ちません。線形プローブが失敗しても、小規模な非線形プローブなら成功する場合があります。これは、情報は存在するものの、非線形に符号化されていることを示します。

  • ファインチューニング: エンコーダーの重みの一部またはすべてをヘッドとともに更新するため、通常は対象データでより高い精度が得られます。「Fine-Tuning Can Distort Pretrained Features」では、10個のデータセットにおいて、ファインチューニングは線形プロービングより分布内精度が平均2%高かった一方、分布シフト下では精度が7%低くなりました。また、まず線形プロービングを行ってからそのヘッドを使ってファインチューニングするLP-FTは、完全なファインチューニングと比べ、分布内で1%、分布シフト下で10%上回りました。
  • k近傍法による評価: トレーニングを一切行わず、テスト埋め込みごとに最も近いトレーニング埋め込みのラベルを使って分類します。自己教師ありエンコーダーによく使われるもう1つの評価プロトコルです。
  • 特徴抽出と転移学習: 特徴抽出ではプローブが使う埋め込みを生成します。凍結したバックボーン上で線形ヘッドをトレーニングする方法は、最も低コストな転移学習です。PyTorchの転移学習チュートリアルでは、これをネットワークを固定特徴抽出器として使う方法と説明しています。

線形プロービングの限界#

線形プロービングで測定するのは情報の線形的な取り出しやすさであり、適応後の表現の有用性とは異なります。マスク付きオートエンコーダー(MAE)の著者らは、線形プロービングの結果とファインチューニングの結果にはほとんど相関がないことを見いだしました。彼らのViT-Lエンコーダーは、線形プロービングでImageNet精度73.5%を達成し、最後のTransformerブロックだけをファインチューニングすると81.0%に向上しました。一方、MoCo v3はMAEより高いプローブ結果を示しましたが、部分的なファインチューニング設定ではすべてMAEを下回りました。

ソリューションを見る

スポーツにおけるコンピュータービジョン

スポーツにおけるコンピュータービジョン

Ultralytics YOLOが、選手やボールの追跡、パフォーマンス分析、コーチングへの知見、アスリートのリハビリを通じて、スポーツビジョンをどのように支えるかをご紹介します。
詳しく見る
航空画像向けコンピュータービジョン

航空画像向けコンピュータービジョン

Ultralytics YOLOを使用して、ドローンや航空画像をリアルタイムの知見に変換し、農業、水産養殖、自然保護、地理空間分析に活用できます。
詳しく見る
航空宇宙分野のコンピュータービジョン

航空宇宙分野のコンピュータービジョン

Ultralytics YOLOを活用して航空宇宙分野でコンピュータビジョンを導入し、航空機検査、滑走路上のFOD検出、空港の地上業務、複合材の欠陥検出に活用できます。
詳しく見る
セキュリティ分野のコンピュータービジョン

セキュリティ分野のコンピュータービジョン

Ultralytics YOLOモデルであらゆる施設を保護しましょう。ビジョンAIは、周辺監視、脅威検知、ナンバープレート認識、職場の安全管理を支援します。
詳しく見る
ロボティクス分野のコンピュータービジョン

ロボティクス分野のコンピュータービジョン

Ultralytics YOLOモデルで、よりスマートなマシンを実現しましょう。ロボティクスにおけるビジョンAIは、自律ナビゲーション、認識、物体追跡、リアルタイム制御を支援します。
詳しく見る
物流におけるコンピュータービジョン

物流におけるコンピュータービジョン

Ultralytics YOLOモデルで物流を効率化しましょう。ビジョンAIにより、荷物検査、仕分け、車両追跡、倉庫のリアルタイム安全監視を実現します。
詳しく見る
小売業におけるコンピュータービジョン

小売業におけるコンピュータービジョン

Ultralytics YOLOモデルで小売のあり方を変革しましょう。ビジョンAIにより、在庫追跡、棚の監視、行列管理、より高度な顧客インサイトを実現します。
詳しく見る
医療分野におけるコンピュータービジョン

医療分野におけるコンピュータービジョン

Ultralytics YOLOモデルで医療ソリューションを構築しましょう。医療分野のビジョンAIは、医用画像処理の高速化、より高度な診断、患者モニタリングを実現します。
詳しく見る
製造業におけるコンピュータービジョン

製造業におけるコンピュータービジョン

Ultralytics YOLOモデルで製造を最適化しましょう。ビジョンAIは、品質管理、欠陥検出、PPE準拠、組立ラインの自動化を推進します。
詳しく見る
自動車分野におけるコンピュータービジョン

自動車分野におけるコンピュータービジョン

Ultralytics YOLOモデルで自動車分野にコンピュータービジョンを導入しましょう。ビジョンAIは、道路の安全性、運転支援、車両の自動化を向上させ、よりスマートな道路を実現します。
詳しく見る
農業におけるコンピュータービジョン

農業におけるコンピュータービジョン

Ultralytics YOLOモデルでスマート農業にビジョンAIを導入しましょう。作物のモニタリング、家畜の追跡、精密農業を支援し、より高く効率的な収量を実現します。
詳しく見る

AIの未来を一緒に築きましょう!

機械学習の未来に向けた歩みを始めましょう