dsirnlp#1 ランキング学習ことはじめ
DESCRIPTION
DSIRNLP#1「ランキング学習ことはじめ」発表資料TRANSCRIPT
DSIRNLP #1 ランキング学習ことはじめ
2011-07-23
Yoshihiko Suhara
@sleepy_yoshi
自己紹介
• 数原 良彦 (すはら よしひこ) – @sleepy_yoshi – http://d.hatena.ne.jp/sleepy_yoshi/
• 情報検索の研究開発ぽい仕事など
– 情報検索とか機械学習とか • 特にランキング学習
• 三浦半島在住
– マグロを食べる頻度が減った – 三浦半島で地震に怯える日々
2
さて本題
3
本発表のねらい
• ねらい – ランキング学習の認知度を高める – ランキング学習をざっくり伝える – なにか实装できるようになっていただく
• 理論的妥当性の説明はほとんど無し • アルゴリズムを可能な限り紹介
• おねがい?
– 質問は適宜お気軽にどうぞ – 手法をたくさん紹介するのはイメージづけのため
• 完全に理解する必要ありません • イメージがつけば後で詳細を追える(ハズ)
4
おことわり
• DSIRNLPのコンセプトは「实装」
• そう気が付いたのは今朝の8時でした
5
言い訳
6
MLRに関する实装に踏み込んだハードな発表をお願いします
目次
• ランキング学習とは? (15min.) – 検索ランキングの歴史
– 検索ランキングの評価方法
– ランキング学習の概要
• ランキング学習手法の紹介 (35min.) – Pointwise手法
– Pairwise手法
– Listwise手法
• その他の話題とまとめ (10min.)
7
ランキング学習とは?
• Learning to rank –決まった訳語がない
• 例) ランキング学習,ランク学習とか
–順序学習 (preference learning) とは微妙に違う • ランキング学習 ⊂ 順序学習
• 教師あり機械学習の枠組みで,検索ランキングを最適化する技術 –最適化ってなによ?
8
ランキング学習とは?
9
検索エンジン
10
検索ランキングの歴史
• 従来は単一のランキング手法を利用
– (1) クエリ・文書関連度に基づく手法
• TF-IDF, BM25, 言語モデルなど
– (2) 文書重要度に基づく手法
• PageRank, HITS, SALSAなど
• 最近では,上記ランキング手法(+α)を統合的に扱ってランキングを实現
11
12
近代的なランキングの实現方法 • 多数のランキング素性を用いてランキングを实現
クエリq
クエリqを含む 文書d
𝜙1(𝑞, 𝑑)
𝜙𝑚(𝑞, 𝑑)
𝜙𝑚+1(𝑑)
𝜙𝑛(𝑑)
𝐰TΦ(𝑞, 𝑑)
・・・
・・・
検索スコア
文書の重要度 (クエリ非依存)
ランキング関数
クエリ・文書関連度 (クエリ依存)
e.g., BM25
e.g., PageRank
= Φ(𝑞, 𝑑)
ランキング素性の例
• TF-TITLE □: 1
• TF-BODY □: 3
• IN-LINK: 5
• URL length: 12
<TITLE> hoge </TITLE>
<BODY> ... hoge .... ............................... ..... hoge ................ ............................... hoge ...................... </BODY>
http://www.hoge.com/
クエリq = “hoge” のときの文書1の例
Φ "hoge", 𝑑1 = 1, 3, 5, 12 𝑇 ⇒ 13
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
ポイント
• 現代の検索エンジンは多様な要因を用いてランキングを实現
• 要因が多くなると,組み合わせの調整が困難
⇒教師あり機械学習の枠組みで最適化
16
何を正解とするか?
17
正解データ (適合性評価) の作成方法
• クエリに対する検索結果集合の一部に対して,「クエリが表す意図」に適合しているかという観点で点数を付与 – 評価点数は多段階 – 複数の被験者の適合度を平均
18
クエリ:goo
1
2
3
5
0
4
適合度
クエリgooに対する適合度評価
gooトップ
スパムブログ
IT記事
被験者の事前知識 に依存するため, ブレなく評価するのは 難しい...
評価点数はクエリ・文書ペアに対して付与
検索ランキングの評価方法
• 正解データとランキングを比較
• 検索結果上位を重視する評価指標 – (1) 順位kに高い点数>順位kに低い点数 – (2) ランキング上位をより重視
• NDCG (Normalized Discouted Cumulative Gain)
– 上記の2つを取り入れた多段階評価指標
– 𝑦𝑞,𝑖: クエリqにおける順位iの評価点数
𝐷𝐶𝐺𝑞@𝑘 ≡ 2𝑦𝑞,𝑖 − 1
log 1 + 𝑖
𝑘
𝑖=1
𝑁𝐷𝐶𝐺𝑞@𝑘 ≡𝐷𝐶𝐺𝑞@𝑘
𝑚𝑎𝑥𝐷𝐶𝐺𝑞@𝑘
19
(0,1]に正規化
分子 分母
ランキング学習の問題設定
20
分類問題におけるモデルの生成
Training data
(𝒙1, 𝑦1)
(𝒙2, 𝑦2)
(𝒙𝑁 , 𝑦𝑁)
…
学習 アルゴリズム モデル
未知のデータ 𝒙𝑡𝑒𝑠𝑡
予測値 𝑦
学習/生成
入力
出力
21
ランキング学習の訓練データ
Training data
(𝒙11, 𝑦1
1)
…
… (𝒙2
1, 𝑦2
1)
(𝒙𝑛11, 𝑦𝑛1
1)
(𝒙12, 𝑦1
2)
…
(𝒙22, 𝑦2
2)
(𝒙𝑛22, 𝑦𝑛2
2)
(𝒙1𝑁, 𝑦1
𝑁)
…
(𝒙2𝑁, 𝑦2
𝑁)
(𝒙𝑛𝑁𝑁, 𝑦𝑛𝑁
𝑁)
𝑞1 𝑞2 𝑞𝑁
素性や評価はクエリ毎に与えられる
22
ランキング学習におけるモデルの生成
Training data
学習 アルゴリズム モデル
未知のクエリ
予測値 𝒚 = (𝑦 1, 𝑦 1, ..., 𝑦 𝑛𝑡)
学習/生成
入力
出力
(𝒙1𝑡, ? )
…
(𝒙2𝑡, ? )
(𝒙𝑛𝑡𝑡, ? )
𝑞𝑡𝑒𝑠𝑡
直接順列を出力 する手法もある 23
ここまでのまとめ
• ランキング素性とランキング関数
• 正解データのつくり方と評価方法
– 「適合度」至上主義
• ランキング学習におけるモデルと予測
24
小休止
ご質問ありますか? 25
实装について
26
. .: : : : : : : : :: :::: :: :: : ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: . . : : : :: : : :: : ::: :: : :::: :: ::: ::: :::::::::::::::::::::::::::::::::::::: . . .... ..: : :: :: ::: :::::: :::::::::::: : ::::::::::::::::::::::::::::::::::::::::::::: Λ_Λ . . . .: : : ::: : :: ::::::::: ::::::::::::::::::::::::::::: /:彡ミ゛ヽ;)ー、 . . .: : : :::::: ::::::::::::::::::::::::::::::::: / :::/:: ヽ、ヽ、 ::i . .:: :.: ::: . ::::::::::::::::::::::::::::::::::::::: / :::/;;: ヽ ヽ ::l . :. :. .:: : :: :: :::::::: : ::::::::::::::::::  ̄ ̄ ̄(_,ノ  ̄ ̄ ̄ヽ、_ノ ̄ ̄ ̄ ̄
完全に忘れてた...
实装のヒント?
typedef std::pair<int, float> fpair_t; class Document { int rel_level; std::vector<fpair_t> fvec; };
class Query { std::vector<Document> docs; }; class Data { std::vector<Query> queries; };
class Ranker { int wvec_size; float *wvec; void train (Data *data); float predict (Document *doc); };
データ構造 アルゴリズム
27
線形モデルの場合,重みベクトルだけでよい
各手法について 解説
以上
28
あとで何か書いて公開します...
ランキング学習手法
29
ランキング学習3つのアプローチ
• 教師あり機械学習 (識別学習) ≒
–どのような目的関数/損失関数を
–どのように最適化するのか
• ランキング学習3つのアプローチ
– (1) Pointwise手法
– (2) Pairwise手法
– (3) Listwise手法
30
ちょっと先出し
31
Training data
(𝒙11, 𝑦1
1)
…
… (𝒙2
1, 𝑦2
1)
(𝒙𝑛11, 𝑦𝑛1
1)
(𝒙12, 𝑦1
2)
…
(𝒙22, 𝑦2
2)
(𝒙𝑛22, 𝑦𝑛2
2)
(𝒙1𝑁, 𝑦1
𝑁)
…
(𝒙2𝑁, 𝑦2
𝑁)
(𝒙𝑛𝑁𝑁, 𝑦𝑛𝑁
𝑁)
𝑞1 𝑞2 𝑞𝑁
(1) Pointwise手法
単一のデータに対して損失関数を設定
32
Training data
(𝒙11, 𝑦1
1)
…
… (𝒙2
1, 𝑦2
1)
(𝒙𝑛11, 𝑦𝑛1
1)
(𝒙12, 𝑦1
2)
…
(𝒙22, 𝑦2
2)
(𝒙𝑛22, 𝑦𝑛2
2)
(𝒙1𝑁, 𝑦1
𝑁)
…
(𝒙2𝑁, 𝑦2
𝑁)
(𝒙𝑛𝑁𝑁, 𝑦𝑛𝑁
𝑁)
𝑞1 𝑞2 𝑞𝑁
(2) Pairwise手法
同一クエリのペアに対して損失関数を設定
33
Training data
(𝒙11, 𝑦1
1)
…
… (𝒙2
1, 𝑦2
1)
(𝒙𝑛11, 𝑦𝑛1
1)
(𝒙12, 𝑦1
2)
…
(𝒙22, 𝑦2
2)
(𝒙𝑛22, 𝑦𝑛2
2)
(𝒙1𝑁, 𝑦1
𝑁)
…
(𝒙2𝑁, 𝑦2
𝑁)
(𝒙𝑛𝑁𝑁, 𝑦𝑛𝑁
𝑁)
𝑞1 𝑞2 𝑞𝑁
(3) Listwise手法
同一クエリのリストに対して損失関数を設定
34
先出し終わり
35
ここまでわかればOK あとは細かい話
Pointwise手法
36
Pointwise手法の説明
• 二値分類,多値分類や回帰によって定式化
• 文書毎に損失が与えられる
• Pointwise手法
– Discriminative Model for IR
– PRank
– Regression
– ...
37
Discriminative Model for IR
38
Discriminative Model for IR [Nallapati 04]
• 適合 (+1) / 非適合 (-1) の二値分類問題として解く
–通常の二値分類アルゴリズムが利用可能
[Nallapati 04] R. Nallapati. Discriminative Models for Information Retrieval. SIGIR ‘04, (2004). 39
Training data (𝒙1
1, 𝑦1
1)
…
… (𝒙2
1, 𝑦2
1)
(𝒙𝑛11 , 𝑦𝑛1
1 )
(𝒙12, 𝑦1
2)
…
(𝒙22, 𝑦2
2)
(𝒙𝑛22 , 𝑦𝑛2
2 )
(𝒙1𝑁, 𝑦1
𝑁)
…
(𝒙2𝑁, 𝑦2
𝑁)
(𝒙𝑛𝑁𝑁 , 𝑦𝑛𝑁
𝑁 )
𝑞1 𝑞2 𝑞𝑁
適合
非適合
補足: Perceptron
• オンライン学習手法
–線形識別モデル 𝒘𝑇𝒙
–間違ったパターンに対して適切に識別できるように重みを修正
• 細かい話にご興味がある方はTokyoNLP#5の「パーセプトロンで楽しい仲間がぽぽぽぽ~ん」をご覧ください
– http://d.hatena.ne.jp/sleepy_yoshi/20110423/p1
40
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
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
PRank
43
PRank [Crammer+ 02]
• 順序を考慮した多値分類アルゴリズム – 閾値を用いて離散値を出力
• モデル – 線形モデル: 𝒘𝑇𝒙 – 適合度レベルk個の閾値を用意
𝑏1 ≤ ⋯ ≤ 𝑏𝑘−1 ≤ 𝑏𝑘 = ∞ – 𝑏𝑟−1 < 𝒘𝑇𝒙 < 𝑏𝑟 のとき,𝑟と予測
𝑦 = min𝑟∈*1,…𝑘+
*𝑟:𝒘𝑇𝒙 − 𝑏𝑟 < 0+
• 学習方法 – Perceptronと同様に1サンプルずつ学習 – 誤った予測をした場合,重み𝒘と閾値𝒃の両方を修正
*Crammer+ 02+ K. Crammer and Y. Singer. Pranking with Ranking. NIPS ‘01, (2002) 44
PRankの学習
45
1 2 3 4 5
𝑏1 𝑏2 𝑏3 𝑏4
𝑦 𝑦
𝒘𝑛𝑒𝑤 = 𝒘𝑐𝑢𝑟 + 𝜏𝑟𝑟
𝒙
𝑏𝑟𝑛𝑒𝑤 = 𝑏𝑟
𝑐𝑢𝑟 − 𝜏𝑡
-1 -1 +1 +1 𝑦𝑟:
𝜏𝑟: -1 0 +1 +1
𝑏1 𝑏2 𝑏3 𝑏4
𝑦 +1x
-1 -1
修正幅
+1
重みと閾値を修正
訓練データ (𝒙, 𝑦)
自分より 左側 -1 右側 +1
自分がいる エリアを0とする
PRank
46
PRank
47
𝑦𝑟の計算
𝜏𝑟の計算
重みと閾値の 更新
ラベルの予測
Pairwise手法
48
Pairwise手法の説明
• 文書ペアで損失を設定し,二値分類問題として解く • 一般的にPointwise手法より高精度な学習が可能とされている
• Pairwise手法 – Stochastic Pairwise Descent – RankingSVM – IR-SVM – RankBoost – RankNet – ...
49
Pairwise → 二値分類
• 同一クエリ内の文書Aと文書Bに着目 𝒘𝑇𝒙𝐴 > 𝒘𝑇𝒙𝐵 ⇒ 𝒘𝑇 𝒙𝐴 − 𝒙𝐵 > 0
𝒘𝑇𝒙𝐴 < 𝒘𝑇𝒙𝐵 ⇒ 𝒘𝑇 𝒙𝐴 − 𝒙𝐵 < 0
• 以下のようにすると,二値分類問題として解ける
𝒙𝐴𝐵 = 𝒙𝐴 − 𝒙𝐵 𝑦𝐴𝐵 = sign(𝑦𝐴 − 𝑦𝐵)
50
再掲: 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
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
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
Stochastic Pairwise Descent [Sculley 09]
• ランダムランプリングした文書ペアに対して重み更新を行う – 更新手法はいろいろ
• SVM
• Passive-Aggressive
• Margin-Perceptron
• など
• 实装: sofia-ml – http://code.google.com/p/sofia-ml/
54
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
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
6: 𝒘𝑖+1 ← 𝒘𝑖 + 𝜂 𝑦𝑡𝒙𝑡 7: 𝑖 ← 𝑖 + 1 8: ENDIF 9: ENDFOR 10: RETURN 𝒘𝑖
みんな大好きPassive-Aggressive
𝜏𝑡 = min 𝐶,ℓ𝑡𝒙𝑡
2
𝒘𝑡+1 = 𝒘𝑡 + 𝜏𝑡𝒙𝑡
56
RankingSVM
• 先ほどと同様に考えると,SVMも二値分類と同様の枠組みで解ける
– minimize 𝒘 2 + 𝐶 𝜉𝑗,𝑘𝑖
𝑗,𝑘𝑖
– s.t. sign 𝑦𝑗𝑖− 𝑦𝑘
𝑖𝒘𝑇 𝒙𝑗
𝑖− 𝒙𝑘
𝑖≥ 1 − 𝜉𝑗,𝑘
𝑖 ∀𝑖, 𝑗, 𝑘
• 最適化の方法は色々
57
Pairwise手法がやっていること
• ペア誤りの最小化 = Kendallの順位相関の最適化
(≠ 検索評価指標の最適化)
• Kendallの順位相関 – P: 順序が一致しているペアの数
Kendall =2𝑃𝑛2
− 1 =2𝑃
1/2𝑛 𝑛 − 1− 1
Pairwise損失は検索評価指標損失の 上界になってるで
[Chen+ 09] W. Chen, T.-Y. Liu, Y. Lan, Z. Ma, H. Li. Ranking Measures and Loss Functions in Learning to Rank. NIPS ’09 (2009).
58
参考: Pair 0-1 lossと他の損失関数
59 f(x)=sign(yA-yB) wT (xA-xB)
通常の二値分類と同じアナロジー
Pairwise手法そんなに悪くない? • RSVM (Pairwise) vs. ListNet, AdaRank (Listwise)
NDCG@1 NDCG@5 NDCG@10
RSVM .3627 .4695 .2279
ListNet .3754 .4747 .2303
AdaRank-NDCG .3826 .4821 .2307
AdaRank-MAP .3754 .4794 .2288
NDCG@1 NDCG@5 NDCG@10
RSVM .4096 .4143 .4439
ListNet .4002 .4170 .4440
AdaRank-NDCG .3876 .4102 .4369
AdaRank-MAP .3821 .4070 .4335
MQ2007 dataset
MQ2008 dataset
60
61
Pairwise手法の問題点
5
4
= 0
1
• ペアワイズ手法では,順序ペアの誤りのみ考慮
?
評価点数の違いを考慮すべきでは?
IR-SVM [Cao+ 06]
• (1) ペア毎に異なる損失重みを利用 – 評価指標に影響を与えるペアの誤りに対して大きな損失を与える (ヒンジロスの傾き)
• (2) クエリ毎のペアの偏りを排除 – 多くのペアを持つクエリに対して損失を小さくする
62 𝒚𝑛𝑤
𝑇𝒙𝑛
loss
PARank (手前味噌) [数原+ 11]
• 重要度をマージンに反映 • PAで更新
○
□
×
△
×
□
□ △
△
○ ○
○
×
△ r = 4 r = 3 r = 2
r = 1
○ △
□ ×
重要度 大
重要度 小
𝒘𝑇Φ(q, d)
𝜙1(𝑞, 𝑑)
𝜙2(𝑞, 𝑑)
63 [数原+ 11] 数原, 鈴木, 安田, 小池, 片岡. 評価指標をマージンに反映したオンラインランキング学習. NLP2011.
小休止
ご質問ありますか? 64
Listwiseアプローチ
65
Listwise手法の概要
• クエリ毎に損失を設定 – 検索評価指標を直接/間接的に最適化することが可能
• 一般的にPairwiseよりも精度が高いとされている
• Listwise手法 – ListNet – AdaRank – SVM_MAP – SmoothRank – ...
66
ListNet
67
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
Plackett-Luceモデル
• 順列の確率モデル: 𝑃 𝜋|𝑠 = exp(𝑠𝜋 𝑗 )
exp 𝑠𝜋 𝑘𝑛𝑘=𝑗
𝑛𝑗=1
3点
2点
1点
doc1
doc2
doc3
doc1
doc2
doc3
doc1
doc2
doc3
評価データ
順列1
順列2
=exp(3)
exp 3 + exp(2) + exp(1)⋅
exp 2
exp 2 + exp 1
⋅exp 1
exp 1
=exp(2)
exp 2 + exp(1) + exp(3)⋅
exp 1
exp 1 + exp 3
⋅exp 3
exp 3
= 𝟎. 𝟒𝟖𝟔
= 𝟎. 𝟎𝟐𝟗
69
ListNetのパラメータ学習
• 評価データとモデルの出力が近づける – Plackett-Luceモデルの分布の観点で (クロスエントロピー)
− 𝑃𝒚𝒊 𝜋 log 𝑃𝒘(𝜋)
𝜋∈Π𝑖
3点
2点
1点
doc1
doc2
doc3
評価データ モデル出力
𝒘𝑇𝒙1
𝒘𝑇𝒙2
𝒘𝑇𝒙3 類似度が最大に なるように𝒘を調整
順列の全候補って?! n文書に対してO(n!)
直感的なイメージ
70
計算の効率化
• 上位k件 (k=1) に対するPlackett-Luceモデルの分布を計算 [Cao+ 08]
– k=1の際,クエリiのクロスエントロピーの𝒘に関する微分は以下のように求まる
𝜕𝐿 𝒚𝑖 , 𝒘
𝜕𝒘
= − 𝑃𝒚𝑖 𝒙𝑗𝑖
𝒙𝑗𝑖
𝑛𝑖
𝑗=1
+1
exp 𝒘𝑇𝒙𝑗𝑖𝑛𝑖
𝑗=1
exp (𝒘𝑇𝒙𝑗𝑖)
𝑛𝑖
𝑗=1
𝒙𝑗𝑖
71
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
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
ListNet余談
• Pairwise手法であるRankNetでは,多層ニューラルネットでランキング関数を实現
–多層ニューラルネットワークで表現される非線形関数は最急降下法で解ける
• 誤差逆伝播を用いることで勾配を求めることができるため (詳しくはPRMLを!)
• けれど,ListNet論文では線形モデルを利用
– List “Net” なのに?
74
AdaRank
75
AdaRank
• 検索評価指標を直接最適化するブースティング手法
–線形モデル
• WeakRanker次第
–实装が簡単
–任意の評価指標を最適化することが可能
–性能はそれほどよくない?
76
AdaRankのイメージ
訓練データ
重み付き訓練データ
重み付き訓練データ
…
1
2
N
試行回数
g1
g2
gN
弱学習器
…
… N個の弱学習器を
重み付け和
…
…
×
g1が苦手とする クエリに有効
× ×
重み変更
ランキング関数
77
クエリ1 クエリn ...
AdaRank INPUT: (𝑞𝑖 , 𝒅𝑖 , 𝒚𝑖) ∈ 𝑫, 𝑇, 𝜂 OUTPUT: 𝑓(𝒙)
1: Initialize 𝑷1 𝑖 =1
𝑚 𝑓𝑜𝑟 𝑒𝑎𝑐ℎ 𝑖
2: FOR 𝑡 in 1 to 𝑇 3: Create weak ranker ℎ𝑡 with weighted distribution 𝑃𝑡 4: Calculate
𝛼𝑡 =1
2ln 𝑃𝑡 𝑖 *1 + 𝐸(𝜋(𝑞𝑖 ,𝑚𝑖=1 𝒅𝑖 , ℎ𝑡), 𝒚𝑖)
𝑃𝑡 𝑖 *1 − 𝐸(𝜋(𝑞𝑖 ,𝑚𝑖=1 𝒅𝑖 , ℎ𝑡), 𝒚𝑖)
5: Create
𝑓𝑡 𝒙 = 𝛼𝑘ℎ𝑘(𝒙)
𝑡
𝑘=1
6: Update 𝑷𝑡+1
𝑃𝑡+1 𝑖 =exp*−𝐸(𝜋 𝑞𝑖 , 𝒅𝑖 , 𝑓𝑡 , 𝒚𝑖)+
exp*−𝐸(𝜋 𝑞𝑗 , 𝒅𝑗 , 𝑓𝑡 , 𝒚𝑗)+𝑚𝑗=1
7: ENDFOR 8: Return 𝑓𝑡(𝒙) 78
AdaRank (解説) INPUT: (𝑞𝑖 , 𝒅𝑖 , 𝒚𝑖) ∈ 𝑫, 𝑇, 𝜂 OUTPUT: 𝑓(𝒙)
1: Initialize 𝑷1 𝑖 =1
𝑚 𝑓𝑜𝑟 𝑒𝑎𝑐ℎ 𝑖
2: FOR 𝑡 in 1 to 𝑇 3: Create weak ranker ℎ𝑡 with weighted distribution 𝑃𝑡 4: Calculate
𝛼𝑡 =1
2ln 𝑃𝑡 𝑖 *1 + 𝐸(𝜋(𝑞𝑖 ,𝑚𝑖=1 𝒅𝑖 , ℎ𝑡), 𝒚𝑖)
𝑃𝑡 𝑖 *1 − 𝐸(𝜋(𝑞𝑖 ,𝑚𝑖=1 𝒅𝑖 , ℎ𝑡), 𝒚𝑖)
5: Create
𝑓𝑡 𝒙 = 𝛼𝑘ℎ𝑘(𝒙)
𝑡
𝑘=1
6: Update 𝑷𝑡+1
𝑃𝑡+1 𝑖 =exp*−𝐸(𝜋 𝑞𝑖 , 𝒅𝑖 , 𝑓𝑡 , 𝒚𝑖)+
exp*−𝐸(𝜋 𝑞𝑗 , 𝒅𝑗 , 𝑓𝑡 , 𝒚𝑗)+𝑚𝑗=1
7: ENDFOR 8: Return 𝑓𝑡(𝒙)
クエリiの重み
WeakRankerの生成
WeakRankerの重要度
WeakRankerのクエリiに対する評価値
これまでのWeakRankerの重みづけ和
クエリの重みの更新
79
再掲: 検索ランキングの評価方法
• 正解データとランキングを比較
• 検索結果上位を重視する評価指標 – (1) 順位kに高い点数>順位kに低い点数 – (2) ランキング上位をより重視
• NDCG (Normalized Discouted Cumulative Gain)
– 上記の2つを取り入れた多段階評価指標
– 𝑦𝑞,𝑖: クエリqにおける順位iの評価点数
𝐷𝐶𝐺𝑞@𝑘 ≡ 2𝑦𝑞,𝑖 − 1
log 1 + 𝑖
𝑘
𝑖=1
𝑁𝐷𝐶𝐺𝑞@𝑘 ≡𝐷𝐶𝐺𝑞@𝑘
𝑚𝑎𝑥𝐷𝐶𝐺𝑞@𝑘
80
(0,1]に正規化
分子 分母
AdaRank: WeakRankerの生成方法
• クエリ重み付け評価指標が最大になるようなひとつのランキング素性
– 例: BM25, PageRank, etc...
maxk
𝑃𝑡 𝑖 𝐸(𝜋 𝑞𝑖 , 𝒅𝑖 , 𝑥𝑘 , 𝒚𝑖)
𝑚
𝑖=1
• この場合,最終的なランキング関数𝑓𝑡(𝒙)も線形関数
81
その他のListwise手法
82
その他のListwise手法
• 評価指標の近似を用いる手法
– SoftRank, SmoothRank
• 構造学習を用いる手法
– SVM_MAP, SVM_NDCG
• 勾配情報を利用しない方法
– NDCG-Annealing, RankPSO
83
3つの手法の違い
84
Training data
(𝒙11, 𝑦1
1)
…
… (𝒙2
1, 𝑦2
1)
(𝒙𝑛11, 𝑦𝑛1
1)
(𝒙12, 𝑦1
2)
…
(𝒙22, 𝑦2
2)
(𝒙𝑛22, 𝑦𝑛2
2)
(𝒙1𝑁, 𝑦1
𝑁)
…
(𝒙2𝑁, 𝑦2
𝑁)
(𝒙𝑛𝑁𝑁, 𝑦𝑛𝑁
𝑁)
𝑞1 𝑞2 𝑞𝑁
再掲: (1) Pointwise手法
単一のデータに対して損失関数を設定
85
Training data
(𝒙11, 𝑦1
1)
…
… (𝒙2
1, 𝑦2
1)
(𝒙𝑛11, 𝑦𝑛1
1)
(𝒙12, 𝑦1
2)
…
(𝒙22, 𝑦2
2)
(𝒙𝑛22, 𝑦𝑛2
2)
(𝒙1𝑁, 𝑦1
𝑁)
…
(𝒙2𝑁, 𝑦2
𝑁)
(𝒙𝑛𝑁𝑁, 𝑦𝑛𝑁
𝑁)
𝑞1 𝑞2 𝑞𝑁
再掲: (2) Pairwise手法
同一クエリのペアに対して損失関数を設定
86
Training data
(𝒙11, 𝑦1
1)
…
… (𝒙2
1, 𝑦2
1)
(𝒙𝑛11, 𝑦𝑛1
1)
(𝒙12, 𝑦1
2)
…
(𝒙22, 𝑦2
2)
(𝒙𝑛22, 𝑦𝑛2
2)
(𝒙1𝑁, 𝑦1
𝑁)
…
(𝒙2𝑁, 𝑦2
𝑁)
(𝒙𝑛𝑁𝑁, 𝑦𝑛𝑁
𝑁)
𝑞1 𝑞2 𝑞𝑁
再掲: (3) Listwise手法
同一クエリのリストに対して損失関数を設定
87
その他の話題
88
その他の話題
• Click-through logs
• Query-dependent ranking
• Feature selection
• Transfer learning/Domain adaptation
• Diversity/Novelty
「ことはじめ」なので割愛... 89
公開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
实装
• 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
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
情報検索の教科書
• 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
チュートリアル資料
• 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
お持ち帰りメッセージ
• Pointwise, Pairwise, Listwiseの違いは,損失関数の設定方法にあり –どのように最適化するかは規定していない
• Pairwise手法は二値分類アルゴリズムがそのまま利用可能
• 機械学習手法 (に限らず?) は論文 ≒ 实装 – ソースコードはノウハウの宝庫
96
おしまい
97