能動学習:よりスマートにアノテーションする
不確実性サンプリングを使用してアノテーションの優先順位を決め、ラベリング作業を最大50%削減する方法。
能動学習:よりスマートにアノテーションする
能動学習は、次にアノテーションするアイテムをインテリジェントに選択し、最も重要な部分に人間の労力を集中させます。このガイドでは、モデルの品質を維持しながらアノテーション作業を最大50%削減する方法を紹介します。
能動学習とは?
データをランダムにサンプリングしてアノテーションする代わりに、能動学習は以下を行います:
- 現在のアノテーションでモデルを学習
- モデルが不確実なアイテムを特定
- そのアイテムを人間のアノテーション対象として優先
- これを繰り返し、継続的に効率を改善
なぜ能動学習を使うのか?
- アノテーションコストの削減:同じモデル品質でラベル付けするアイテムを減らせる
- 高速なイテレーション:より早く使えるモデルを取得
- 専門知識の集中:困難なケースに人間の注意を集中
- カバレッジの向上:エッジケースの確実な網羅
基本的な能動学習セットアップ
annotation_task_name: "Active Learning Classification"
data_files:
- "data/unlabeled_pool.json"
# Active learning configuration
active_learning:
enabled: true
classifier_name: "sklearn.linear_model.LogisticRegression"
# Sampling settings
max_instances_to_reorder: 1000 # Number of instances to reorder by uncertainty
random_sample_percent: 0.1 # 10% random sampling to maintain diversity
annotation_schemes:
- annotation_type: radio
name: category
labels: [Positive, Negative, Neutral]不確実性サンプリングの仕組み
Potatoの能動学習は、分類器が最も自信のないアイテムを優先するために不確実性サンプリングを使用します。分類器はラベルのないインスタンスのラベルを予測し、信頼度スコアが最も低いものがアノテーション対象として最初に提示されます。
classifier_nameフィールドは、完全なモジュールパスを使用してscikit-learn互換の分類器を指定します:
active_learning:
enabled: true
classifier_name: "sklearn.linear_model.LogisticRegression"その他の分類器オプション:
sklearn.ensemble.RandomForestClassifiersklearn.svm.SVC(probability=Trueを指定)sklearn.naive_bayes.MultinomialNB
完全な設定
annotation_task_name: "Active Learning for Sentiment"
data_files:
- "data/reviews.json"
active_learning:
enabled: true
classifier_name: "sklearn.linear_model.LogisticRegression"
# Sampling settings
max_instances_to_reorder: 2000 # Reorder top N by uncertainty
random_sample_percent: 0.1 # 10% random to maintain diversity
annotation_schemes:
- annotation_type: radio
name: sentiment
description: "Classify the sentiment"
labels:
- name: Positive
key_value: "1"
- name: Negative
key_value: "2"
- name: Neutral
key_value: "3"
required: true
annotation_guidelines:
text: |
## Sentiment Classification
Items are prioritized by model uncertainty.
You may see more difficult or ambiguous cases.
Focus on accuracy over speed.進捗のモニタリング
Potatoの組み込みログを通じてアノテーションの進捗を追跡できます。システムはどのインスタンスが選択され、その不確実性スコアがどの程度だったかを記録し、能動学習プロセスをモニタリングできます。
ベストプラクティス
コールドスタート
random_sample_percentを高めに設定して、多様なランダムサンプリングから始めます:
active_learning:
enabled: true
classifier_name: "sklearn.linear_model.LogisticRegression"
random_sample_percent: 0.2 # 20% random for initial diversityリオーダリング範囲の制御
max_instances_to_reorderを使用して、不確実性でランク付けするインスタンスの数を制御します。値が大きいほど良い選択が可能ですが、計算量が増加します:
active_learning:
max_instances_to_reorder: 5000 # Rank top 5000 by uncertainty多様性の維持
random_sample_percentパラメータにより、ランダムにサンプリングされたインスタンスが一定数含まれ、モデルが不確実なエッジケースのみを見ることを防ぎます:
active_learning:
random_sample_percent: 0.1 # 10% random sampling成功のためのヒント
- 多様なスタート:ランダムな初期サンプルでエッジケースをカバー
- 精度のモニタリング:経時的なモデル性能を追跡
- 過度な最適化を避ける:ランダムサンプリングでカバレッジを維持
- アノテーターの疲労に対処:困難なアイテムは疲れやすい
- モデルチェックポイントの保存:必要に応じてロールバック可能に
次のステップ
能動学習の完全なドキュメントは/docs/features/active-learningをご覧ください。