Upgrade to Pro — share decks privately, control downloads, hide ads and more …

能動学習ライブラリ・ツールの紹介

pensukesan
October 03, 2024
250

 能動学習ライブラリ・ツールの紹介

社内のAI技術共有会で使用した資料です。
能動学習のアルゴリズムを利用できるライブラリやツールについて紹介しています。

pensukesan

October 03, 2024
Tweet

Transcript

  1. AI 2 自己紹介 廣中 栄介 GO株式会社 AI技術開発部 データサイエンスグループ • 経歴

    ◦ 機械工学専攻修士卒 (~2018.3) ◦ 大手車載機器メーカー入社(~2019.10) ▪ ドライバー状態推定の研究開発 ◦ IT・Webベンチャー(~2022.11) ▪ Web/Appの分析、画像認識モデル開発 ◦ AIベンチャー(~2024.1) ▪ 建設業界向けAIシステム開発・ゲームAI開発 ◦ GO株式会社 (2024.2~) ▪ 『DRIVE CHART』の分析・AI機能開発 • SNS ◦ X:https://twitter.com/pensuke_san ◦ kaggle:https://www.kaggle.com/pensukesan
  2. AI 5 ▪ 能動学習(=Active Learning)とは ▪ 能動学習:=「人間がアノテーションを行うためにどのデータをサ ンプリングするかを決定するプロセス」[1] ▪ 前提となる仮説:教師あり学習において適切に学習するデータを

    サンプリングできれば、より少ないデータでより良いパフォーマ ンスを発揮できる[2] ▪ ラベルの無いデータは容易に手に入るが、アノテーションに高い コストが掛かるようなケースで効果を発揮する 能動学習(Active Learningとは) [1]Monarch, R. (2023). Human-in-the-loop機械学習: 人間参加型AIのための能動学習とアノテーション. 共立出版. [2]Settles, B. (2009) Active Learning Literature Survey. Computer Sciences Technical Report 1648, University of Wisconsin-Madison.
  3. AI 6 ▪ ラベル無しデータから効率よくサンプリングして、 アノテーションして学習を繰り返していく 能動学習のイメージ 図:Settles, B. (2009) Active

    Learning Literature Survey. Computer Sciences Technical Report 1648, University of Wisconsin-Madison. 特に能動学習はサンプ リング戦略に注目する
  4. AI 7 能動学習の効果 左図:Settles, B. (2009) Active Learning Literature Survey.

    Computer Sciences Technical Report 1648, University of Wisconsin-Madison. 右図:Gal, Y., Islam, R., & Ghahramani, Z. (2017, March 8). Deep Bayesian active learning with Image Data. arXiv.org. https://arxiv.org/abs/1703.02910 ▪ 多くの研究ではランダムサンプリングより効率良く 性能が上がると報告されている
  5. AI 8 ▪ どうやってやればいいかわからない ▪ 教師あり学習そのものの分野と比べると能動学習は あまり体系的にまとまっていない印象 ▪ どの手法を使えばいいのかわからない ▪

    様々なサンプリング手法が提案されており、タスクや状況によっ て有効な手法が異なる ▪ 能動学習手法を比較する時間があったら、これまで通りランダム にサンプリングしたほうがよいことも 能動学習を実践したいが…
  6. AI 11 能動学習ライブラリ・ツールまとめ ライブラリ・ツール 特徴 タイプ Github 最終更新 modAL 典型的な能動学習アルゴリズムが実装されており

    scikit-learnベースで使いやすい。ドキュメントが豊富 能動学習 URL 2023 ALiPy 比較的新しい能動学習アルゴリズムが多く実装されてい る。応用というよりは手法の検証向き 能動学習 URL 2021 pytorch_active_learning Human-in-the-loop機械学習の著者が作成。本で紹介さ れている内容に沿ったアルゴリズムが書かれている 能動学習 URL 2021 ALToolbox 自然言語処理の能動学習付きアノテーションフレーム ワーク。他にもFAMIE,SMALL-TEXTなど自然言語処理 系の能動学習ライブラリがある アノテーション+ 能動学習 URL 2023 Label-Studio 様々なデータ形式(画像、音声、テキストなど)に対応した アノテーションツール、backendに機械学習モデルを設定 して能動学習できる。自動推論機能は有償 アノテーション+ 能動学習 URL 2024
  7. AI 12 能動学習ライブラリ・ツールまとめ ライブラリ・ツール 特徴 タイプ Github 最終更新 modAL 典型的な能動学習アルゴリズムが実装されており

    scikit-learnベースで使いやすい。ドキュメントが豊富 能動学習 URL 2023 ALiPy 比較的新しい能動学習アルゴリズムが多く実装されてい る。応用というよりは手法の検証向き 能動学習 URL 2021 pytorch_active_learning Human-in-the-loop機械学習の著者が作成。本で紹介さ れている内容に沿ったアルゴリズムが書かれている 能動学習 URL 2021 ALToolbox 自然言語処理の能動学習付きアノテーションフレーム ワーク。他にもFAMIE,SMALL-TEXTなど自然言語処理 系の能動学習ライブラリがある。 アノテーション+ 能動学習 URL 2023 Label-Studio 様々なデータ形式(画像、音声、テキストなど)に対応した アノテーションツール、backendに機械学習モデルを設定 して能動学習できる。自動推論機能は有償 アノテーション+ 能動学習 URL 2024 比較的使いやすいと思う3つを紹介
  8. AI 13 ▪ 基本的な使い方 modAL:使い方 https://github.com/modAL-python/modAL 手順 1. 学習器・サンプリング戦略・初 期学習データをセット

    2. ラベルのないプールデータをサ ンプリング&アノテーション 3. teachでサンプリングした データを学習
  9. AI 14 ▪ query_strategy: ▪ 入力:分類器・プール ▪ 出力:インデックスとデータ ▪ batch

    sampling ▪ 学習に時間がかかる場合 まとめてサンプリングしたい ▪ n_instancesで調整 ▪ uncertainty_batch_sampling も実装されている[3] modAL:サンプリング戦略のカスタマイズ [3] https://modal-python.readthedocs.io/en/latest/content/query_strategies/ranked_batch_mode.html
  10. AI 17 ▪ 不確実性サンプリング(Uncertainry sampling)※分類のみ ▪ 最小確信度サンプリング(uncertainty.uncertainty_sampling) ▪ 最大化する指標 :=

    1 - (予測の最大確信度) ▪ least confidence sampling ▪ 確信度マージンサンプリング(uncertainty.margin_sampling) ▪ 最大化する指標 := (予測の最大確信度) - (予測の2番目に大きい確信度) ▪ エントロピー基準サンプリング(uncertainty.entropy_sampling) ▪ 最大化する指標 := 予測確率のエントロピー(平均情報量) modAL:実装済み能動学習アルゴリズム①
  11. AI 18 ▪ Query by Committee ▪ 複数モデルのアンサンブルを使ってデータ選択 ▪ Vote

    entropy ▪ 予測クラスの投票分布のエントロピー計算 ▪ Consensus entropy ▪ 予測確率を平均してからエントロピー計算 ▪ Max disagreement ▪ 予測確率の平均と各投票確率のKLDを計算 ▪ Max Std Sampling ▪ 回帰タスクで予測の標準偏差を計算 modAL:実装済み能動学習アルゴリズム②
  12. AI 19 ▪ 能動学習のフレームワークでベイズ最適化もできる ▪ 予測性能を最大化するサンプル(=パラメータ)を選択する問題 と捉えて最適化できるクラスが用意されている ▪ ただわざわざmodALを使う理由はないかも ▪

    深層学習フレームワーク(Keras・Pytorch)での利用 ▪ scikit-learnのインターフェースのため直接使えない ▪ scikit-learnに変換するラッパーを使う ▪ from scikeras.wrappers import KerasClassifier ▪ from skorch import NeuralNetClassifier ▪ 深層学習の場合気軽に追加学習はしないと思うので、サンプリン グだけに使うとかになるとは思われる modAL:補足
  13. AI 20 ▪ 基本的な使い方[5] ALipy:使い方 手順 1. ToolBoxの定義 a. 対象データセット

    b. データ分割 c. 停止基準 2. プールデータからサンプリン グ&学習、サンプルと精度を saverに記録 3. analyserで結果を表示 [5] https://parnec.nuaa.edu.cn/huangsj/alipy/
  14. AI 21 ALipy:能動学習部分 • modALと異なりmodelを wrapする必要はない • サンプリング戦略の使い方 a. デフォルトモデル

    (model指定無し) b. 自前学習のモデル (scikit-learn形式) c. モデルの予測値 scikit-learn以外もOK ※ただし全て使えるわけ ではない
  15. AI 22 ▪ シミュレーションデータの分類実験[5] ▪ scikit_learn.make_classificationで作成した10次元の2値分類問題 ▪ 能動学習アルゴリズム種類 ▪ QBC:

    Query-By-Committee ▪ Unc: Uncertain Sampling ▪ EER: ExpectedErrorReduction ▪ Random ▪ QUIRE[6] ▪ Density[7] ▪ LAL[8] ALipy:能動学習アルゴリズムの比較実験例① [6] Huang, S.-J., Jin, R., & Zhou, Z.-H. (2014). Active learning by querying informative and representative examples. IEEE Transactions on Pattern Analysis and Machine Intelligence, 36(10), 1936–1949. https://doi.org/10.1109/tpami.2014.2307881 [7] Ebert, S., Fritz, M., & Schiele, B. (2012). Ralf: A reinforced active learning formulation for object class recognition. 2012 IEEE Conference on Computer Vision and Pattern Recognition. https://doi.org/10.1109/cvpr.2012.6248108 [8] Konyushkova, Ksenia, Sznitman, Raphael, & Fua, Pascal. (2017). Learning active learning from data.
  16. AI 23 ▪ シミュレーションデータの分類実験[5] ▪ analyzerを使えば簡単に比較してくれる ▪ performance=accuracy_score (モデルはロジスティック回帰) ▪

    Number of queries=サンプリング数 ▪ ※randomサンプリングより常に良いわけではない ALipy:能動学習アルゴリズムの比較実験例②
  17. AI 26 ▪ オープンソースのアノテーションプラットフォーム ▪ 様々なデータ形式(画像・テキスト・音声など)の アノテーションツールを構築できる ▪ Label Studio

    ML backend ▪ 事前・自動ラベル付け(人間が後でレビューするだけ) ▪ インタラクティブなラベル付け(SAMなど) ▪ 能動学習によるサンプリング Label Studio https://labelstud.io/
  18. AI 27 ▪ セットアップ a. モデルの予測をアノテーションに 使うには以下の2つが必要 ▪ Label Studio

    ▪ Label Studio Backend ML b. アノテーションツールの準備 ▪ データのアップロード ▪ UIの設定 Label Studio:セットアップ [9] https://www.kaggle.com/datasets/amananandrai/ag-news-classification-dataset AG News Dataset[9] 引用元:https://labelstud.io/guide/ml 引用元:https://labelstud.io/
  19. AI 30 ▪ 能動学習アルゴリズムのライブラリ ▪ やや古くここ数年の最新の能動学習のアルゴリズムは載ってない ▪ 能動学習手法の検証向きでそのまま実務応用はしづらい ▪ アノテーションツールとセットになって解決?

    ▪ モデル予測によるアノテーション支援のほうが改善幅が大きそう ▪ そもそも能動学習自体が有効なのか問題 ▪ モデル自体がベストな状態で能動学習手法が比較されていない、 サンプリングにより分布が変わってしまうなどの問題[10] ▪ 実務でも能動学習を実践して知見を貯めていくのが良さそう 能動学習ライブラリ・ツールの課題 [10] Mittal, S., Tatarchenko, M., Çiçek, Ö., & Brox, T. (2019, December 11). Parting with illusions about Deep Active Learning. arXiv.org. https://arxiv.org/abs/1912.05361
  20. AI 31 ▪ modAL ▪ 一番ドキュメントがしっかりしていて、典型的なアルゴリズムが 実装されている。まず能動学習の理解を深めるのに良い ▪ scikit-learnで作られており、トイデータで試すのも簡単 ▪

    ALipy ▪ 論文ベースで能動学習手法が多く実装されており、手法の比較が し易い。研究用途や良さそうな手法を探すのに良い ▪ Label-Studio ▪ オープンソースのアノテーションツール 能動学習を含むモデルによるアノテーション支援機能が充実 紹介した能動学習ツールのまとめ