Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Active Learning 入門

29,465 views

Published on

Published in: Technology
  • Be the first to comment

Active Learning 入門

  1. 1. Active Learning 入門 ~アノテーションしんどいよね!(切実)~ 2013/9/1 DSIRNLP #4 中谷 秀洋@サイボウズ・ラボ / @shuyo
  2. 2. Agenda • Active Learning とは • Active Learning 試してみた • まとめ
  3. 3. References • (Settles 2009) Active Learning Literature Survey – よくまとまったサーベイ。本資料での用語は主にこちらに準拠 • (Schein+ 2007) Active Learning for Logistic Regression – LR に AL を適用する場合のサーベイとして使える • (Olsson 2009) A Literature Survey of Active Machine Learning in the Context of Natural Language Processing – こちらもしっかりしたサーベイ • (Guo+ 2007) Optimistic Active Learning using Mutual Information – Expected Error Reduction AL の手法の1つ MM+M を提案 • (Tong+ 2000) Support Vector Machine Active Learning with Application to Text Classification – 本資料では参照してないが SVM で AL するなら
  4. 4. Active Learning とは
  5. 5. アノテーション職人の朝は早い • アノテーション(ラベル付け)は高コスト – 発話文のアノテーションは実時間長の10倍以 上かかる (Zhu 2005) – 固有表現や関係抽出のためのアノテーション は平易なニュース1つでも1時間半以上。専門 知識も必要(Settles+ 2008) – 言語判定のために、19言語70万件のツイート に言語ラベルを付与(5ヶ月)
  6. 6. 少ない訓練データで モデルの性能を上げたい • 半教師あり学習 (semi-supervised learning) – 大量の正解なしデータと少量の正解ありデー タで学習して、十分な性能の実現を目指す • 能動学習 (active learning) – やみくもではなく、効果的なデータを選んで アノテーションする
  7. 7. Active Learning (能動学習) • 正解なしデータの中から「これの正解がわかれば性能 が上がるかも」というデータを選ぶ • Oracle(神託 : 正解を教えてくれる何か)にデータを 問い合わせ(query)、得た正解を訓練データに追加する via (Settles 2009)
  8. 8. 半教師あり学習のほうが いいんじゃあないの?
  9. 9. クラウドサービスの苦悩 • ユーザごとにドメインが全く違う クラウド 製造業 飲食業 官公庁
  10. 10. ビッグデータ! 機械学習! • 誰が正解データ作るの? クラウド 製造業 飲食業 官公庁 サービサー え? ぼく?
  11. 11. サービサーが全て作るのは非現実的 • ドメイン知識をもたない – ユーザごとに独自の用語や固有名詞も • ユーザが増えるたびにアノテーション – ムリムリムリ! • 変化への追従も必要だし – 共通基本データセット+大まかなドメイン データセットくらいまでならなんとか……
  12. 12. ユーザに作れる? • ゼロから作るのは無理 • 学習データとして何が必要かを判断する のも困難 • 正解を必要とするデータの提示(推薦) があれば、それらのコストは大幅低減 • Active Learning が役に立つかも!?
  13. 13. Active Learning 試してみた
  14. 14. Active Learning の分類 (Settles 2009) • どこからデータを持ってくる? – membership query synthesis – stream-based selective sampling – pool-based sampling • どうやってデータを選ぶ? – 戦略ごとに6つに分類 ※ Active Learning の用語は必ずしもコンセンサスが取られていない。 論文によって異なる名前が使われていることもあるので注意 本資料は (Settles 2009) での名称を主に優先する
  15. 15. Active Learning のシナリオ • membership query synthesis – 正解を知りたいデータを新規に生成する • stream-based selective sampling – ストリームで流れてくるデータ1つ1つについて、 Oracle に問い合わせるかどうか判断する • pool-based sampling – 正解なしデータの pool から、次に問い合わせる データを1つ選ぶ
  16. 16. query を選ぶ戦略 • 1. Uncertainly Sampling • 2. Query-By-Committee • 3. Expected Model Change • 4. Expected Error Reduction • 5. Variance Reduction • 6. Density-Weighted Methods 1 2 3 4
  17. 17. 1. Uncertainly Sampling • 「最も不確かなデータ」を選ぶ – 現在のモデルでの予測確率が「あいまい」 – その正解がわかれば、モデルの不確かさは減るだ ろう(期待感) • 「不確かさ」をどうやって測る? – 一番確率の高いラベルでも 0.5 しかない – 一番確率の高いラベルと二番目との確率が近い – エントロピー(不確かさの尺度)が大きい
  18. 18. Uncertainly Sampling • Least Confident – 「確率最大のラベル」の確率が最小のデータを選 ぶ argmin 𝑥 max 𝑦 𝑃 𝑦 𝑥 • Margin Sampling – (「1番目に確率の高いラベル」の確率-「2番目 に確率の高いラベル」の確率) が最小のデータを 選ぶ argmin 𝑥 𝑃 𝑦1 𝑥 − 𝑃 𝑦2 𝑥
  19. 19. Uncertainly Sampling • Entropy-based Approach – 予測分布のエントロピーが最大のデータを選 ぶ argmax 𝑥 − 𝑃 𝑦 𝑥 log 𝑃 𝑦 𝑥 𝑦
  20. 20. 選択されるデータの違い category 1 category 2 category 3 least conf. margin entropy A 0.50 0.35 0.15 0.50 0.15 0.43 B 0.55 0.45 0.00 0.55 0.10 0.30 C 0.51 0.25 0.24 0.51 0.26 0.45 via (Settles 2009) ※線形二値分類の場合、3手法の選ぶデータは同じ「分離平面に一番近い点」になる
  21. 21. 実験しよう!
  22. 22. 環境 • Python / numpy / scipy / scikit learn – (確率的)分類モデルを対象とする – sklearn.linear_model.LogisticRegression(L1) – sklearn.linear_model.LogisticRegression(L2) – sklearn.naive_bayes.MultinomialNB • コードはここに – https://github.com/shuyo/iir/tree/master/activelearn
  23. 23. データセット • 20NewsGroups – sklearn.datasets.fetch_20newsgroups_vectorized – 56436 次元、tf-idf、L2 ノルム正規化済み – training : 11314件、test: 7532件 • 原則 20クラス全て使うが、処理が重い手 法の場合は 3~4 クラスに制限する
  24. 24. 準備 • モデルのパラメータ – LogisticRegression : 正規化係数の逆数 C – MultinomialNB : スムージング係数 alpha • test data に対する精度が最高となるパラ メータを黄金分割探索で見つける – モデルの性能ではなく Active Learning の各手 法の有効性を見るのが目的なので
  25. 25. 全データで学習(最高性能?) モデル パラメータ test data に 対する精度 L1 LogisticRegression C=89443 0.8340 L2 LogisticRegression C=1193.9 0.8196 MultinomialNB alpha=0.0054781 0.8359 アンサンブル(3分類器の確率を平均) 0.8497 • 少ないデータでこの性能(82~85%)に近づきたい
  26. 26. 実験の設定 • クラスごとにランダムにデータを1つ選び初期訓練 データとする。正解付きデータの残りを pool とする • 各手法によって pool から query を選び、訓練データに 追加する – 正解は無視していただけなので、明示的な oracle はいない • これを訓練データが所定の個数になるまで繰り返す • 各回でテストデータに対する正解率を測定する • random sampling を baseline とする – (Schein+ 2007) では “straw men” と呼んでいるw • 分類器は MultinomialNB を用いる
  27. 27. 実行結果(2000件まで) 横軸:訓練データ件数 縦軸:精度(正解数/テストデータ件数) 2000件まで行くと 手法の差は ほぼなくなってくる
  28. 28. 500件までを拡大
  29. 29. 実行するたび結果が変わる • 初期値に強く依存 • モデルの学習にも乱数が用いられている
  30. 30. 箱ひげ図でばらつきを見てみる • ランダム初期データ→300件まで追加を50 回繰り返し、20件ごとの精度のばらつき を図示
  31. 31. • margin sampling だけ縦軸が違うことに注 意
  32. 32. 300件目の精度のばらつき
  33. 33. ぷちまとめ • margin sampling が安定かつ優秀 • entropy-based は期待はずれ – random sampling を下回ることも – 計算時間は一番多いのに…… • random sampling は総じて低調 – 瞬間風速なら他手法を圧倒することも いろいろ伏線が……
  34. 34. 2. Query-By-Committee • 「多数決で票が一番割れたデータ」を選ぶ – 「不確かなデータを選ぶ」のは Uncertainly sampling と同様 – アンサンブル前提。精度の嵩上げも期待 • (Settles 2009) では2手法を紹介 – Vote Entropy – Average Kullback-Leibler Divergence
  35. 35. Vote Entropy • 投票結果情報のエントロピーを計算して、そ れが一番大きいものを選ぶ – つまり「票が一番割れたデータ」 – 各分類器は確率モデルでなくても良い argmax 𝑥 − 𝑉 𝑦 𝐶 log 𝑉 𝑦 𝐶 𝑦 – ただし C: 分類器数、V(y): ラベル y を予測した分 類器数
  36. 36. Average Kullback-Leibler Divergence • 学習器たちの予測分布それぞれと、それ らを平均した分布との KL-divergence の平 均が一番大きいもの – わかりにくい…… – 「各分類器の出力する予測分布同士が一番似 ていないデータ」 • 数式 (Settles 2009) などを見てね
  37. 37. 実験の設定 • 基本は Uncertainly Sampling と同様 • 分類器は MultinomialNB, LogisticRegression (L1 / L2) のアンサンブルとする • random sampling と、平均分布に対する margin sampling を baseline とする
  38. 38. 実験結果の一例(300件まで)
  39. 39. 300件目の精度のばらつき • 約20回の試行を箱ひげ図にしたもの
  40. 40. ぷちまとめ • Uncertainly sampling よりばらつきが小さい – でも random すら大幅に性能向上。ほぼアンサンブル の恩恵か – 分布の平均に対する margin sampling が最高性能…… – もう少し複雑な問題の方が効果が見込めるかも • Vote Entropy は確率モデルでなくてもOK – 今回は試してないが SVM, Random Forest, ... • Average KL Divergence が random より悪い – バグ? 本質的な問題?(NB と LR の予測分布が似 てるわけない、みたいな)
  41. 41. 3. Density-Weighted Methods • Uncertainly Sampling も QBC も、各データ点ごとの評 価しか行わない – しかし学習して効果があるかは分布にもよるはず • 下図の例:各点を赤か青に分類する問題で、次の query は A と B のどちらにするべきか – B の方が近い点(おそらく同じカテゴリ)が多いので、これ を学習すれば正解率に貢献するだろうが、分離平面に近い A が選ばれやすい A B
  42. 42. Information Density (Settles+ 2008) • 𝜙 𝐴 𝑥 : 手法 A におけるデータ x の評価関数 – argmax 𝑥 𝜙 𝐴(𝑥) または argmin 𝑥 𝜙 𝐴(𝑥) となる x を選ぶ • 評価に類似度を加味した係数を掛ける argm𝑎𝑥 𝑥 𝜙 𝐴(𝑥) × 1 𝑈 sim 𝑥, 𝑥 𝑢 𝑈 𝑢=1 𝛽 – ただし U は pool サイズ、xu は pool 内の u 番目の点 • 「似ているデータ」が多いほど選ばれやすい
  43. 43. • 実験の設定は同様 • Uncertainly Sampling の3手法 に Information Density を組 み合わせる • 類似度は余弦類似度を用い る(正規化済みなので内積 を取るだけ) • β=1 とする
  44. 44. 300件時の精度のばらつき
  45. 45. ぷちまとめ • Information Density は低コストながら効果大 – 特に entropy-based と組み合わせたときの性能は目を 見張るものが – 類似度を導入可能なら選択肢の一つに • least confident + ID は、序盤は低性能だがある程度 データが増えると entropy-based 並に良くなる印象 • margin sampling + ID はなぜか良くない…… • βをどのように決めるかが課題か
  46. 46. 次の手法に行く前に……
  47. 47. Active Learning への不満 • 瞬間的に random sampling が他の手法を上 回ることも決して珍しくない – 「最適な query」を選べていない • もし「最適な query 」を選び続けることが できたら、どれくらいの性能が出るんだ ろう? – 正解と test data を知っていれば……!
  48. 48. Oracle Sampling • Err(X) :訓練データ X で学習したモデルにお ける、テストデータに対するエラー率 • L:既知の訓練データ、U:正解無しプール とするとき、次のように query を定める argmin 𝑥 𝑢∈𝑈 Err 𝐿 ∪ 𝑥 𝑢, 𝑦𝑢 • ただし yu は xu の正解ラベルとする – 知るはずのない正解とテストデータを知る 「神の Active Learning」 ※ 中谷が勝手に思いついて oracle sampling と呼んでいるだけ。 誰かがすでに別の名前付けてたらごめんなさい。
  49. 49. 要は反則
  50. 50. 性能は圧倒的(上限?) • pool のデータ件数だけモデルの学習が必要→めちゃめちゃ重い • クラス数=4に制限 – 正解付きデータ:2245件、テストデータ:1494件
  51. 51. (でも言うほど無敵でもないんだけどね) • クラス数=2 のときの正解率推移 • Active Learning は本質的に Greedy ゆえ「大域最適解」は得られない – かつ問題が易しいので、訓練データ数の寄与の方が大きいと推測
  52. 52. これを反則でなくすには……
  53. 53. 4. Expected Error Reduction • 未知である正解とテストデータをどうするか – test set と development set に分ける手もあるけど • そもそも訓練データ不足だから active learning がしたい • 貴重な正解をテストに回すのすらもったいない • 置き換え – テストデータの誤差 → 期待誤差(risk) – 正解ラベル → 推定値 or 期待値
  54. 54. • P(y|x;L) を、訓練データ L で学習したモデルにおいて、 点 x におけるラベル y の確率とすると、訓練データに (xi, yi) を追加した場合の log-loss は次の式で得られる − 𝑃 𝑦 𝑥, 𝐿 ∪ 𝑥𝑖, 𝑦𝑖 log 𝑃 𝑦 𝑥, 𝐿 ∪ 𝑥𝑖, 𝑦𝑖 𝑦𝑥∈𝑈 • これを R(xi, yi; L) と書く。yi が未知なので、現在のモ デルでの期待値を評価値とする 𝑬 𝑦 𝑖 𝑅 𝑥𝑖, 𝑦𝑖; 𝐿 = 𝑃 𝑦𝑖 𝑥𝑖; 𝐿 𝑅(𝑥𝑖, 𝑦𝑖; 𝐿) 𝑦 𝑖 • これを最小とするような x_i を query とする – 「学習後のエントロピーの総和を最小化」と同値
  55. 55. MM+M (Guo+ 2007) • Expected Error Reduction をアレンジ – 期待値をではなく log-loss(エントロピー)を最小と する yi を推定値とする – min 𝑦 𝑖 𝑅 𝑥𝑖, 𝑦𝑖; 𝐿 を最小化する xi を query とする (MCMI[min]) – oracle から得た正解 𝑦𝑖 が推定値 yi と異なる場合 • 予測分布のエントロピーが最大である xj を query とす る&訓練データに追加 (Most Unconcern) – Uncertainly Sampling の Entropy-based Approach と同じ
  56. 56. 実験(4クラス)
  57. 57. MM-MS (仮称) • Expected Error Reduction はめちゃめちゃ重い – (クラス数)×(pool size) 回 モデルを学習 – 4クラス、訓練データ 100件まで追加で一昼夜。 箱ひげ図は勘弁 • margin が小さい順に T(=30) 個抽出し、 MCMI[min] が最小のものを query とする – 本資料での実験設定で MM+M の約 60 倍速 – MM+M と margin sampling のいいとこ取り
  58. 58. 4クラス
  59. 59. 4クラス、100件目
  60. 60. まとめ • 今後いろいろ使ってみる – 手軽に試すなら margin sampling – ちょっと頑張るなら entropy-based + information density • ラベル付けが超高コストなら Expected Error Reduction もあり – でも重すぎ。せめて中規模データで動かしたい • 時間と理解が足りなくてやれなかったが、 Variance Reduction は理論的におもしろそう – 計算量がヤバい。O(プールサイズ×(クラス数×特徴量数)^3 ) – オンライン学習の RFTL のようなフレームワークが active learning にも出てくれば……! regret とか相性良さそう

×