投稿日
データ作成に使うActive Learningの時間と性能を両立するベストプラクティス
はじめに
こんにちは。 戦略技術センターの梁です。 ラベル付け対象のデータ量を減らす技術であるActive Learningに取り組んでいます。
Active Learningは少ないデータ量で高い性能を達成するための技術として、画像処理や自然言語処理のタスクに使われています。最近のActive Learningの研究では、高い性能を得るため、主にGPUを使って学習するモデル(以下、GPUモデル)を採用しています。しかし、GPUモデルの学習には、時間がかかります。性能を維持しつつ、学習時間を短縮したい場合、どのようなアプローチを取ればいいかは自明ではありません。そこで、本記事では、固有表現認識を対象として、モデルとサンプリングアルゴリズムを変化させたときの性能と時間への影響を紹介します。
検証した結果をまとめると表1のようになります。状況に応じて、適切なモデルとサンプリングアルゴリズムを選択するのが重要です。多様性と不確定性については、次節で紹介します。
性能\時間 | 長い | 短い |
---|---|---|
高い | GPUモデル+多様性ありのサンプリングアルゴリズム | CPUモデル+多様性ありのサンプリングアルゴリズム |
低い | CPUモデル+不確定性ベースサンプリングアルゴリズム |
(表1:性能と時間によって、適切なモデルとサンプリングアルゴリズムの組み合わせ)
本記事の内容は、以下のとおりです。
- 背景
- Active Learningのサイクル
- Active Learningサイクルステップごとの時間割合
- CPUモデルの検証
- サンプリングアルゴリズムの検証
- おわりに
背景
機械学習の一種である教師あり学習では、モデルを学習するため、生データにアノテーションして作成したラベル付きデータを使います。しかし、実際のプロジェクトで膨大な量のデータにアノテーションするのは、金銭的・人的リソースの面から現実的ではありません。そこで、学習効果の高いデータを選んでアノテーションする手法であるActive Learningが提案されました。Active Learningで選んだデータは学習効果が高いため、少ないデータ量でも高い性能を達成できます。
Active Learningの研究では、サンプリングアルゴリズムの改良を対象とした研究が多い傾向にあります。ここで、サンプリングアルゴリズムは、さまざまな指標でデータの学習効果を測るアルゴリズムを指します。よく使われている指標は、以下に挙げる不確定性指標と多様性指標です。
- 不確定性指標[1]:モデルの予測結果から、確信度が一番低いデータを選ぶ手法です。「確信度」とは、予測または出力がどのくらい確実であるかの統計的な尺度のことです。モデルが予測に自信のないデータに対して人間がラベル付けすることで、モデルの予測性能を上げます。
- 多様性指標[2]:モデルの予測結果から、多様性が高いデータを選ぶ手法です。ここでの「多様性」は表層情報(文の長さ、画像の大きさなど)、分散表現などの手法でデータの差分を表すことです。多様なデータを学習することで、モデルの予測性能を上げます。
指標は単独で使うだけではなく、複数の指標を組み合わせて使うことも可能です[3]。
本記事で使っている指標は以下のとおりです。
- 不確定性指標
- Least Confidence(LC)[4]
- Maximum Normalized Log-Probability(MNLP)[5]
- 多様性指標
- 分散表現の類似度(Distributed Similarity、DS)
- クラスタ内の類似度(Clustering Similarity、CS)
- 組み合わせ指標
- LC + DS
- LC + CS
- MNLP + DS
- MNLP + CS
2つの多様性指標と組み合わせ指標は固有表現認識に適応するため、提案した指標です。詳細は以下の記事を参照してください。
Active Learningのサイクル
Active Learningの各ステップの時間割合を検証する前に、まず各ステップについて紹介します。
(図1:Active Learningのサイクル)
Active Learningのサイクルは、以下の6つのステップに大別できます。ステップ2からステップ6までを、モデルの性能がしきい値より大きい、もしくはアノテーションの予算がなくなるまで、繰り返します。
- モデルの初期化(Initialize model):少量のラベル付きデータ(Seed data)からモデルを学習
- 予測(Predict):学習済みのモデルを使って、ラベルなしのデータ(Unlabeled Data Pool)のラベルを予測
- クエリ(Query):予測結果を利用し、サンプリングアルゴリズムが学習効果の高いデータを選択
- アノテーション(Annotation):選んだサンプルをアノテーターに振り分け、手動でラベルをつける
- 更新(Update):アノテーション済みのデータをラベル付きのデータセットに入れる
- 再学習(Retrain):ラベル付きのデータセットを学習データとして、モデルを再学習
図1より、Active Learningにかかる総時間は、各ステップの時間の和になります。GPUモデルを使う時の時間を短縮したい場合、まず各ステップにどのくらいの時間がかかるかを調べる必要があります。なお、ステップ4にかかる時間は調査対象から除きます。その理由は、アノテーション作業は人によって、かかる時間が変わるからです。
Active Learningサイクルステップごとの時間割合
GPUモデルにおけるActive Learningサイクルの各ステップの時間割合を実験で確認します。
GPUモデルの実験のセットアップは以下となります。
設定名 | 値 |
---|---|
データセット | Ontonotes 5.0[6] |
モデル | Bi-LSTM CRF |
Total query data | 50% |
イテレーション数 | 25 |
各イテレーションのエポック数 | 20 |
バッチサイズ | 32 |
学習率 | 0.015 |
埋め込み | bert-base-uncased |
GPU | NVIDIA T4 |
CPU | Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz |
埋め込みを生成するBERTについて、特徴抽出とファインチューニング2つの使い方があります。特徴抽出の場合、BERTのパラメータを固定し、すべてのレイヤーの埋め込みを使っています。分類器が学習する時、BERTのパラメータは変更せず、出力の埋め込みも変わりません。ファインチューニングの場合、BERTのパラメータを固定せず、ソフトマックスレイヤーの埋め込みだけを使っています。分類器を学習すると、BERTのパラメータも更新され、出力の埋め込みも変わります。
今回の実験はBERTを特徴抽出器として使います。ファインチューニングをしない理由は3つあります。1つ目はファインチューニングで出力した埋め込みが分類器の性能のボトルネックになる可能性があるからです。2つ目はファインチューニングがBERTのパラメータを更新するため、学習時間が特徴抽出の場合より長くなるからです。3つ目は、分類器としてBi-LSTM CRFを使った場合、特徴抽出とファインチューニングの性能差が小さいからです[7]。
図2に、各ステップにかかる時間の割合を示します。
(図2:GPUモデル使用時の各ステップにかかる時間の割合)
(図3:GPUモデルの各ステップにかかる時間(分))
(図4:GPUモデルの各サンプリングアルゴリズムの性能)
図2と図3から、再学習にもっとも時間がかかっていることがわかります。再学習はモデルの学習時間に関連しているため、GPUモデルをCPUモデルに変更し、時間の短縮ができると予測できます。再学習と比べて、クエリにかかった時間は多くはありません。しかし、図4のとおり、クエリで使ったサンプリングアルゴリズムはモデルの性能への影響が大きいことがわかります。状況に応じて、適切なサンプリングアルゴリズムを選ぶ必要があります。したがって、次節ではモデルとサンプリングアルゴリズムがActive Learningのサイクルに与える時間と性能への影響を検証します。
CPUモデルの検証
GPUモデルの学習は時間がかかるため、CPUモデルを使うのは素朴なアイデアでしょう。しかし、GPUモデルはCPUモデルより複雑、深層な特徴が学習できるため、CPUモデルは性能的にGPUモデルより劣っていると考えられます。今回の実験は時間と性能両方から、CPUモデルを検証します。
CPUモデルの実験のセットアップは以下のとおりです。
設定名 | 値 |
---|---|
データセット | Ontonotes 5.0 |
モデル | CRF |
Total query data | 50% |
イテレーション数 | 25 |
各イテレーションのエポック数 | 20 |
バッチサイズ | 32 |
学習率 | 0.015 |
埋め込み | bert-base-uncased |
CPU | Intel(R) Xeon(R) Platinum 8275CL CPU @ 3.00GHz |
(表3:CPUモデルの実験のセットアップ)
埋め込みについて、GPUモデルの設定と統一し、BERTはファインチューニングしません。
(図5:CPUモデル使用時の各ステップにかかる時間の割合)
(図6:CPUモデルの各ステップにかかる時間(分))
(図7:モデルが異なったマシンでの総時間)
図5を見ると、各ステップにかかる時間の割合は、CPUモデルとGPUモデルで大きな差がないことはわかります。しかし、図6と図7では、CPUモデルを使ったため、総計時間はGPUモデルより65%削減できていることがわかります。
(図8:CPUモデルの各サンプリングアルゴリズムの性能)
性能的には、CPUモデルはGPUモデルより、F1スコアは2~4ポイントくらい低下しています。その代わりに、総時間は65%削減できました。また、CPUモデルはGPUを使わないため、お金を節約できます。
サンプリングアルゴリズムの検証
今回の実験はサンプリングアルゴリズムがActive Learningのサイクルに与える時間と性能への影響を検証します。
実験のセットアップは前節で紹介したとおりなので、ここでは省略します。結果は以下のようになりました。
(図9:各モデルの性能)
(図10:モデルにおける各サンプリングアルゴリズムのステップごとの時間)
性能(図9)から見ると、サンプリングアルゴリズムを組み合わせることで(LC+DS、LC+CS、MNLP+DS、MNLP+CS)、不確定性ベースのサンプリングアルゴリズム(LC、MNLP)単体より性能が改善していることがわかります。組み合わせのサンプリングアルゴリズムの中では、MNLP+DSとMNLP+CSの性能はLC+DSとLC+CSの性能より高い結果となりました。
一方、時間(図10)では、組み合わせのサンプリングアルゴリズム(LC+DS、LC+CS、MNLP+DS、MNLP+CS)は不確定性ベースのサンプリングアルゴリズム(LC、MNLP)より、モデルの再学習時間とクエリの時間が増えました。すべてのサンプリングアルゴリズムの中、不確定性ベースのサンプリングアルゴリズム(LC、MNLP)が早い結果となりました。組み合わせのサンプリングアルゴリズムでは、CSを使っている手法の時間が長かったです。これらの結果から、時間を重視するユーザーはLCとMNLPを使うとよいでしょう。性能と時間の両方を重視する方は、MNLP+DSも選択肢になりえます。
おわりに
本文は固有表現認識を対象として、モデルとサンプリングアルゴリズムは性能と時間への影響を検証しました。 状況に応じて、適切なモデルとサンプリングアルゴリズムを選択するには、以下のアドバイスがあります。
- 予算が十分、性能優先の場合、GPUモデルと多様性ありのサンプリングアルゴリズムを推奨
- 予算が厳しい、時間短縮が優先の場合、CPUモデルと不確定性ベースサンプリングアルゴリズムを推奨
- 予算が厳しい、性能維持と時間短縮を両立したい場合、CPUモデルと多様性ありのサンプリングアルゴリズムを推奨
参考資料
- How to measure uncertainty in uncertainty sampling for active learning
- Composable core-sets for diversity and coverage maximization
- Active Learning with Sampling by Uncertainty and Density for Word Sense Disambiguation and Text Classification
- Reducing labeling effort for structured prediction tasks
- Deep Active Learning for Named Entity Recognition
- OntoNotes 5.0
- To Tune or Not to Tune? Adapting Pretrained Representations to Diverse Tasks