Successfully reported this slideshow.
Your SlideShare is downloading. ×

DSIRNLP#1 ランキング学習ことはじめ

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Loading in …3
×

Check these out next

1 of 97 Ad

More Related Content

Slideshows for you (20)

Viewers also liked (20)

Advertisement

Similar to DSIRNLP#1 ランキング学習ことはじめ (20)

More from sleepy_yoshi (20)

Advertisement

Recently uploaded (20)

DSIRNLP#1 ランキング学習ことはじめ

  1. 1. DSIRNLP #1 ランキング学習ことはじめ 2011-07-23 Yoshihiko Suhara @sleepy_yoshi
  2. 2. 自己紹介 • 数原 良彦 (すはら よしひこ) – @sleepy_yoshi – http://d.hatena.ne.jp/sleepy_yoshi/ • 情報検索の研究開発ぽい仕事など – 情報検索とか機械学習とか • 特にランキング学習 • 三浦半島在住 – マグロを食べる頻度が減った  – 三浦半島で地震に怯える日々  2
  3. 3. さて本題 3
  4. 4. 本発表のねらい • ねらい – ランキング学習の認知度を高める – ランキング学習をざっくり伝える – なにか实装できるようになっていただく • 理論的妥当性の説明はほとんど無し • アルゴリズムを可能な限り紹介 • おねがい? – 質問は適宜お気軽にどうぞ – 手法をたくさん紹介するのはイメージづけのため • 完全に理解する必要ありません • イメージがつけば後で詳細を追える(ハズ) 4
  5. 5. おことわり • DSIRNLPのコンセプトは「实装」 • そう気が付いたのは今朝の8時でした 5
  6. 6. 言い訳 MLRに関する实装に踏み込んだ ハードな発表をお願いします 6
  7. 7. 目次 • ランキング学習とは? (15min.) – 検索ランキングの歴史 – 検索ランキングの評価方法 – ランキング学習の概要 • ランキング学習手法の紹介 (35min.) – Pointwise手法 – Pairwise手法 – Listwise手法 • その他の話題とまとめ (10min.) 7
  8. 8. ランキング学習とは? • Learning to rank – 決まった訳語がない • 例) ランキング学習,ランク学習とか – 順序学習 (preference learning) とは微妙に違う • ランキング学習 ⊂ 順序学習 • 教師あり機械学習の枠組みで,検索ランキン グを最適化する技術 – 最適化ってなによ? 8
  9. 9. ランキング学習とは? 9
  10. 10. 検索エンジン 10
  11. 11. 検索ランキングの歴史 • 従来は単一のランキング手法を利用 – (1) クエリ・文書関連度に基づく手法 • TF-IDF, BM25, 言語モデルなど – (2) 文書重要度に基づく手法 • PageRank, HITS, SALSAなど • 最近では,上記ランキング手法(+α)を統合 的に扱ってランキングを实現 11
  12. 12. 近代的なランキングの实現方法 • 多数のランキング素性を用いてランキングを实現 クエリ・文書関連度 (クエリ依存) ������1 (������, ������) e.g., BM25 クエリq ・ ・ ・ ������������ (������, ������) ランキング関数 ������ T Φ(������, ������) ������������+1 (������) e.g., PageRank ・ ・ 検索スコア ・ クエリqを含む ������������ (������) 文書d 文書の重要度 (クエリ非依存) = Φ(������, ������) 12
  13. 13. ランキング素性の例 クエリq = “hoge” のときの文書1の例 • TF-TITLE □: 1 <TITLE> hoge </TITLE> <BODY> ... hoge .... • TF-BODY □: 3 ............................... ..... hoge ................ • IN-LINK: 5 ............................... hoge ...................... • URL length: 12 </BODY> http://www.hoge.com/ ⇒ Φ "hoge", ������1 = 1, 3, 5, 12 ������ 13
  14. 14. G社の場合 (2009年版?) などなど... • Let’s Try to Find All 200 Parameters in Google Algorithm – http://www.searchenginejournal.com/200-parameters-in-google- algorithm/15457/#ixzz1Io4iBrJI • Googleアルゴリズム200項目全てを特別公開 – http://swat9.com/seo/google%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3% 83%A0200%E5%80%8B%E3%82%92%E5%85%AC%E9%96%8B/ 14
  15. 15. ランキング関数 • (今日は) ランキング関数はランキング素性の線 形結合とする – モデルパラメータ: ������ – 文書のランキング素性ベクトル: ������ ������ ������; ������ = ������������ ������ • 非線形モデルもあるが,非線形モデルであるか どうかは,ランキング学習を理解する上ではあま り重要ではない 15
  16. 16. ポイント • 現代の検索エンジンは多様な要因を用いてラ ンキングを实現 • 要因が多くなると,組み合わせの調整が困難 ⇒教師あり機械学習の枠組みで最適化 16
  17. 17. 何を正解とするか? 17
  18. 18. 正解データ (適合性評価) の作成方法 • クエリに対する検索結果集合の一部に対して,「クエリが 表す意図」に適合しているかという観点で点数を付与 – 評価点数は多段階 – 複数の被験者の適合度を平均 クエリgooに対する適合度評価 クエリ:goo 適合度 gooトップ 5 1 被験者の事前知識 に依存するため, ブレなく評価するのは 2 スパムブログ 0 難しい... 3 IT記事 評価点数はクエリ・文書ペアに対して付与 4 18
  19. 19. 検索ランキングの評価方法 • 正解データとランキングを比較 • 検索結果上位を重視する評価指標 – (1) 順位kに高い点数>順位kに低い点数 分子 – (2) ランキング上位をより重視 分母 • NDCG (Normalized Discouted Cumulative Gain) – 上記の2つを取り入れた多段階評価指標 – ������������,������ : クエリqにおける順位iの評価点数 ������ 2������������,������ − 1 ������������������������ @������ ≡ log 1 + ������ ������=1 ������������������������ @������ ������������������������������ @������ ≡ (0,1]に正規化 ������������������������������������������ @������ 19
  20. 20. ランキング学習の問題設定 20
  21. 21. 分類問題におけるモデルの生成 (������1 , ������1 ) Training (������2 , ������2 ) data 未知のデータ … (������������ , ������������ ) ������������������������������ 入力 学習 アルゴリズム モデル 学習/生成 出力 予測値 ������ 21
  22. 22. ランキング学習の訓練データ 素性や評価はクエリ毎に与えられる ������1 ������2 ������������ Training 1 1 2 2 ������ ������ (������1 , ������1 ) (������1 , ������1 ) (������1 , ������1 ) data 1 1 2 2 … ������ ������ (������2 , ������2 ) (������2 , ������2 ) (������2 , ������2 ) … 1 1 … … (������������1 , ������������1 ) ������ ������ 2 2 (������������������ , ������������������ ) (������������2 , ������������2 ) 22
  23. 23. ランキング学習におけるモデルの生成 未知のクエリ ������������������������������ ������ (������1 , ? ) Training ������ (������2 , ? ) data … ������ (������������������ , ? ) 入力 学習 アルゴリズム モデル 学習/生成 出力 直接順列を出力 する手法もある 予測値 ������ = (������1 , ������1 , ..., ������������������ ) 23
  24. 24. ここまでのまとめ • ランキング素性とランキング関数 • 正解データのつくり方と評価方法 – 「適合度」至上主義 • ランキング学習におけるモデルと予測 24
  25. 25. 小休止 ご質問ありますか? 25
  26. 26. 实装について . .: : : : : : : : :: :::: :: :: : ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: . . : : : :: : : :: : ::: :: : :::: :: ::: ::: :::::::::::::::::::::::::::::::::::::: . . .... ..: : :: :: ::: :::::: :::::::::::: : ::::::::::::::::::::::::::::::::::::::::::::: Λ_Λ . . . .: : : ::: : :: ::::::::: ::::::::::::::::::::::::::::: /:彡ミ゛ヽ;)ー、 . . .: : : :::::: ::::::::::::::::::::::::::::::::: / :::/:: ヽ、ヽ、 ::i . .:: :.: ::: . ::::::::::::::::::::::::::::::::::::::: / :::/;;: ヽ ヽ ::l . :. :. .:: : :: :: :::::::: : ::::::::::::::::::  ̄ ̄ ̄(_,ノ  ̄ ̄ ̄ヽ、_ノ ̄ ̄ ̄ ̄ 完全に忘れてた... 26
  27. 27. 实装のヒント? データ構造 アルゴリズム typedef std::pair<int, float> fpair_t; class Ranker { int wvec_size; 各手法について class Document { float *wvec; 解説 int rel_level; std::vector<fpair_t> fvec; void train (Data *data); }; float predict (Document *doc); }; class Query { 線形モデルの場合,重みベクトルだけでよい std::vector<Document> docs; }; class Data { std::vector<Query> queries; }; 27
  28. 28. 以上 あとで何か書いて公開します... 28
  29. 29. ランキング学習手法 29
  30. 30. ランキング学習3つのアプローチ • 教師あり機械学習 (識別学習) ≒ – どのような目的関数/損失関数を – どのように最適化するのか • ランキング学習3つのアプローチ – (1) Pointwise手法 – (2) Pairwise手法 – (3) Listwise手法 30
  31. 31. ちょっと先出し 31
  32. 32. (1) Pointwise手法 単一のデータに対して損失関数を設定 ������1 ������2 ������������ Training 1 1 2 2 ������ ������ (������1 , ������1 ) (������1 , ������1 ) (������1 , ������1 ) data 1 1 2 2 … ������ ������ (������2 , ������2 ) (������2 , ������2 ) (������2 , ������2 ) … 1 1 … … (������������1 , ������������1 ) ������ ������ 2 2 (������������������ , ������������������ ) (������������2 , ������������2 ) 32
  33. 33. (2) Pairwise手法 同一クエリのペアに対して損失関数を設定 ������1 ������2 ������������ Training 1 1 2 2 ������ ������ (������1 , ������1 ) (������1 , ������1 ) (������1 , ������1 ) data 1 1 2 2 … ������ ������ (������2 , ������2 ) (������2 , ������2 ) (������2 , ������2 ) … 1 1 … … (������������1 , ������������1 ) ������ ������ 2 2 (������������������ , ������������������ ) (������������2 , ������������2 ) 33
  34. 34. (3) Listwise手法 同一クエリのリストに対して損失関数を設定 ������1 ������2 ������������ Training 1 1 2 2 ������ ������ (������1 , ������1 ) (������1 , ������1 ) (������1 , ������1 ) data 1 1 2 2 … ������ ������ (������2 , ������2 ) (������2 , ������2 ) (������2 , ������2 ) … 1 1 … … (������������1 , ������������1 ) ������ ������ 2 2 (������������������ , ������������������ ) (������������2 , ������������2 ) 34
  35. 35. 先出し終わり ここまでわかればOK あとは細かい話 35
  36. 36. Pointwise手法 36
  37. 37. Pointwise手法の説明 • 二値分類,多値分類や回帰によって定式化 • 文書毎に損失が与えられる • Pointwise手法 – Discriminative Model for IR – PRank – Regression – ... 37
  38. 38. Discriminative Model for IR 38
  39. 39. Discriminative Model for IR [Nallapati 04] • 適合 (+1) / 非適合 (-1) の二値分類問題とし て解く – 通常の二値分類アルゴリズムが利用可能 ������1 ������2 ������������ Training data (������11 , ������1 1 ) (������12 , ������1 2 ) (������1������ , ������1 ������ ) 適合 … 1 (������2 , ������2 ) 1 2 (������2 , ������2 ) 2 ������ (������2 , ������2 ) ������ 非適合 … (������������1 , ������������1 ) … 1 1 … (������������������ , ������������������ ) (������������2 , ������������2 ������ ������ 2 2 ) 39 [Nallapati 04] R. Nallapati. Discriminative Models for Information Retrieval. SIGIR ‘04, (2004).
  40. 40. 補足: Perceptron • オンライン学習手法 – 線形識別モデル ������������ ������ – 間違ったパターンに対して適切に識別できるよう に重みを修正 • 細かい話にご興味がある方はTokyoNLP#5の「パーセプトロン で楽しい仲間がぽぽぽぽ~ん」をご覧ください – http://d.hatena.ne.jp/sleepy_yoshi/20110423/p1 40
  41. 41. Perceptron (二値分類) INPUT: (������������ , ������������ ) ∈ ������, ������, ������ OUTPUT: ������ 1: Initialize ������0 = ������, ������ = 0 2: FOR ������ in 0 to ������ 3: Obtain sample (������������ , ������������ ) from ������ 4: IF ������������ ������������ ������������ ≤ 0 THEN ������ 5: ������������+1 ← ������������ + ������ ������������ ������������ 6: ������ ← ������ + 1 7: ENDIF 8: ENDFOR 9: RETURN ������������ 41
  42. 42. Perceptron (二値分類) INPUT: (������������ , ������������ ) ∈ ������, ������, ������ OUTPUT: ������ 1: Initialize ������0 = ������, ������ = 0 2: FOR ������ in 0 to ������ 間違ったら重みを修正 3: Obtain sample (������������ , ������������ ) from ������ 4: IF ������������ ������������ ������������ ≤ 0 THEN ������ 5: ������������+1 ← ������������ + ������ ������������ ������������ 6: ������ ← ������ + 1 7: ENDIF 8: ENDFOR 9: RETURN ������������ 42
  43. 43. PRank 43
  44. 44. PRank [Crammer+ 02] • 順序を考慮した多値分類アルゴリズム – 閾値を用いて離散値を出力 • モデル – 線形モデル: ������������ ������ – 適合度レベルk個の閾値を用意 ������1 ≤ ⋯ ≤ ������������−1 ≤ ������������ = ∞ – ������������−1 < ������������ ������ < ������������ のとき,������と予測 ������ = min *������: ������������ ������ − ������������ < 0+ ������∈*1,…������+ • 学習方法 – Perceptronと同様に1サンプルずつ学習 – 誤った予測をした場合,重み������と閾値������の両方を修正 *Crammer+ 02+ K. Crammer and Y. Singer. Pranking with Ranking. NIPS ‘01, (2002) 44
  45. 45. PRankの学習 訓練データ (������, ������) ������1 ������2 ������3 ������4 ������1 ������2 ������3 ������4 ������ ������ ������ +1x 1 2 3 4 5 ������������ : 自分より -1 -1 +1 +1 左側 -1 右側 +1 +1 -1 -1 ������������ : -1 0 +1 +1 自分がいる エリアを0とする 重みと閾値を修正 修正幅 ������������������������ = ������������������������ + ������������ ������ ������ ������������������ ������������������ ������������ = ������������ − ������������ 45
  46. 46. PRank 46
  47. 47. PRank ラベルの予測 ������������ の計算 ������������ の計算 重みと閾値の 更新 47
  48. 48. Pairwise手法 48
  49. 49. Pairwise手法の説明 • 文書ペアで損失を設定し,二値分類問題として解く • 一般的にPointwise手法より高精度な学習が可能とさ れている • Pairwise手法 – Stochastic Pairwise Descent – RankingSVM – IR-SVM – RankBoost – RankNet – ... 49
  50. 50. Pairwise → 二値分類 • 同一クエリ内の文書Aと文書Bに着目 ������������ ������������ > ������������ ������������ ⇒ ������������ ������������ − ������������ > 0 ������������ ������������ < ������������ ������������ ⇒ ������������ ������������ − ������������ < 0 • 以下のようにすると,二値分類問題として解ける ������������������ = ������������ − ������������ ������������������ = sign(������������ − ������������ ) 50
  51. 51. 再掲: Perceptron (二値分類) INPUT: (������������ , ������������ ) ∈ ������, ������, ������ OUTPUT: ������ 1: Initialize ������0 = ������, ������ = 0 2: FOR ������ in 0 to ������ 3: Obtain sample (������������ , ������������ ) from ������ 4: IF ������������ ������������ ������������ ≤ 0 THEN ������ 5: ������������+1 ← ������������ + ������ ������������ ������������ 6: ������ ← ������ + 1 7: ENDIF 8: ENDFOR 9: RETURN ������������ 51
  52. 52. Perceptron (ペアワイズ) INPUT: (������������ , ������������ , ������������ ) ∈ ������, ������, ������ OUTPUT: ������ 1: Initialize ������0 = ������, ������ = 0 2: FOR ������ in 0 to ������ 3: Obtain two samples (������������ , ������������ , ������������ ), (������������ , ������������ , ������������ ) from ������ , where ������������ = ������������ AND ������������ ≠ ������������ 4: Let ������������ = sign(������������ − ������������ ), ������������ = ������������ − ������������ 5: IF ������������ ������������ ������������ ≤ 0 THEN ������ 6: ������������+1 ← ������������ + ������ ������������ ������������ 7: ������ ← ������ + 1 8: ENDIF 9: ENDFOR 10: RETURN ������������ 52
  53. 53. Perceptron (ペアワイズ) INPUT: (������������ , ������������ , ������������ ) ∈ ������, ������, ������ OUTPUT: ������ 1: Initialize ������0 = ������, ������ = 0 2: FOR ������ in 0 to ������ 3: Obtain two samples (������������ , ������������ , ������������ ), (������������ , ������������ , ������������ ) from ������ , where ������������ = ������������ AND ������������ ≠ ������������ 4: Let ������������ = sign(������������ − ������������ ), ������������ = ������������ − ������������ 5: IF ������������ ������������ ������������ ≤ 0 THEN ������ 6: ������������+1 ← ������������ + ������ ������������ ������������ 7: ������ ← ������ + 1 8: ENDIF 9: ENDFOR 10: RETURN ������������ 53
  54. 54. Stochastic Pairwise Descent [Sculley 09] • ランダムランプリングした文書ペアに対して重み 更新を行う – 更新手法はいろいろ • SVM • Passive-Aggressive • Margin-Perceptron • など • 实装: sofia-ml – http://code.google.com/p/sofia-ml/ 54
  55. 55. Stochastic Pairwise Descent INPUT: (������������ , ������������ , ������������ ) ∈ ������, ������, ������ OUTPUT: ������ 1: Initialize ������0 = ������, ������ = 0 2: FOR ������ in 0 to ������ 3: Obtain two samples (������������ , ������������ , ������������ ), (������������ , ������������ , ������������ ) from ������ , where ������������ = ������������ AND ������������ ≠ ������������ 4: Let ������������ = sign(������������ − ������������ ), ������������ = ������������ − ������������ 5: IF ������������ ������������ ������������ ≤ 0 THEN ������ 6: ������������+1 ← ������������ + ������ ������������ ������������ 7: ������ ← ������ + 1 この部分を変更 8: ENDIF 9: ENDFOR 10: RETURN ������������ 55
  56. 56. Stochastic Pairwise Descent (PA-I) INPUT: (������������ , ������������ , ������������ ) ∈ ������, ������, ������ OUTPUT: ������ 1: Initialize ������0 = ������, ������ = 0 2: FOR ������ in 0 to ������ 3: Obtain two samples (������������ , ������������ , ������������ ), (������������ , ������������ , ������������ ) from ������ , where ������������ = ������������ AND ������������ ≠ ������������ 4: Let ������������ = sign(������������ − ������������ ), ������������ = ������������ − ������������ 5: IF ������������ ������������ ������������ ≤ 0THEN ������ ℓ������ ������������ = min ������, 6: ������������+1 ← ������������ + ������������2������������ ������������ ������ 7: ������ ← ������+1 =1 ������ + ������������ ������������ ������ ������ + ������ みんな大好きPassive-Aggressive 8: ENDIF 9: ENDFOR 10: RETURN ������������ 56
  57. 57. RankingSVM • 先ほどと同様に考えると,SVMも二値分類と 同様の枠組みで解ける 2 ������ – minimize ������ + ������ ������ ������,������ ������������,������ ������ ������ ������ ������ ������ – s.t. sign ������������ − ������������ ������������ ������������ − ������������ ≥ 1 − ������������,������ ∀������, ������, ������ • 最適化の方法は色々 57
  58. 58. Pairwise手法がやっていること • ペア誤りの最小化 = Kendallの順位相関の最適化 (≠ 検索評価指標の最適化) • Kendallの順位相関 – P: 順序が一致しているペアの数 2������ 2������ Kendall = ������ −1= −1 2 1/2������ ������ − 1 Pairwise損失は検索評価指標損失の 上界になってるで [Chen+ 09] W. Chen, T.-Y. Liu, Y. Lan, Z. Ma, H. Li. Ranking Measures and Loss Functions in 58 Learning to Rank. NIPS ’09 (2009).
  59. 59. 参考: Pair 0-1 lossと他の損失関数 通常の二値分類と同じアナロジー f(x)=sign(yA-yB) wT (xA-xB) 59
  60. 60. Pairwise手法そんなに悪くない? • RSVM (Pairwise) vs. ListNet, AdaRank (Listwise) MQ2007 NDCG@1 NDCG@5 NDCG@10 dataset RSVM .4096 .4143 .4439 ListNet .4002 .4170 .4440 AdaRank-NDCG .3876 .4102 .4369 AdaRank-MAP .3821 .4070 .4335 MQ2008 NDCG@1 NDCG@5 NDCG@10 dataset RSVM .3627 .4695 .2279 ListNet .3754 .4747 .2303 AdaRank-NDCG .3826 .4821 .2307 AdaRank-MAP .3754 .4794 .2288 60
  61. 61. Pairwise手法の問題点 • ペアワイズ手法では,順序ペアの誤りのみ考慮 4 0 = ? 5 1 評価点数の違いを考慮すべきでは? 61
  62. 62. IR-SVM [Cao+ 06] • (1) ペア毎に異なる損失重みを利用 – 評価指標に影響を与えるペアの誤りに対して大きな 損失を与える (ヒンジロスの傾き) • (2) クエリ毎のペアの偏りを排除 – 多くのペアを持つクエリに対して損失を小さくする loss ������������ ������ ������ ������������ 62
  63. 63. PARank (手前味噌) [数原+ 11] • 重要度をマージンに反映 • PAで更新 ������2 (������, ������) ○ 重要度 ○ r=4 △ 小 △ r=3 ○ △ ○ □ r=2 □ ○ × r=1 △ 重要度 □ △ 大 □ × ������������ Φ(q, d) × × ������1 (������, ������) 63 [数原+ 11] 数原, 鈴木, 安田, 小池, 片岡. 評価指標をマージンに反映したオンラインランキング学習. NLP2011.
  64. 64. 小休止 ご質問ありますか? 64
  65. 65. Listwiseアプローチ 65
  66. 66. Listwise手法の概要 • クエリ毎に損失を設定 – 検索評価指標を直接/間接的に最適化することが 可能 • 一般的にPairwiseよりも精度が高いとされている • Listwise手法 – ListNet – AdaRank – SVM_MAP – SmoothRank – ... 66
  67. 67. ListNet 67
  68. 68. ListNet [Cao+ 07] • 今までペアを考慮 – Kendallの順位相関 ≠ 検索評価指標 • “順列 (リスト)”の観点で最適化をしたい – 訓練データとモデルを順列の確率分布で表現し, 分布間の距離を最小化する • 順列の確率分布にPlackett-Luceモデルを利用 • 分布間の距離はみんな大好きKL-divergenceを利用 [Cao+ 07] Z. Cao, T. Qin, T.-Y. Liu, M.-F. Tsai, H. Li. Learning to rank: from pairwise approach to listwise approach. ICML ’07, (2007). 68
  69. 69. Plackett-Luceモデル ������ exp(������������ ������ ) • 順列の確率モデル: ������ ������|������ = ������=1 ������ exp ������ ������=������ ������ ������ 順列1  doc1 exp(3) exp 2 評価データ = ⋅ exp 3 + exp(2) + exp(1) exp 2 + exp 1 doc2 exp 1 doc1 3点 ⋅ = ������. ������������������ doc3 exp 1 doc2 2点 doc3 1点 順列2  doc2 exp(2) exp 1 = ⋅ exp 2 + exp(1) + exp(3) exp 1 + exp 3 doc3 exp 3 ⋅ = ������. ������������������ doc1 exp 3 69
  70. 70. ListNetのパラメータ学習 • 評価データとモデルの出力が近づける – Plackett-Luceモデルの分布の観点で (クロスエントロピー) − ������������������ ������ log ������������ (������) ������∈Π������ 直感的なイメージ 評価データ 順列の全候補って?! モデル出力 doc1 n文書に対してO(n!) ������������ ������1 3点 doc2 2点 ������������ ������2 類似度が最大に doc3 1点 なるように������を調整 ������������ ������3 70
  71. 71. 計算の効率化 • 上位k件 (k=1) に対するPlackett-Luceモデル の分布を計算 [Cao+ 08] – k=1の際,クエリiのクロスエントロピーの������に関す る微分は以下のように求まる ������������ ������������ , ������ ������������ ������������ ������������ ������ ������ 1 ������ ������ =− ������������������ ������������ ������������ + ������������ ������ exp(������������ ������������ ) ������������ ������=1 ������=1 exp ������������ ������������ ������=1 71
  72. 72. ListNet INPUT:(������ ������ , ������������ , ������������ ) ∈ ������, ������, ������ OUTPUT: ������ 1: Initialize ������0 = ������, ������ = 0 2: FOR ������ in 0 to ������ 3: FOR i = 1 to m ������������ ������������ ,������ 4: Compute ������������ ������������ ������������ ,������ 5: Update ������ = ������ − ������ ������������ 6: ENDFOR 7: ENDFOR 8: Return ������ 72
  73. 73. ListNet INPUT:(������ ������ , ������������ , ������������ ) ∈ ������, ������, ������ OUTPUT: ������ 1: Initialize ������0 = ������, ������ = 0 各クエリ毎に勾配を求めて 2: FOR ������ in 0 to ������ 最急降下法で更新 3: FOR i = 1 to m ������������ ������������ ,������ 4: Compute ������������ ������������ ������������ ,������ 5: Update ������ = ������ − ������ ������������ 6: ENDFOR 7: ENDFOR 8: Return ������ 73
  74. 74. ListNet余談 • Pairwise手法であるRankNetでは,多層ニュー ラルネットでランキング関数を实現 – 多層ニューラルネットワークで表現される非線形 関数は最急降下法で解ける • 誤差逆伝播を用いることで勾配を求めることができる ため (詳しくはPRMLを!) • けれど,ListNet論文では線形モデルを利用 – List “Net” なのに? 74
  75. 75. AdaRank 75
  76. 76. AdaRank • 検索評価指標を直接最適化するブースティン グ手法 – 線形モデル • WeakRanker次第 – 实装が簡単  – 任意の評価指標を最適化することが可能  – 性能はそれほどよくない?  76
  77. 77. AdaRankのイメージ 試行回数 訓練データ 弱学習器 クエリ1 ... クエリn 1 × g1 重み付き訓練データ g1が苦手とする 重み変更 クエリに有効 2 × × g2 … … N個の弱学習器を … 重み付け和 … 重み付き訓練データ … N gN ランキング関数 77
  78. 78. AdaRank INPUT: (������������ , ������������ , ������������ ) ∈ ������, ������, ������ OUTPUT: ������(������) 1 1: Initialize ������1 ������ = ������ ������������������ ������������������ℎ ������ 2: FOR ������ in 1 to ������ 3: Create weak ranker ℎ������ with weighted distribution ������������ 4: Calculate ������ 1 ������=1 ������������ ������ *1 + ������(������(������������ , ������������ , ℎ������ ), ������������ ) ������������ = ln ������ 2 ������=1 ������������ ������ *1 − ������(������(������������ , ������������ , ℎ������ ), ������������ ) 5: Create ������ ������������ ������ = ������������ ℎ������ (������) ������=1 6: Update ������������+1 exp*−������(������ ������������ , ������������ , ������������ , ������������ )+ ������������+1 ������ = ������ ������=1 exp*−������(������ ������������ , ������������ , ������������ , ������������ )+ 7: ENDFOR 8: Return ������������ (������) 78
  79. 79. AdaRank (解説) INPUT: (������������ , ������������ , ������������ ) ∈ ������, ������, ������ OUTPUT: ������(������) クエリiの重み 1 1: Initialize ������1 ������ = ������ ������������������ ������������������ℎ ������ WeakRankerの生成 2: FOR ������ in 1 to ������ WeakRankerのクエリi 3: Create weak ranker ℎ������ with weighted distribution ������������ に対する評価値 WeakRankerの重要度 4: Calculate ������ 1 ������=1 ������������ ������ *1 + ������(������(������������ , ������������ , ℎ������ ), ������������ ) ������������ = ln ������ 2 ������=1 ������������ ������ *1 − ������(������(������������ , ������������ , ℎ������ ), ������������ ) 5: Create ������ これまでのWeakRanker の重みづけ和 ������������ ������ = ������������ ℎ������ (������) ������=1 6: Update ������������+1 クエリの重みの更新 exp*−������(������ ������������ , ������������ , ������������ , ������������ )+ ������������+1 ������ = ������ ������=1 exp*−������(������ ������������ , ������������ , ������������ , ������������ )+ 7: ENDFOR 8: Return ������������ (������) 79
  80. 80. 再掲: 検索ランキングの評価方法 • 正解データとランキングを比較 • 検索結果上位を重視する評価指標 – (1) 順位kに高い点数>順位kに低い点数 分子 – (2) ランキング上位をより重視 分母 • NDCG (Normalized Discouted Cumulative Gain) – 上記の2つを取り入れた多段階評価指標 – ������������,������ : クエリqにおける順位iの評価点数 ������ 2������������,������ − 1 ������������������������ @������ ≡ log 1 + ������ ������=1 ������������������������ @������ ������������������������������ @������ ≡ (0,1]に正規化 ������������������������������������������ @������ 80
  81. 81. AdaRank: WeakRankerの生成方法 • クエリ重み付け評価指標が最大になるようなひとつ のランキング素性 – 例: BM25, PageRank, etc... ������ max ������������ ������ ������(������ ������������ , ������������ , ������������ , ������������ ) k ������=1 • この場合,最終的なランキング関数������������ (������)も線形関数 81
  82. 82. その他のListwise手法 82
  83. 83. その他のListwise手法 • 評価指標の近似を用いる手法 – SoftRank, SmoothRank • 構造学習を用いる手法 – SVM_MAP, SVM_NDCG • 勾配情報を利用しない方法 – NDCG-Annealing, RankPSO 83
  84. 84. 3つの手法の違い 84
  85. 85. 再掲: (1) Pointwise手法 単一のデータに対して損失関数を設定 ������1 ������2 ������������ Training 1 1 2 2 ������ ������ (������1 , ������1 ) (������1 , ������1 ) (������1 , ������1 ) data 1 1 2 2 … ������ ������ (������2 , ������2 ) (������2 , ������2 ) (������2 , ������2 ) … 1 1 … … (������������1 , ������������1 ) ������ ������ 2 2 (������������������ , ������������������ ) (������������2 , ������������2 ) 85
  86. 86. 再掲: (2) Pairwise手法 同一クエリのペアに対して損失関数を設定 ������1 ������2 ������������ Training 1 1 2 2 ������ ������ (������1 , ������1 ) (������1 , ������1 ) (������1 , ������1 ) data 1 1 2 2 … ������ ������ (������2 , ������2 ) (������2 , ������2 ) (������2 , ������2 ) … 1 1 … … (������������1 , ������������1 ) ������ ������ 2 2 (������������������ , ������������������ ) (������������2 , ������������2 ) 86
  87. 87. 再掲: (3) Listwise手法 同一クエリのリストに対して損失関数を設定 ������1 ������2 ������������ Training 1 1 2 2 ������ ������ (������1 , ������1 ) (������1 , ������1 ) (������1 , ������1 ) data 1 1 2 2 … ������ ������ (������2 , ������2 ) (������2 , ������2 ) (������2 , ������2 ) … 1 1 … … (������������1 , ������������1 ) ������ ������ 2 2 (������������������ , ������������������ ) (������������2 , ������������2 ) 87
  88. 88. その他の話題 88
  89. 89. その他の話題 • Click-through logs • Query-dependent ranking • Feature selection • Transfer learning/Domain adaptation • Diversity/Novelty 「ことはじめ」なので割愛... 89
  90. 90. 公開Dataset • LETOR3.0/4.0 Dataset – http://research.microsoft.com/en-us/um/beijing/projects/letor/default.aspx • MSLR-WEB Dataset – http://research.microsoft.com/en-us/projects/mslr/ • Yahoo! Learning to Rank Challenge – http://learningtorankchallenge.yahoo.com/datasets.php – 大学のみ? (+学部長のサインが必要?) 90
  91. 91. 实装 • RankingSVM – svm_rank by T. Joachims • http://www.cs.cornell.edu/People/tj/svm_light/svm_rank.html • Stochastic Pairwise Descent – sofia-ml by D. Sculley • http://code.google.com/p/sofia-ml/ 91
  92. 92. Learning to Rank教科書 • Tie-Yan Liu. Learning to Rank for Information Retrieval. Springer (2011). • Tie-Yan Liu. Learning to Rank for Information Retrieval (Foundations and Trends(R) in Information Retrieval), Now Publishers (2009) • Hang Li, Learning to Rank for Information Retrieval and Natural Language Processing, Morgan & Claypool (2011) 92
  93. 93. 情報検索の教科書 • Christopher D. Manning, Prabhakar Raghavan, Hinrich Schuetze, “Introduction to Information Retrieval”, Cambridge University Press (2008). – Webで全ページ公開されている.情報検索全般的にバランスよく書かれている • Bruce Croft, Donald Metzler, Trevor Strohman, “Search Engines: Information Retrieval in Practice”, Pearson Education (2009). – 検索エンジン寄りの話.エンジニア向けに書かれている.一番簡単かも. • Stefan Buttcher, Charles L. A. Clarke and Gordon V. Cormack, “Information Retrieval”, The MIT Press, 2010. – 实装から理論まで王道を押さえてしっかり書かれている印象.特にお薦め. 93
  94. 94. チュートリアル資料 • Tie Yan Liu. Learning to Rank for Information Retrieval. SIGIR ‘08 Tutorial. – http://research.microsoft.com/en-us/people/tyliu/letor-tutorial- sigir08.pdf • Hang Li. Learning to Rank. ACL-IJCNLP ‘09 Tutorial. – http://research.microsoft.com/en-us/people/hangli/li-acl-ijcnlp-2009- tutorial.pdf • Shivani Agarwal. Ranking Methods in Machine Learning, SDM ’10 Tutorial. – http://web.mit.edu/shivani/www/Events/SDM-10-Tutorial/sdm10- tutorial.pdf • 徳永拓之. Confidence Weightedでランク学習を实装してみた. TokyoNLP#4 (2011). – http://www.slideshare.net/tkng/confidence-weighted 94
  95. 95. まとめ • 近代的な検索エンジンは多数のランキング素 性を利用している • ランキング学習は,評価データを用いて,ラン キング素性の最適な重み付けを求める方法 • 適合度の観点での基本タスクは大体終わっ た感じ 95
  96. 96. お持ち帰りメッセージ • Pointwise, Pairwise, Listwiseの違いは,損失 関数の設定方法にあり – どのように最適化するかは規定していない • Pairwise手法は二値分類アルゴリズムがその まま利用可能 • 機械学習手法 (に限らず?) は論文 ≒ 实装 – ソースコードはノウハウの宝庫 96
  97. 97. おしまい 97

×