Hatena::ブログ(Diary)

シコウサクゴ() このページをアンテナに追加 RSSフィード

2012-06-19

TrueLabel + Confusions: A Spectrum of Probabilistic Models in Analyzing Multiple Ratings[Liu+, ICML'12]のメモ

http://icml.cc/2012/papers/123.pdf

クラウドソーシング+機械学習論文1979年のDawid&Skeneの研究をspectrum of probabilistic modelsに一般化している(spectrumのイメージが出来てない...).一般化と言われてもいまいちピンと来ないけど,Dawid&Skeneと同じことを出来るよりシンプルなモデルと,ベイジアンにしたモデルの2つを提案しているのが実際のところ.鹿島先生のチュートリアル*1によれば,このDawidらの研究はこの話題における先駆的な研究なのだそう.

  • モチベーション
    • MSではサーチエンジンの訓練に人間の評価(rating)を使っている(そうなのか?)
      • クラウドソーシングに頼むのはリスキーなので,今はちゃんと専門の人を雇っている
      • タグ付けの量もすごいし,訓練された人を雇うんだから,コストも高い
    • 評価の質をコントロールするための一つの方法は,超簡単なタスクを混ぜておくこと
      • 全てのワーカーはこのタスクに取り組むようにしておく
      • そうすると,ワーカーをちゃんと評価できるし,ワーカーを惑わすタスクは何なのか,評価のガイドラインはこのままで大丈夫なのかとかそういうことに繋がる
    • Dawid&Skeneは良いモデルだけど,パラメータが多すぎる
      • 評価(ラベル)数K,ワーカー数Jに対して,K(K-1)*J個の自由パラメータが必要
        • 各ワーカーがK×KのConfusion行列を持ってるため
        • 過学習しちゃう
  • 提案法: 2つのモデル
    • 従来法: DawidSkene
      • 真の評価に対して,各ワーカーの評価は各ワーカーのConfusion行列から生成される
    • SingleConfusion: 全ワーカーで共通のConfusion行列を持つモデル
      • シンプルすぎてUnderfitting(日本語訳なんだっけ)しちゃう
      • でも,全てのワーカーにおいてどのタスクが難しいのか興味あるからこれでも良いらしい
    • HybridConfusion: Dawid&Skeneのベイズ拡張モデル
      • 各ワーカーが独自のConfusion行列を持つこともできるし,シュリンクして少ない行列で表せもする
  • 学習はEM
    • 観測はワーカーによるタスクへの評価(rating)
    • 未知は真のラベル
    • パラメータはConfusion行列,真のラベルの分布
  • 実験
    • 人工データを使った評価(ラベル数K=3)
      • 真のラベルをどれだけ推定できるか
        • HybridConfusionが最も良い性能.
        • DawidSkeneとSingleConfusionは,多数決による方法に負ける
      • パラメータ推定の結果
        • 基本的にHybridConfusionが優勢
    • Real-Worldデータを使った結果
      • (query, URL)というタスクに対して,ワーカーが「Bad,Fair,Good,Excellent,Perfect」のいずれかの評価をしたデータ.
        • 難しいタスクで構成されているらしい
        • 48タスクに対して148ワーカーから6008個の評価を得た
        • 2:1の割合で訓練セットとテストセットに分けた
      • テストデータのみに基づいて真の評価を予測
        • HybridConfusionが最もよい(精度: 約6割)けど,多数決による方法とほぼ同じ
      • 訓練セットでパラメータを学習した後,真の評価を予測
        • HybridConfusionが最も良い(精度: 約6割)
  • 思ったこと
    • 精度的にあまり良いとは思えないんだけど,「目的は真のラベルに対する優れた予測モデルを作ることじゃない」とか書いてあるので,多分この論文の本当の良さは捉えきれてない
    • モデルの表記で「Matlab表記で書くと」みたいなことが書いてあるけど,著者はMSの人なので,Excel表記で書けばいいのにって思いましたまる

2012-06-10

Noisy-ORモデルのお勉強

すごい人「これってNoisy-ORモデルと似てるよね」

僕「...ソウ..デスネ」

ということになったので,ちょっとお勉強しました.ネットでWikipediaあたりがサクっと引っかかってくれるものかと思ったのですが,どうも引っかからないので,枕にしていたベイジアンネットの本を広げました.

f:id:yosshi71jp:20120610185814p:image:w300:right

学生についての教員の推薦状の質L(良いを1,悪いを0)が,授業中の質問の質Q(良いを1,悪いを0)とその人の論文の質F(良いを1,悪いを0)に依存して決まるとする.ORモデルは,右の図のグラフのように書けて,二つの入力に対して論理和(OR)を取った値が出力となる.つまり,質問の質か論文の質のどちらかが良ければ,推薦状の質は必ず良いということを表す.


f:id:yosshi71jp:20120610185815p:image:w300:left

でも,もしかしたら,教員は学生がどんな質問をしたかなんて覚えてないかもしれないし,論文なんて読んでる時間はないかもしれない.いや,そもそも教員は推薦状を書く才能がないかもしれない.こういう風に現実はかなりNoisyである.

左の図は,上のORモデルをNoisy-ORモデルとして書きなおしたものである.丸が2つ増えて階層的になっているのはNoisyであることを表現している(例えば,学生が良い質問をしていたけど,教員が覚えてなかった確率はP(Q'=0|Q=1)と書ける).

では,Noisy-ORモデルで推薦状の質が良い(もしくは悪い)確率はどのように計算するのか.今, ¥lambda_F = P(F’=1|F=1) ¥lambda_Q = P(Q’=1|Q=1)としよう.ついでに,教員の推薦状を書く才能を ¥lambda_0で表そう(小さいほど良い).そうすると,推薦状の質が悪い確率は, P(L=0|F,Q) = (1-¥lambda_0)(1-¥lambda_F)(1-¥lambda_Q)となる.直感的には,ORモデルは全ての入力が0のとき出力が0になるので,Noisy-ORモデルでは全ての入力が失敗の確率の積として表せる.

また,推薦状の質が良い確率は,全ての入力が0であるわけがないという確率なので, P(L=1|F,Q) = 1 - (1-¥lambda_0)(1-¥lambda_F)(1-¥lambda_Q)となる.

以上がNoisy-ORモデルの説明.ここでは入力が2つの場合を考えましたが,K個の場合に拡張するのも容易です.

とまあ,こんな感じ.

2010-12-26

「ベイズな予測」

最近,友だちに借りて読みました.

ベイズな予測―ヒット率高める主観的確率論の話

ベイズな予測―ヒット率高める主観的確率論の話

とにかくベイジアンモデルの実用例がいっぱい出てる感じでした.基本的には,ナイーブベイズによる方法をベースに書いてありますけど,僕の知らない他分野での応用とか出てるので,「あーこういう風にも使えるんだぁ」という面白さはあります.

ただ,この本見ても実装はできないですね.実装するなら,僕的には「集合知プログラミング」でコードを書きながら勉強する方が,実際に動くものが出来るので,「やった感」は有るかも知れません.ただ,コード写してても頭入らなかったんですけど・・・.