Active Learning
アクティブラーニングでは、次に人がラベル付けする未ラベルサンプルをモデルが選択するため、より少ないラベルで目標精度に到達できます。クエリ戦略とコードを紹介します。
アクティブラーニングは、次に人がラベル付けする未ラベルの例をモデルが選択する機械学習のアプローチです。データから無作為に抽出してラベル付けする代わりに、チームは少量のラベル付きデータでモデルを学習させ、それを使って大量の未ラベルデータにスコアを付けます。情報量の多い例をアノテーターに送り、拡張したデータセットで再学習し、この手順を繰り返します。ラベルを提供する人はオラクルと呼ばれます。目標は、できるだけ少ないラベルで目標正解率に到達することです。これは、放射線科医による画像の読影のように専門家によるラベリングが必要な場合や、自動運転車の車両群が毎日記録する動画のように、全体をラベリングするには規模が大きすぎる場合に特に重要です。
アクティブラーニングのループの仕組み#
コンピュータービジョンのプロジェクトでは、スコア付けを待つ未ラベル画像の固定コレクションを用いるプールベースのアクティブラーニングが一般的です。各ラウンドは次の4つのステップで構成されます。
- 学習: 物体検出モデルなどを、これまでに収集したラベル付きデータで学習させます。
- スコア付け: 未ラベルのデータプールにモデルを適用し、各例の情報量スコアを算出します。
- クエリ: スコア上位のバッチをアノテーターに送り、データラベリングを依頼します。
- 更新: 新しいラベルを学習データに追加し、再学習します。
ラベリングの予算を使い切るか、固定した検証セットで正解率の改善が止まると、ループは終了します。各ラウンドの選択が有効かどうかは、同じ数のラベルを無作為に選んで学習したモデルと比較して確認します。
クエリ戦略#
クエリ戦略によって、何を情報量が多いとみなすかが決まります。
- 不確実性サンプリング: モデルの確信度が最も低い例を選びます。測定方法には、最上位クラスの信頼度が最も低い例、上位2クラスのスコア差が最小の例、予測クラス分布のエントロピーが最大の例があります。
- 委員会によるクエリ: 複数のモデルを学習させ、最も意見が食い違う例を選びます。モンテカルロ・ドロップアウトを使うと、単一のネットワークから低コストで委員会を構成できます。
- 多様性サンプリング: 埋め込み空間を幅広くカバーする例を選び、連続する動画フレームのようなほぼ重複した例ばかりでバッチが埋まるのを防ぎます。コアセットアプローチは、バッチ設定ではCNNに対する多くの不確実性ヒューリスティックが効果的でなかったことを踏まえ、バッチ選択をこの観点から定式化しています。
- ハイブリッド戦略: 2種類のシグナルを組み合わせます。BADGEは、手動で調整した重みを使わず、勾配埋め込み空間で不確実性と多様性の両方を備えた例を選びます。
検出器は画像ごとに多数のボックスを出力するため、各ボックスのスコアを画像ごとの単一スコアにまとめる必要があります。たとえば、すべての検出の信頼度を平均します。以下のスクリプトは、事前学習済みのYOLO26モデルを使い、平均検出信頼度で小規模なデータプールを順位付けし、最も信頼度の低い画像からクエリします。
from ultralytics import YOLO
# Model trained on the current labeled set
model = YOLO("yolo26n.pt")
# Unlabeled pool, usually thousands of images
pool = ["https://ultralytics.com/images/bus.jpg", "https://ultralytics.com/images/zidane.jpg"]
results = model(pool, conf=0.1)
# Least-confidence sampling: score each image by its mean detection confidence
scores = {}
for image, result in zip(pool, results):
if len(result.boxes):
scores[image] = result.boxes.conf.mean().item()
# Query the lowest-scoring images first, within a labeling budget of one image
query = sorted(scores, key=scores.get)[:1]
print(f"Label next: {query}")低いconf=0.1しきい値を設定すると、モデルが確信を持てないボックスである低スコアの検出結果もスコアに含まれます。Ultralytics Platformのアノテーションエディターを使うと、残りのループを完了できます。Smartモードでは独自にファインチューニングしたYOLOモデルを読み込めるため、再学習のたびにモデルが次にクエリされるバッチへ事前ラベルを付け、アノテーターが修正できます。
実践上の注意点#
- コールドスタート: 数十件の例で学習したモデルの不確実性スコアは信頼性に欠けるため、初期ラウンドでは無作為選択や多様性に基づく選択を使うことがよくあります。
- 冗長なバッチ: 不確実性が最も高い画像を個別にk件選ぶと、ほぼ同一の画像の集まりになりがちです。この問題には、多様性戦略やハイブリッド戦略で対処します。
- サンプリングバイアス: 難しいケースが過剰に含まれることで、ラベル付きデータが実際のデータ分布から外れていきます。スコアの偏りを防ぐため、検証セットとテストセットはデータプール全体から無作為に抽出します。
- 外れ値: 破損した画像、ぼやけた画像、またはドメイン外の画像は、どのモデルにとっても不確実に見えます。事前に除外しないと、ラベリングの予算を無駄にする可能性があります。
アクティブラーニングと関連用語#
- 半教師あり学習: 未ラベルデータも使いますが、不確実な予測について人に尋ねる代わりに、モデルが確信度の高い予測に擬似ラベルを付けます。両者を組み合わせることもよくあります。
- カリキュラム学習: 学習中に、すでにラベル付けされた例を簡単なものから難しいものへと順番に処理します。アクティブラーニングは、どの例にラベルを付けるか自体を決定します。
- ハードネガティブマイニング: モデルが最も誤分類するラベル付きの負例を選び、重点的に学習させます。既存のラベルを利用し、新しいラベルは追加しません。
- データフライホイール: 導入済みモデルが新しいデータを見つけ出し、そのデータが次のモデルを改善する本番環境のループです。アクティブラーニングは、その中でよく使われる選択ステップです。










