回帰のための能動学習と自然言語処理

東工大杉山さんが「回帰のための能動学習」というテーマで講演してくれた。先月東工大自然言語処理合同研究会でも杉山さんのトークを聞いたが、そちらは確率密度比に関する内容で、それとは被っていなかったので参考になる。

能動学習(active learning)というと、人手によるタグづけの手間を減らすために用いられる手法で、前提としてタグづけやサンプルの採取にとてもコスト(時間なりお金なり熟練なり)がかかるとき、いかにして少ないサンプルで機械学習するか、というようなことができる手法。自然言語処理では、たとえば最初いくらかの分量のデータをタグづけし、それから教師あり学習をして自動タグづけモデルを作成し、残りのタグなしデータに適用する。出てきた出力のうち、確信度の高いものはたぶん正解だろうからおいといて、確信度の低いものは現在のモデルで間違えている可能性が高いサンプルなので、これを人に見せてタグづけさせることで、情報量の高いサンプルを選択して効率的に学習を行う、というもの。新たに人手でタグをつけたデータを用いて再学習することでこのタグづけプロセスを反復的に行うことができ、必要とする精度もしくはサンプルを追加してもあまり精度の向上が見られなくなったら終了する、みたいな感じ。

杉山さんの講演では、回帰問題(これだけの単語を知っていれば TOEIC 何点くらい、みたいな出力が連続した実数値の問題)に対してこのような能動学習を行う手法と、その理論的な正当性について明快に説明してもらった。ただ、自然言語処理は回帰問題よりは分類問題(この単語の品詞はなんですか、みたいに複数のラベルの中から一つ選ぶような問題)であることが普通だというのと、回帰問題でも30次元ほどになると全然学習が安定しなくなるそうなのだが、自然言語処理は「高次元スパース」と言われていて、特徴量が100万次元になったりすることも日常茶飯事なので、設定がだいぶ違いそうである。杉山さんによると、どうも回帰問題は分類問題より簡単な種類の問題なので、このように理論的に能動学習でよくなることが言える、ということのようだ。

inui 先生も少しコメントしていたが、自然言語処理的な立場からすると、そこまで理論的にはっきりと性能の上限がどうかなんてことが言えなくても、経験上うまく行くならいいという人もいるのではないかと思ったが、確かになんでうまく行くのか保証がないのに使い続けるのはちょっと気持ち悪い……。

とはいえ回帰問題として扱ってうまく行きそうなタスクが自然言語処理にもなにかあるかもしれないし、こういう道具立ても揃えておく(頭の中に入れておく)と役に立つこともあるんだろうなと思う。