アノテーションのための能動学習
能動学習とは何か、どんなときに有効か、そして Potato が対応するクエリ戦略(不確実性、多様性、BADGE、BALD)を解説します。より少ないラベルで同じモデル品質を達成するための手法です。
能動学習は次にアノテーションすべき項目を選び、モデルがはるかに少ないラベルで同じ精度に到達できるようにします。ランダムにラベル付けするのではなく、モデルが最も情報量が多いと判断した項目をラベル付けします。 アノテーションがボトルネックになっているとき、これは利用できる中でも最も費用対効果の高い手法のひとつです。
背景については能動学習を参照してください。機能リファレンスは能動学習をご覧ください。
このループ
- 小さなシードセットをラベル付けします。
- 手元のデータで素早くモデルを学習させます。
- 未ラベルのプールをスコアリングし、最も情報量の多い項目を選びます。
- それらをアノテーションして追加し、再学習します。これを繰り返します。
得られるのはデータ効率です。モデルが最も多くを学べる場所にアノテーション予算を投じられます。
Potato が対応するクエリ戦略
- 不確実性サンプリング:モデルが最も自信を持てない項目(決定境界の近く)を選びます。最も単純で、多くの場合に有効な既定の戦略です。
- 多様性サンプリング:互いに異なる項目を選び、ほぼ重複した内容に予算を浪費しないようにします。
- BADGE:勾配埋め込みを用いて不確実性と多様性を組み合わせます。
- BALD:モデルの不確実性を最も減らすと期待される項目を選ぶベイズ的戦略です。
- ハイブリッド:複数の戦略を混ぜ合わせます。
yaml
active_learning:
enabled: true
schema_names: [sentiment]
query_strategy: uncertainty # or diversity, badge, bald, hybrid
min_instances_for_training: 20能動学習が有効なときと、そうでないとき
ラベル付けのコストが高く、プールが大きく、小さなシードで有用なモデルを学習できるとき、能動学習は有効です。次のような場合には効果が薄れます。
- タスクがあまりに簡単で、ランダムなラベル付けでもすぐに性能が頭打ちになる。
- バイアスのないホールドアウト評価セットが必要な場合。評価データはランダムサンプリングのままにしておきましょう。能動学習で選んだデータは意図的に偏っているからです。
- エンジニアリングの労力に比べて、ラベル付けのコストが安い。