Snorkel Drybell:既存知識を活用して機械学習用ラベル付きデータを自動作成(3/3)

  • 2019.03.22
  • AI
Snorkel Drybell:既存知識を活用して機械学習用ラベル付きデータを自動作成(3/3)

1.Snorkel Drybell:既存知識を活用して機械学習用ラベル付きデータを自動作成(3/3)まとめ

・実製品として利用しにくい機能や知識もSnorkel DryBellでラベル付きデータを出力可能
・転移したラベル付きデータを利用すれば新しいタイプの転移学習を実現する事ができる
・この転移学習によりベンチマークデータセットで52%のパフォーマン向上を達成

2.Snorkel Drybellによる転移学習

以下、ai.googleblog.comより「Harnessing Organizational Knowledge for Machine Learning」の意訳です。元記事の投稿は2019年3月14日、Alex RatnerさんとCassandra Xiaさんによる投稿です。地味ですが非常に応用範囲が広く実用性が高い技術ですね。

MapReduceテンプレートベースのパイプラインで、これらの既存の体系的知識をラベリング関数で定義しました。各ラベリング関数はデータポイントを取り込み、無視するかラベルを出力します。その結果、プログラムで生成された多数のトレーニングラベルが得られます。

しかしながら、これらのラベルの多くは非常にノイズが多く(例えばヒューリスティックによるもの)、互いに矛盾していたり、または学習データとして使うにはあまりにも粗い粒度(例えばトピックモデル)でした。私達はSnorkel DryBellの次のステージにレベルアップし、ラベルを自動的にクリーニングして最終的なトレーニングセットに統合することを目指しました。

既存の情報源を組み合わせて再利用するための精度モデリング
これらのノイズの多いラベルを処理するために、次のステージのSnorkel DryBellはラベル付け関数の出力を各データポイント毎に単一の信頼度重み付き学習ラベル(confidence-weighted training label)に結合します。技術的に難しい側面は、真の正解ラベル(ground-truth labels)なしでこれを行わなければならないということです。

そのために、ラベル付けされていないデータのみを使用して各ラベル付け関数の精度を学習する生成的モデリング手法を使用します。このテクニックは、各ラベル付け関数の出力間の一致および不一致の結果を観察し、それらの間の既知の(または統計的に推定された)相関構造を考慮して学習します。

Snorkel DryBellでは、Webスケールの(巨大な)データを処理するために、TensorFlowに実装されている、このモデリングアプローチの高速でサンプリングフリーの新しいバージョンも実装しています。Snorkel DryBellでこの手順を使用してラベリング関数の出力を組み合わせてモデル化することにより、高品質のトレーニングラベルを生成することができました。

実際、Snorkel DryBellを「利用可能な手書きラベル付きトレーニングデータが存在する2つのアプリケーション」を用いて比較しました。同じモデルを12,000と80,000の手書きラベル付きデータでトレーニングした結果とSnorkel DryBellが出力したラベル付きデータでトレーニングした結果はほぼ同じ予測精度になりました。

利用不可能な機能を利用可能な機能に転移させる
多くの状況で、「実際に使用される製品で利用可能な機能」と、「製品で利用するには遅すぎるまたは高価すぎて利用不可能な機能」との間には重要な違いがあります。

これらの利用不可能な機能は非常に豊かな入出力情報を持っているかもしれませんが、一般的な問題はそれらをどのように使用して本番環境に展開する機械学習モデルの訓練、あるいは補助に利用できるかです。


多くの状況で、ユーザーは「製品で利用不可能な体系的知見(a)(例えば、本番環境で使用するには遅すぎるまたは高すぎる集計した統計情報、内部モデル、または知識グラフ)」を活用するラベル付け関数を書きます。それが出力したラベル付けデータを使って「製品で利用可能な情報(b)(例えば、Webページのクリックなど安価でリアルタイムな情報)」のみでトレーニングしたモデルをトレーニングする事ができます。

Snorkel DryBellでは、ユーザーはラベリング関数を記述して体系的知見を表現する事ができます。これを応用すれば、製品に直接利用できない機能や特徴量をSnorkel DryBellでラベル付きデータにし、製品で直接利用可能な機能のみで定義されたモデルをトレーニングできます。この機能間の転送により、私達が作成したベンチマークデータセットのパフォーマンスは平均52%向上しました。

もっと広く言えば、これは遅すぎるリソース(例えば、計算や集計に時間がかかるモデルや統計情報)、プライベートな情報(例えば、エンティティまたは知識グラフ)、その他の製品へ迅速に安価に展開する事が難しい機能を使用するための、シンプルであるにも関わらず強力な手法です。

このアプローチは、異なるデータセット間でモデルを転送するのではない、新しいタイプの転移学習と見なすことができます。Snorkel DryBellは分野固有の知識を転送しています。これは、産業界だけでなく医療現場やそれ以上の様々な分野でも潜在的な使用例があります。

次のステップ
体系化された知識を弱い教師として使用する事、Snorkel DryBellのアプローチで分野間で新たに情報を再利用および共有できる事を知り興奮しています。今後、その他の体系化された知識にも適用可能範囲を広めていきます。詳細については、私たちの論文をチェックしてください。さらに技術的な詳細、ブログの投稿、そしてチュートリアルについては、snorkel.stanford.eduでオープンソースのSnorkelの実装をチェックしてください。

謝辞
この研究は、Googleとスタンフォード大学、ブラウン大学との共同研究です。
私達は、Stephen Bach(ブラウン)、Daniel Rodriguez、Yintao Liu、Chong Luo、Haidong Shao、Souvik Sen、Braden Hancock(スタンフォード)、Houman Alborzi、Rahul Kuchhal、ChristopherRé(Stanford)、Rob Malkinなど、関係者全員に感謝します。

3.Snorkel Drybell:既存知識を活用して機械学習用ラベル付きデータを自動作成(3/3)関連リンク

1)ai.googleblog.com
Harnessing Organizational Knowledge for Machine Learning

2)hazyresearch.github.io
Snorkel: A System for Fast Training Data Creation