Weitere ähnliche Inhalte Ähnlich wie DSIRNLP#1 ランキング学習ことはじめ (20) Mehr von sleepy_yoshi (20) DSIRNLP#1 ランキング学習ことはじめ2. 自己紹介
• 数原 良彦 (すはら よしひこ)
– @sleepy_yoshi
– http://d.hatena.ne.jp/sleepy_yoshi/
• 情報検索の研究開発ぽい仕事など
– 情報検索とか機械学習とか
• 特にランキング学習
• 三浦半島在住
– マグロを食べる頻度が減った
– 三浦半島で地震に怯える日々
2
4. 本発表のねらい
• ねらい
– ランキング学習の認知度を高める
– ランキング学習をざっくり伝える
– なにか实装できるようになっていただく
• 理論的妥当性の説明はほとんど無し
• アルゴリズムを可能な限り紹介
• おねがい?
– 質問は適宜お気軽にどうぞ
– 手法をたくさん紹介するのはイメージづけのため
• 完全に理解する必要ありません
• イメージがつけば後で詳細を追える(ハズ)
4
7. 目次
• ランキング学習とは? (15min.)
– 検索ランキングの歴史
– 検索ランキングの評価方法
– ランキング学習の概要
• ランキング学習手法の紹介 (35min.)
– Pointwise手法
– Pairwise手法
– Listwise手法
• その他の話題とまとめ (10min.)
7
8. ランキング学習とは?
• Learning to rank
– 決まった訳語がない
• 例) ランキング学習,ランク学習とか
– 順序学習 (preference learning) とは微妙に違う
• ランキング学習 ⊂ 順序学習
• 教師あり機械学習の枠組みで,検索ランキン
グを最適化する技術
– 最適化ってなによ?
8
11. 検索ランキングの歴史
• 従来は単一のランキング手法を利用
– (1) クエリ・文書関連度に基づく手法
• TF-IDF, BM25, 言語モデルなど
– (2) 文書重要度に基づく手法
• PageRank, HITS, SALSAなど
• 最近では,上記ランキング手法(+α)を統合
的に扱ってランキングを实現
11
12. 近代的なランキングの实現方法
• 多数のランキング素性を用いてランキングを实現
クエリ・文書関連度
(クエリ依存)
������1 (������, ������)
e.g., BM25
クエリq ・
・
・
������������ (������, ������) ランキング関数
������ T Φ(������, ������)
������������+1 (������)
e.g., PageRank
・
・ 検索スコア
・
クエリqを含む ������������ (������)
文書d 文書の重要度
(クエリ非依存)
= Φ(������, ������) 12
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. 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
18. 正解データ (適合性評価) の作成方法
• クエリに対する検索結果集合の一部に対して,「クエリが
表す意図」に適合しているかという観点で点数を付与
– 評価点数は多段階
– 複数の被験者の適合度を平均
クエリgooに対する適合度評価
クエリ:goo 適合度
gooトップ 5
1 被験者の事前知識
に依存するため,
ブレなく評価するのは
2 スパムブログ 0
難しい...
3 IT記事
評価点数はクエリ・文書ペアに対して付与
4
18
19. 検索ランキングの評価方法
• 正解データとランキングを比較
• 検索結果上位を重視する評価指標
– (1) 順位kに高い点数>順位kに低い点数 分子
– (2) ランキング上位をより重視 分母
• NDCG (Normalized Discouted Cumulative Gain)
– 上記の2つを取り入れた多段階評価指標
– ������������,������ : クエリqにおける順位iの評価点数
������
2������������,������ − 1
������������������������ @������ ≡
log 1 + ������
������=1
������������������������ @������
������������������������������ @������ ≡ (0,1]に正規化
������������������������������������������ @������
19
21. 分類問題におけるモデルの生成
(������1 , ������1 )
Training (������2 , ������2 )
data 未知のデータ
…
(������������ , ������������ ) ������������������������������
入力
学習
アルゴリズム モデル
学習/生成
出力
予測値 ������ 21
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. ランキング学習におけるモデルの生成
未知のクエリ
������������������������������
������
(������1 , ? )
Training ������
(������2 , ? )
data
…
������
(������������������ , ? )
入力
学習
アルゴリズム モデル
学習/生成
出力
直接順列を出力
する手法もある 予測値 ������ = (������1 , ������1 , ..., ������������������ )
23
26. 实装について
. .: : : : : : : : :: :::: :: :: : :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
. . : : : :: : : :: : ::: :: : :::: :: ::: ::: ::::::::::::::::::::::::::::::::::::::
. . .... ..: : :: :: ::: :::::: :::::::::::: : :::::::::::::::::::::::::::::::::::::::::::::
Λ_Λ . . . .: : : ::: : :: ::::::::: :::::::::::::::::::::::::::::
/:彡ミ゛ヽ;)ー、 . . .: : : :::::: :::::::::::::::::::::::::::::::::
/ :::/:: ヽ、ヽ、 ::i . .:: :.: ::: . :::::::::::::::::::::::::::::::::::::::
/ :::/;;: ヽ ヽ ::l . :. :. .:: : :: :: :::::::: : ::::::::::::::::::
 ̄ ̄ ̄(_,ノ  ̄ ̄ ̄ヽ、_ノ ̄ ̄ ̄ ̄
完全に忘れてた... 26
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
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. (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. (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
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. 補足: Perceptron
• オンライン学習手法
– 線形識別モデル ������������ ������
– 間違ったパターンに対して適切に識別できるよう
に重みを修正
• 細かい話にご興味がある方はTokyoNLP#5の「パーセプトロン
で楽しい仲間がぽぽぽぽ~ん」をご覧ください
– http://d.hatena.ne.jp/sleepy_yoshi/20110423/p1
40
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. 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
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. 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
47. PRank
ラベルの予測
������������ の計算
������������ の計算
重みと閾値の
更新
47
50. Pairwise → 二値分類
• 同一クエリ内の文書Aと文書Bに着目
������������ ������������ > ������������ ������������ ⇒ ������������ ������������ − ������������ > 0
������������ ������������ < ������������ ������������ ⇒ ������������ ������������ − ������������ < 0
• 以下のようにすると,二値分類問題として解ける
������������������ = ������������ − ������������
������������������ = sign(������������ − ������������ )
50
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. 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. 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. Stochastic Pairwise Descent [Sculley 09]
• ランダムランプリングした文書ペアに対して重み
更新を行う
– 更新手法はいろいろ
• SVM
• Passive-Aggressive
• Margin-Perceptron
• など
• 实装: sofia-ml
– http://code.google.com/p/sofia-ml/
54
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. 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. RankingSVM
• 先ほどと同様に考えると,SVMも二値分類と
同様の枠組みで解ける
2 ������
– minimize ������ + ������ ������ ������,������ ������������,������
������ ������ ������ ������ ������
– s.t. sign ������������ − ������������ ������������ ������������ − ������������ ≥ 1 − ������������,������ ∀������, ������, ������
• 最適化の方法は色々
57
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. 参考: Pair 0-1 lossと他の損失関数
通常の二値分類と同じアナロジー
f(x)=sign(yA-yB) wT (xA-xB) 59
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
62. IR-SVM [Cao+ 06]
• (1) ペア毎に異なる損失重みを利用
– 評価指標に影響を与えるペアの誤りに対して大きな
損失を与える (ヒンジロスの傾き)
• (2) クエリ毎のペアの偏りを排除
– 多くのペアを持つクエリに対して損失を小さくする
loss
������������ ������ ������ ������������
62
63. PARank (手前味噌) [数原+ 11]
• 重要度をマージンに反映
• PAで更新
������2 (������, ������)
○
重要度 ○ r=4
△
小 △ r=3
○
△ ○ □ r=2
□ ○ × r=1
△
重要度
□ △ 大
□
× ������������ Φ(q, d)
×
×
������1 (������, ������)
63
[数原+ 11] 数原, 鈴木, 安田, 小池, 片岡. 評価指標をマージンに反映したオンラインランキング学習. NLP2011.
66. Listwise手法の概要
• クエリ毎に損失を設定
– 検索評価指標を直接/間接的に最適化することが
可能
• 一般的にPairwiseよりも精度が高いとされている
• Listwise手法
– ListNet
– AdaRank
– SVM_MAP
– SmoothRank
– ...
66
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. 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. ListNetのパラメータ学習
• 評価データとモデルの出力が近づける
– Plackett-Luceモデルの分布の観点で (クロスエントロピー)
− ������������������ ������ log ������������ (������)
������∈Π������
直感的なイメージ
評価データ 順列の全候補って?! モデル出力
doc1
n文書に対してO(n!) ������������ ������1
3点
doc2 2点 ������������ ������2
類似度が最大に
doc3
1点 なるように������を調整 ������������ ������3
70
71. 計算の効率化
• 上位k件 (k=1) に対するPlackett-Luceモデル
の分布を計算 [Cao+ 08]
– k=1の際,クエリiのクロスエントロピーの������に関す
る微分は以下のように求まる
������������ ������������ , ������
������������
������������ ������������
������ ������ 1 ������ ������
=− ������������������ ������������ ������������ + ������������ ������
exp(������������ ������������ ) ������������
������=1 ������=1 exp ������������ ������������ ������=1
71
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. 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
77. AdaRankのイメージ
試行回数 訓練データ
弱学習器
クエリ1 ... クエリn
1 × g1
重み付き訓練データ g1が苦手とする
重み変更
クエリに有効
2 × × g2
…
…
N個の弱学習器を
…
重み付け和
…
重み付き訓練データ
…
N gN
ランキング関数
77
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. 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. 再掲: 検索ランキングの評価方法
• 正解データとランキングを比較
• 検索結果上位を重視する評価指標
– (1) 順位kに高い点数>順位kに低い点数 分子
– (2) ランキング上位をより重視 分母
• NDCG (Normalized Discouted Cumulative Gain)
– 上記の2つを取り入れた多段階評価指標
– ������������,������ : クエリqにおける順位iの評価点数
������
2������������,������ − 1
������������������������ @������ ≡
log 1 + ������
������=1
������������������������ @������
������������������������������ @������ ≡ (0,1]に正規化
������������������������������������������ @������
80
81. AdaRank: WeakRankerの生成方法
• クエリ重み付け評価指標が最大になるようなひとつ
のランキング素性
– 例: BM25, PageRank, etc...
������
max ������������ ������ ������(������ ������������ , ������������ , ������������ , ������������ )
k
������=1
• この場合,最終的なランキング関数������������ (������)も線形関数
81
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. 再掲: (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. 再掲: (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
89. その他の話題
• Click-through logs
• Query-dependent ranking
• Feature selection
• Transfer learning/Domain adaptation
• Diversity/Novelty
「ことはじめ」なので割愛...
89
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. 实装
• 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. 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. 情報検索の教科書
• 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. チュートリアル資料
• 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
96. お持ち帰りメッセージ
• Pointwise, Pairwise, Listwiseの違いは,損失
関数の設定方法にあり
– どのように最適化するかは規定していない
• Pairwise手法は二値分類アルゴリズムがその
まま利用可能
• 機械学習手法 (に限らず?) は論文 ≒ 实装
– ソースコードはノウハウの宝庫
96