Confidence Weightedで ランク学習を実装してみた

9,656 views

Published on

Published in: Technology
0 Comments
13 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
9,656
On SlideShare
0
From Embeds
0
Number of Embeds
2,175
Actions
Shares
0
Downloads
144
Comments
0
Likes
13
Embeds 0
No embeds

No notes for slide

Confidence Weightedで ランク学習を実装してみた

  1. 1. Confidence Weightedでランク学習を実装してみた徳永拓之 <tkng@preferred.jp> 2011/01/22 第4回 自然言語処理勉強会@東京
  2. 2. 自己紹介:徳永 拓之● twitter id:tkng● (株) Preferred Infrastructure 勤務 ● 守備範囲:レコメンド・NLPなど● カレーを食べるのが趣味 ● 上野デリーのコルマカレーが好きです● 早売りの週刊少年ジャンプを読むのも好き
  3. 3. 宣伝:NLP2011で発表します C4-6 日本語かな漢字変換における識別モデル の適用とその考察 ○徳永拓之, 岡野原大輔 (PFI) 3月10日(木) 13:00-15:30 (A1-201教室)● 今日の発表でここが一番NLPっぽい
  4. 4. 発表の概要● ランク学習とは● Confidence Weightedとは● Confidence Weightedによるランク学習中身の薄い発表なのでゆったりとリラックスした気持ちで聞くのがオススメ!
  5. 5. ランク学習とは?
  6. 6. ランク学習(Learning to Rank)データの集合に対して順位付けを行う問題● データの与え方によってBipartite, Pairwise, Listwiseなどに分類できる検索結果の並べかえやインターネット広告の最適化など、近年応用できる範囲が広がり、研究として重要になっている
  7. 7. Learning to Rankの研究グループ● Yahoo Research, MS Researchが強い ● 要するにデータ持ってるところが強い ● Googleは調べた頃は論文あまり出してなかった● 今回のスライドもMS ResearchのHang Liや Tie-Yan Liuのスライドを参考に作りました ● 日本語ではチュートリアルっぽい資料があまりない
  8. 8. 自然言語処理 ランク学習● 高次元 ● (比較的)低次元● スパース ● デンス
  9. 9. 今日簡単に紹介するいろいろ● RankingSVM ● このあたりがLearning to Rankの始まり?● RankBoost ● Bipartite Learningの高速な学習● ListNet ● Listwise Learningを提案● Sofia-ML ● サンプリングしても精度はほとんど落ちない
  10. 10. どんな素性を使うか?● BM25 ● クエリに対する文書の適合度を計算する指標● PageRank ● 文書の重要度を表すアレ● 文書長、タイトル文字列の長さなど
  11. 11. ランク学習の評価指標● NDCGとかMAPが使われる ● NDCG (=Normalized Discounted Cumulative Gain) – 0〜1の値を取り、大きいほど良い
  12. 12. Bipartite Learning● データはGood, Badの2つの集合で与えられる ● 学習データを作るのが比較的簡単 ● 学習が高速なことが多い good bad
  13. 13. Pairwise Learning● データはペアの形で与えられる ● クエリQに対し、文書Aと文書Bはどっちが適切? ● データを作るのはそこそこ簡単 ● 気をつけないとおかしなデータができる A > B, B > C, C > A みたいな三すくみ状態
  14. 14. Listwise Learning● データはリストの形で与えられる ● 学習データを作る時点でまずちょっと難しい…
  15. 15. 学習の簡単さで比較する● Bipartite, Pairwise, Listwiseの順に簡単● 例えば、Listwiseを単純にPairwiseに直すと、 n^2個のペアができちゃう● n=50なら50x50=2500個のペアを見る事にな る
  16. 16. RankingSVM (Herbrich, 1998)● Pairwise● ランク学習の分野で最も基本的な学習器の一つ● オリジナルのアルゴリズムは学習時間が超長い ● Bipartiteなデータの与え方をした場合、すべての サンプルの組みわせを使う
  17. 17. RankBoost (Freund, 2003)● Boostingのランク学習への拡張● 基本的にPairwiseだが、Bipartiteだと高速に 学習できる● 圧倒的に高速に学習できるようになったという 点でエポックメーキング
  18. 18. ListNet (Cao, 2007)● 並べ替えるんだから、並べ替えた結果のリスト から学習すればいい● ニューラルネットで学習する● Listwiseアプローチはこの後もたくさん出てる
  19. 19. Large Scale Learning to Rank ●● 2009年のNIPSのワークショップでD. Sculley. が発表 全部のペアを見なくても、ランダムにサンプリ ングして数%ぐらいの数を見ればいいよ
  20. 20. Pairwiseについてさらに詳しくA > Bの時、(Ψ(A) - Ψ(B)) ・W > 0となるように学習する W:パラメーターベクトル Ψ:素性関数(Ψ(A) - Ψ(B)) を素性とみなせば普通の二値分類問題!
  21. 21. Pairwiseでの文書の並べ替え● 未知の文書A, B, Cの並べ替え● スコアで並べ替える ● Learning to Rank的にはスコアを出す必要はない のだが、ほぼ確実にスコアでソートする● w・Ψ(A), w・Ψ(B) ...
  22. 22. Confidence Weighted
  23. 23. Confidence Weightedとは● オンライン線形学習アルゴリズムの1つ ● サンプルを一つ読んでパラメーターを更新する● それぞれの素性に対して分散を考慮しながら アップデートを行う ● 分散が小さい=自信(Confidence)がある
  24. 24. 更新式
  25. 25. Confidence Weightedの特徴● 学習が早い ● ループを1回回すとほぼ収束し、しかも精度は高い● ノイズに弱い ● AROW, NAROWという対策が提案されている
  26. 26. というわけで、作ってみた
  27. 27. RankCW● 二値分類としての学習にはollを利用● リストからランダムにサンプリングしてペアワ イズで学習● 2年ぐらい前の正月に作った ● 雑誌記事からの締切り逃避パワー
  28. 28. 早速実験してみよう実験データ:LETOR● MS Researchが作っているデータセット群● Pairwise, Listwiseの2種類でデータが提供される● 文書からあらかじめ素性が抽出されている – 自分で素性を作らなくていい – 逆に新しく素性を作りたくても作れない ● データセットによっては元データが入手できる● 今回はOHSUMEDとMQ2007を使用
  29. 29. 実験結果(NDCG)● OHSUMED ● CW: 0.475 0.424 0.405 0.404 0.397 ● SVM: 0.544 0.461 0.442 0.431 0.423● MQ2007-list ● CW: 0.221 0.228 0.226 0.230 0.235 ● SVM: 0.409 0.407 0.406 0.408 0.414 ● ※MQ-2007のSVMの結果はLETORより引用
  30. 30. 実験結果をよく見るありえないぐらいにCWの性能が低い!
  31. 31. 調査した結果と感想● Confidence Weightedはノイズに弱い ● あまりの低性能さに最初はバグかと思った ● SVM(最適化にはFOBOSを利用)に変えると圧倒的に よくなった
  32. 32. 本当は何がやりたかったか?● Listwiseだとデータがリストでくるので、デー タに重み付けしてPairwise Trainingすれば実 装は簡単でいい性能が出せるのでは?→単純にやっただけではうまくいかなかった
  33. 33. まとめ● Learning to Rankはデータの並べ替え● 手法を選べば実装は難しくない ● それでいて結構いい精度が出る● Confidence Weightedは高速だがノイズに弱い ● 適用するデータをよく考えよう! ● 伝統的な手法もとりあえず試した方がいい

×