投稿日
系列ラベリングにおけるActive Learning
もくじ
- はじめに
- 背景
- Active Learningとは
- Active Learningのサイクル
- Active Learningのデモ
- 系列ラベリングとActive Learning
- 系列ラベリングのアノテーションタスク
- 系列ラベリングにおけるアノテーションの複雑さ
- 系列ラベリングにおけるActive Learningの研究動向
- Proactive Learning for Named Entity Recognition
- Active learning approach using a modified least confidence sampling strategy for named entity recognition
- Deep Active Learning for Named Entity Recognition
- Active Learningのツール
- おわりに
- 参考論文
はじめに
こんにちは。戦略技術センターの梁です。
私が所属している自然言語処理チームでは、機械学習用データのアノテーションに関する研究開発をしています。その中でも私は、ラベル付け対象のデータ量を減らす技術であるActive Learningに取り組んでいます。
Active Learning自体はさまざまな場所で解説されています。ただ、系列ラベリングの文脈で解説した資料は少ないため、今回はサーベイ結果を共有します。内容としては、以下のとおりです。
- Active Learningとは
- アノテーションタスク
- 系列ラベリングとActive Learning
- 系列ラベリングにおけるActive Learningの研究動向
- Active Learningツールの紹介
背景
機械学習、とくにディープラーニングのモデルはデータを大量に与えなければ、高い精度を達成することはできません。しかし、データにも「賞味期限」があります。機械学習が搭載されたサービスの運営が長くなると、新しいデータのバリエーションが増えます。古いデータから学習したモデルには、新しいデータに対する予測がうまくできません。すなわち、定期的に学習データを更新し、モデルを再学習しないと、予測の効果が徐々に低下するのです。
定期的にデータを更新することは、新しいデータへのアノテーションを意味します。アノテーション済みデータが多いほど、モデルの精度が高くなることは業界共通の認識でしょう。しかし、現実的には、大量のデータに対してアノテーションするのは、容易ではありません。なぜなら、アノテーションには「お金」がかかるからです。アノテーションコストは以下の式で計算できます。
アノテーションコスト = データあたりのコスト x データ総数
データあたりのコストとデータ総数、どちらかを下げれば、コストが抑えられます。
データあたりのコストを下げるにはクラウドソーシングという手段がありますが、我々が注目したのはデータ数を減らすことです。
データ総数を減らす際にはデータの選び方が肝心です。ランダムにデータを選択するとモデルの学習効果が低下します。
しかし、ラベルがない状況で、モデルの精度に一番貢献できるデータを事前に選ぶことはただの夢なのでしょうか?
それは夢ではありません。Active Learningはそのための技術です。
Active Learningとは
Active Learningとは、ラベルなしのデータから、学習効果の高いデータを選ぶ技術です。データの学習効果が高いため、少ないデータ量でも高い精度を達成できます。
Active Learningアプローチには、以下の3種類があります。
- Pool-based Sampling:少ないラベル付きデータから最初のモデルを学習し、ラベル無しデータのプールから、モデルを学習させる上でもっとも効果が高いと考えられるデータを選択するアプローチ。
- Stream-based Selective Sampling:価値のあるデータをStreamから選び、ラベルを付け、それ以外のデータは破棄するアプローチ。
- Membership Query Synthesis:モデルの学習に有効なデータを生成するアプローチ。
説明のため、以降ではPool-based Samplingを例として取り上げます。
Active Learningのサイクル
Active learningには、以下のサイクルがあります。
(Modified by author. Original iamge is from A Survey of Deep Active Learning)
- Step 0: 少量の高品質な学習データ(Seed data)を作成
- Step 1: Seed dataからモデルを学習
- Step 2: 学習したモデルを使って、ラベルの付いていないデータにラベル付け
- Step 3: ラベル付け結果を使い、質の高いサンプルを選択(Query samples)
- Step 4: 選んだサンプルをアノテーター(Oracle)に振り分け、アノテーション
- Step 5: 新規のラベル付きサンプル(New labeled samples)を学習データに入れる
- Step 6: 改めて分類器を学習
- モデルの精度が閾値より大きい、もしくはアノテーションの予算がなくなるまで、Step2からStep6までのサイクルを繰り返す
Step 3でのサンプル選択の基準がActive Learningの肝です。専門的に言えば、不確実性サンプリング(Uncertainty Sampling)と呼ばれます。これは、モデルで推論する際に、推論結果の不確実性がもっとも高いデータから優先してラベル付けをしていくアプローチです。
Active Learningのデモ
前述したActive LearningサイクルのStep4は、人間の関わるステップです。
このステップをわかりやすく理解するため、以下のデモを用意しました。使ったデータは画像分類でよく使われているMNIST、Active LearningのツールはmodALです。
(Active Learning Demo, image by author)
図の見方を簡単に説明すると、以下のようになります。
- Jupyterセルの部分はActive Learningのコードであり、学習とサンプルの選択を行っている
- 左下「Digit to label」の画像は、Active Learningで選択された学習効果の高いサンプル
- 一番下「Which digit is this?」は、アノテーターがアノテーションする場所
- 右下「Accuracy of your model」は、新規のラベルを学習データに入れ、再学習したモデルの精度
これがActive Learningのサイクルです。このサイクルを回すことによって、学習データに学習効果の高いサンプルが徐々に集まり、モデルの精度が高くなるというわけです。
系列ラベリングとActive Learning
Active Learningが使える場面は多く、画像、テキスト、テーブルデータなどのタスクに適用できます。今回はテキストタスクの中でも、系列ラベリングに絞って紹介します。
系列ラベリングのアノテーションタスク
系列ラベリングは、系列に対してラベルを付けるタスクです。系列ラベリングのタスクとして、以下を挙げられます。
- 固有表現認識 (Named Entity Recognition)
- テキストに出現する人名や地名などの固有名詞や、日付や時間などの数値表現を認識するタスクです。
- 品詞タグ付け(Part of Speech Tagging)
- テキスト中の単語に対して品詞を振るタスクです。
- 意味役割付与(Semantic Role Labeling)
- テキスト中の述語に対して、述語とかかる係り元に意味的な関係を付与するタスクです。 例えば「彼は」は「送った」に対して「動作主」という意味役割であることを示しています。
固有表現認識の例で系列ラベリングのアノテーションタスクを説明します。
(NER demo, image by author, taken from doccano)
この例は固有表現認識のアノテーション例です。アノテーターは文を読んで、組織(ORG)、場所(LOC)、人名(PER)などの固有表現の場所を特定して、アノテーションします。単純な選択式のタスクではなく、位置がずれると、間違ったラベルとなります。
系列ラベリングのアノテーションタスクと比較するため、分類のアノテーションタスクにも説明します。
(Sentiment analysis demo, image by author, taken from doccano)
この例は分類タスク(感情分析)のアノテーション例です。アノテーターは文を読んで、「Positive」もしくは「Negative」の感情ラベルを付けます。分類タスクは候補のラベルから1つを選ぶアノテーションタスクになります。系列ラベリングのアノテーションタスクと比べて、分類のアノテーションタスクの作業が簡単です。
系列ラベリングにおけるアノテーションの複雑さ
前節のアノテーションタスクを見るとわかるように、系列ラベリングのアノテーションタスクは複雑です。分類の方はカテゴリされたラベルから1つを選べばいいです。しかし、系列ラベリングでは、系列の位置がずれることは許されません。ケアレスなどの原因で、アノテーターも間違いやすいです。
系列ラベリングのアノテーション作業は複雑であるため、アノテーションのコスト(時間とお金)は他のタスクより高くなります。このコストを下げるため、学術界の研究はどのくらい進んでいるでしょうか。
系列ラベリングにおけるActive Learningの研究動向
本節では、以下の3本の論文の手法を簡単に紹介します。
- Proactive Learning for Named Entity Recognition
- Active learning approach using a modified least confidence sampling strategy for named entity recognition
- Deep Active Learning for Named Entity Recognition
Proactive Learning for Named Entity Recognition
Active Learningのサイクルでは、人間によって正しいラベルが付けられることを前題にします。しかし、アノテーションは人力作業なので、アノテーターの専門知識のレベルや疲労によって、間違ったラベルを付けることもありえます。その問題に対して、この論文ではアノテーターの専門性を考慮した上、コストバランスの高いActive Learning手法を提案しています。
この研究では「perfect export」と「fallible annotator」があることを想定しています。前者はいつも正しいラベルを付けます。後者は間違ったラベルを付けることもあります。これらのパフォーマンスを数字で表し、いつ、誰にアノテーションを依頼することを決めるのが提案手法の肝です。
(Image is from the paper)
結果として、アノテーションコストが一定の場合、提案手法は従来手法と比べて、モデルの精度が高いという結果になりました。例えばACE2005のデータセットに対して、200以上のコストになると、提案手法のPAのF1スコアはいつもベースライン手法(ReliableとFallible)より高かったです。
Active learning approach using a modified least confidence sampling strategy for named entity recognition
学習効果の高いサンプルを選ぶのによく使われている不確実性サンプリングのアルゴリズムは、Least Confidence Samplingです。このアルゴリズムはディープラーニングのシチュエーションでは効果的でないのが課題です。そのため、この論文ではLeast Confidence Samplingをディープラーニング向けに改善した手法を提案しています。
(Image is from the paper)
実験結果として、提案されたサンプリングの手法は他の手法よりActive Learningのサイクルを停止する条件に到達するまでにアノテーションしたデータの数が少なかったです。
つまり、提出手法は学習効果の高いサンプルを選ぶことができます。
Deep Active Learning for Named Entity Recognition
Active Learningでは、学習データを更新するたびに、モデルを再学習する必要があります。このとき、シンプルなモデルであれば問題はないのですが、ディープラーニングのモデルを使うと、再学習の時間が絶望的に長くなるという課題があります。
(Image is from the paper)
その課題を解決するために、この論文ではActive Learningに使えるディープラーニングのモデルを提案しています。モデルはCNNとLSTMをベースにしています。CNNの層で単語レベルのエンコーダを使って文字の特徴を学習し、LSTMの層でタグ付けをします。
(Image is from the paper)
実験結果として、提案されたサンプリングの手法は他の手法よりActive Learningのサイクルを停止する条件に到達するまでにアノテーションしたデータの数が少なかったです。
Active Learningのツール
以下のテーブルはActive Learningのツールの調整結果です。
ツール | インタフェースの使いやすさ | 不確実性サンプリングアルゴリズムの実装状況 | ドキュメントの状況 | セットアップの手順 | 系列ラベリングのサーポート |
---|---|---|---|---|---|
modAL | 使いやすい | 典型的なアルゴリズムがある | 完備 | 簡単 | ✖ |
AliPy | 使いづらい | 近年のActive Learningアルゴリズムが多い | 少ない&見にくい | 難しい | ✖ |
libact | 使いやすい | 典型的なアルゴリズムがある | 完備 | 簡単 | ✖ |
AlpacaTag | 使いやすい&Webインタフェースあり | Pool-basedアルゴリズムだけ&ハイブリッド | 少ない | 難しい | ◉ |
modAL、AliPy、libactはActive Learningの機能がすべて実装されています。個人的にはmodALが使いやすいと感じています。残念なことに、この3つのツールは、系列ラベリングをサポートしていません。
AlpacaTagは系列ラベリングをサポートしていますが、メンテナンスされておらず、セットアップの問題があり、利用できませんでした。
おわりに
本文では系列ラベリングにおけるActive Learningの研究を紹介し、課題を整理しました。さらに、Active Learningのツールも紹介しました。
今後のトレンドは、ディープラーニングとActive Learningの結合に関する課題といえます。個人的には、人間が間違ったラベルを付ける問題とモデルの再学習速度が気になっています。なぜなら、現在のアプローチは、この2つの問題に対して、まだ満足できるレベルに達していないからです。実用性を考えると、この2つの問題を解決しなければなりません。Active Learningのツールを紹介しましたが、系列ラベリングへの対応はこれからであることを痛感しました。
我々のチームではアノテーションの効率をあげるため、今後は良いツールを提供します。
参考論文
- Deep Active Learning for Named Entity Recognition
- Proactive Learning for Named Entity Recognition
- Active learning approach using a modified least confidence sampling strategy for named entity recognition
- Active Learning for Noisy Data Streams Using Weak and Strong Labelers
- QActor: On-line Active Learning for Noisy Labeled Stream Data
- Using Error Decay Prediction to Overcome Practical Issues of Deep Active Learning for Named Entity Recognition
- Low-resource Deep Entity Resolution with Transfer and Active Learning
- A Survey on Deep Learning for Named Entity Recognition
- Active Learning for Sequence Tagging with Deep Pre-trained Models and Bayesian Uncertainty Estimates
本コンテンツはクリエイティブコモンズ(Creative Commons) 4.0 の「表示—継承」に準拠しています。