読者です 読者をやめる 読者になる 読者になる

「確率密度比」を用いた機械学習の新たなアプローチ

機械学習

東工大の杉山先生の講演がすごく面白かったのでメモ。

やりたいこと、特徴

p(x)とp'(x)という分布を推定しようという問題があったとする。このとき、二つの分布のパラメータを推定しないといけないので普通は大変。そこで、w(x) = p'(x) / p(x)を推定するという風に少し変形してやる。p(x)とp'(x)が分かればw(x)は求めることができるが、w(x)があってもp(x)とp'(x)は分からない。ということでw(x)のほうが簡単な問題になっている。

こういう風に「何か問題を解くときに、その過程で元の問題より難しい問題を解かないようにしないと!」というような考え方をVapnikの原理といったりするそうです。

この確率密度比の枠組みを利用すると非定常環境適応、ドメイン適応、マルチタスク学習、外れ値検出、時系列の変化点検知、特徴選択、次元削減、独立成分分析、条件付き確率推定などなどの問題を扱うことができ、かなり汎用的な機械学習の手法と言える。

密度比が使える例

共変量シフト

入力データの分布が訓練時とテスト時で異なるときがある。このようなデータに対して最小二乗法を適用すると推定値には一致性がない。しかし、重みつき最小二乗法の重みに密度比(p(test) / p(train))を使うと一致性が保証される!

脳波で色々なものを操作したりするときなどは、学習時とテスト時に分布が違う(テストのときは「お腹減った」とか考えているetc)とかがよくあるので、このようなモデルが有用だったりする。

ドメイン適用

NLPでよくありそうな問題。一般会話のテキストが山ほどあって、そこから何かしら学習する。その学習結果を使って、別の例えば専門的な文章の学習に活用する。一般的な文章と専門的な文章の密度は違うと考えられるので、そこで確率密度比をうまく適用してやる。

異常値検出

確率密度の低い標本を異常値と定義する。しかし、確率密度の低いところというのは推定するのが難しい問題である。そこで、異常値のようなものが含まれていないデータと含まれているデータに分けて、二つのモデルの確率密度比を取ってやる。そうすると今度は異常値のところがぐーんと下るような感じになるので、相当問題がやさしくなる。

似たような感じで時系列で傾向が変化する点を検知することができたりする(過去と今の密度比を考える)。

その他

独立性の判定に使う相互情報量(KLダイバージェンス)にも密度比が登場するし、特徴選択、独立主成分分析、条件付き確率密度の推定にも密度比が登場する。ものすごく適用範囲が広く汎用的な考え方。

推定方法

そんなよい性質を持っている密度比ですが、それ自体をどうやって推定しましょうか。

よく使われる推定の方法として

  • Kullback-LeiblerImportance Estimation Procedure (KLIEP)
  • Least-Squares Importance Fitting (LSIF)
  • Unconstrained LSIF (uLSIF)

などがあるそうで、講演では最初のKLIEPについて簡単に説明がありました。

密度比をカーネル関数の重み付き線形和でモデル化することを考えます(これはセミパラメトリックなアプローチらしい)。\hat{p'} = \hat{w'}(x) p(x)とできるので、\mbox{KL} [p'(x)||\hat{p'}(x)]を最小にするようなパラメータを学習します。こいつを最小にするというのは、\log \hat{w'}(x)の(p'(x)での)期待値を最大化するのと等価です。で、積分が邪魔なので、期待値を標本平均で近似します。そうするとこれば凸最適化問題になるとのことで、iterationのたびにどんどん大きくしていくことができて、「大域的」最適解を求めることができる問題です(ついでに\hat{p'}(x)が確率密度である制約もクリアーする)。しかも、この最適解はスパースである、というのも理論的に証明できるとかなんとかということらしい。なにそれすごい。

元のモデルがパラメトリックかノンパラかで真のモデルへの収束性&そのスピードはどうなのか、ということも理論的に知られているらしく、前者は学習したパラメータは最適な値に、後者は真の関数に収束するらしいです(スピードについては資料のほう見て)。

モデル選択

上のKLIEPで、例えばガウスカーネルを使ったとしてその幅はどうやって決めましょう(この問題ではこれがモデル選択になる)。これについてはクロスバリデーションを使うことができる。K-1個のグループで密度比を計算、残りのグループで尤度を計算。全ての組み合わせに対して繰り返して平均を出力させる。こうやって計算されたものはKLの不偏推定量になっている、という性質を持っているそうです(グラフが出てたけど、ずばっと一致していた!)。

次元の呪いからの解放…?

カーネル密度推定とKLIEPについて次元を上げていくとどうなるか見ていくという実験がされていた。カーネル密度推定は卒研でやったんだけど、すぐに次元の呪いにかかってしまうという欠点があった。しかし、(ここで設定されていた問題に関しては)KLIEPのほうは高次元でも比較的うまくいっている。

うーん、恐しい。。。

参考