2013年9月30日月曜日

能動学習のさわりの勉強

能動学習とは、少量の教師データから得られた分類器を使って
ラベルがつけられていないデータの中から分類器学習に効果的な
データを機械的に選ぶことによって、分類器性能の向上を試みる
というものです。

今日は休日で、まとまった時間がとれたので、
以下のPreferred Infrastructure社様が公開されている
ustreamのビデオを見て勉強させていただきました。

http://www.ustream.tv/recorded/19579251



■目的

教師データの作成にかかってしまうコストを下げることにあります。
マジメに教師データを作成するとなると、どうしても時間がかかってしまいます。
時間がかかるということは、それだけお金がかかってしまうということ。
そのため、人手でかかるコストを最小化し、教師データは機械的に集める。
これが能動学習の狙いです。


■アプローチ

3種類のものが紹介されていました。

(1)プールベース型

少量の教師データから得られた分類器を『仮分類器』と呼ぶことにします。
この仮分類器が持っている境界線(例えば、SVMなら超平面)に限りなく近いデータを
教師データとして選んで、分類器を作成します。

境界線に近いデータを選ぶ理由は、判断が明確なデータよりも、
判断に迷うデータに対してラベルをつけた方が汎化能力が高まるという考え方です。

例えば、SVMで言えば、超平面が存在でき得る領域を
効果的に狭めることのできるデータを探しだしていくイメージでしょうか。

ちなみに、東工大の杉山先生の資料を見ると、
超平面の存在でき得る領域のことを『バージョン空間』と
呼ぶそうですね。勉強になります。

http://sugiyama-www.cs.titech.ac.jp/~sugi/2009/NEC-MachineLearning1-jp.pdf


(2)ストリームベース型

仮分類器でラベルなしデータを分類させるところまではやっておいて、
その結果が教師データとして使うのにふさわしいのかどうかを判定する方法
なのだと解釈しました。
そして、判定結果にかかわらず、そのデータが用済みになったら
保存せずに捨てても動作が破綻しないようにした手法のようです。

ここは理解が進まなかったので、推測です。


(3)クエリー型

とにかく自分で事例とラベルを与える方法です。
例えば、手書き文字認識システムにおいて、「3」という数字が
認識できなかったとしたら、それをユーザー自らが
「3」という文字を書いて教える、という感じでしょうか。


■感想

(1)プールベース型は、正例と負例が誰が見ても納得できるようなものになっているのが
前提な気がします。
あと、境界付近のデータは人間が判断しづらいものも少なくないと考えられます。
こういうデータに対して強引にラベルをつけると性能劣化につながりかねないと思います。
この件については、ビデオの質疑応答にもあったのですが、発表者が回答したように
もうどうすることもできない、というのが実態なんでしょうね。
そのため、定義が客観的に明確であるトピックを相手に使うのが良いのだと考えました。

(2)ストリームベース型は、まさしく今ホットなオンライン学習のための手法ですね。
解釈が間違っていなければの前提ですが、人によって曖昧な判断しかできないデータは、
考えても仕方がないので、さっさと捨てて次に進むのも1つの道だと感じました。
ここは、あとで勉強した方が良さそうです。

(3)クエリー型は、大昔のViaVoiceにあった「エンロール」ってヤツじゃない?
ユーザーの声の特徴を把握するために、少量の音声データを与えて
不特定話者用の音響モデルをユーザーの声に認識しやすいものに更新する
って機能ですし。。。
歴史は案外長そうです。


これらは実際に使ってみなければ何とも言えないのですが
早めに取り組んでみたいですね。



0 件のコメント:

コメントを投稿