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

97
DSIRNLP #1 ランキング学習ことはじめ 2011-07-23 Yoshihiko Suhara @sleepy_yoshi

Upload: sleepyyoshi

Post on 25-Dec-2014

9.912 views

Category:

Technology


3 download

DESCRIPTION

DSIRNLP#1「ランキング学習ことはじめ」発表資料

TRANSCRIPT

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

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

2011-07-23

Yoshihiko Suhara

@sleepy_yoshi

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

自己紹介

• 数原 良彦 (すはら よしひこ) – @sleepy_yoshi – http://d.hatena.ne.jp/sleepy_yoshi/

• 情報検索の研究開発ぽい仕事など

– 情報検索とか機械学習とか • 特にランキング学習

• 三浦半島在住

– マグロを食べる頻度が減った – 三浦半島で地震に怯える日々

2

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

さて本題

3

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

本発表のねらい

• ねらい – ランキング学習の認知度を高める – ランキング学習をざっくり伝える – なにか实装できるようになっていただく

• 理論的妥当性の説明はほとんど無し • アルゴリズムを可能な限り紹介

• おねがい?

– 質問は適宜お気軽にどうぞ – 手法をたくさん紹介するのはイメージづけのため

• 完全に理解する必要ありません • イメージがつけば後で詳細を追える(ハズ)

4

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

おことわり

• DSIRNLPのコンセプトは「实装」

• そう気が付いたのは今朝の8時でした

5

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

言い訳

6

MLRに関する实装に踏み込んだハードな発表をお願いします

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

目次

• ランキング学習とは? (15min.) – 検索ランキングの歴史

– 検索ランキングの評価方法

– ランキング学習の概要

• ランキング学習手法の紹介 (35min.) – Pointwise手法

– Pairwise手法

– Listwise手法

• その他の話題とまとめ (10min.)

7

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

ランキング学習とは?

• Learning to rank –決まった訳語がない

• 例) ランキング学習,ランク学習とか

–順序学習 (preference learning) とは微妙に違う • ランキング学習 ⊂ 順序学習

• 教師あり機械学習の枠組みで,検索ランキングを最適化する技術 –最適化ってなによ?

8

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

ランキング学習とは?

9

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

検索エンジン

10

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

検索ランキングの歴史

• 従来は単一のランキング手法を利用

– (1) クエリ・文書関連度に基づく手法

• TF-IDF, BM25, 言語モデルなど

– (2) 文書重要度に基づく手法

• PageRank, HITS, SALSAなど

• 最近では,上記ランキング手法(+α)を統合的に扱ってランキングを实現

11

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

12

近代的なランキングの实現方法 • 多数のランキング素性を用いてランキングを实現

クエリq

クエリqを含む 文書d

𝜙1(𝑞, 𝑑)

𝜙𝑚(𝑞, 𝑑)

𝜙𝑚+1(𝑑)

𝜙𝑛(𝑑)

𝐰TΦ(𝑞, 𝑑)

・・・

・・・

検索スコア

文書の重要度 (クエリ非依存)

ランキング関数

クエリ・文書関連度 (クエリ依存)

e.g., BM25

e.g., PageRank

= Φ(𝑞, 𝑑)

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

ランキング素性の例

• 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

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

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

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

ランキング関数

• (今日は) ランキング関数はランキング素性の線形結合とする – モデルパラメータ: 𝒘

– 文書のランキング素性ベクトル: 𝒙

𝑓 𝒙;𝒘 = 𝒘𝑇𝒙

• 非線形モデルもあるが,非線形モデルであるかどうかは,ランキング学習を理解する上ではあまり重要ではない

15

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

ポイント

• 現代の検索エンジンは多様な要因を用いてランキングを实現

• 要因が多くなると,組み合わせの調整が困難

⇒教師あり機械学習の枠組みで最適化

16

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

何を正解とするか?

17

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

正解データ (適合性評価) の作成方法

• クエリに対する検索結果集合の一部に対して,「クエリが表す意図」に適合しているかという観点で点数を付与 – 評価点数は多段階 – 複数の被験者の適合度を平均

18

クエリ:goo

1

5

0

4

適合度

クエリgooに対する適合度評価

gooトップ

スパムブログ

IT記事

被験者の事前知識 に依存するため, ブレなく評価するのは 難しい...

評価点数はクエリ・文書ペアに対して付与

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

検索ランキングの評価方法

• 正解データとランキングを比較

• 検索結果上位を重視する評価指標 – (1) 順位kに高い点数>順位kに低い点数 – (2) ランキング上位をより重視

• NDCG (Normalized Discouted Cumulative Gain)

– 上記の2つを取り入れた多段階評価指標

– 𝑦𝑞,𝑖: クエリqにおける順位iの評価点数

𝐷𝐶𝐺𝑞@𝑘 ≡ 2𝑦𝑞,𝑖 − 1

log 1 + 𝑖

𝑘

𝑖=1

𝑁𝐷𝐶𝐺𝑞@𝑘 ≡𝐷𝐶𝐺𝑞@𝑘

𝑚𝑎𝑥𝐷𝐶𝐺𝑞@𝑘

19

(0,1]に正規化

分子 分母

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

ランキング学習の問題設定

20

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

分類問題におけるモデルの生成

Training data

(𝒙1, 𝑦1)

(𝒙2, 𝑦2)

(𝒙𝑁 , 𝑦𝑁)

学習 アルゴリズム モデル

未知のデータ 𝒙𝑡𝑒𝑠𝑡

予測値 𝑦

学習/生成

入力

出力

21

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

ランキング学習の訓練データ

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

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

ランキング学習におけるモデルの生成

Training data

学習 アルゴリズム モデル

未知のクエリ

予測値 𝒚 = (𝑦 1, 𝑦 1, ..., 𝑦 𝑛𝑡)

学習/生成

入力

出力

(𝒙1𝑡, ? )

(𝒙2𝑡, ? )

(𝒙𝑛𝑡𝑡, ? )

𝑞𝑡𝑒𝑠𝑡

直接順列を出力 する手法もある 23

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

ここまでのまとめ

• ランキング素性とランキング関数

• 正解データのつくり方と評価方法

– 「適合度」至上主義

• ランキング学習におけるモデルと予測

24

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

小休止

ご質問ありますか? 25

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

实装について

26

. .: : : : : : : : :: :::: :: :: : ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: . . : : : :: : : :: : ::: :: : :::: :: ::: ::: :::::::::::::::::::::::::::::::::::::: . . .... ..: : :: :: ::: :::::: :::::::::::: : ::::::::::::::::::::::::::::::::::::::::::::: Λ_Λ . . . .: : : ::: : :: ::::::::: ::::::::::::::::::::::::::::: /:彡ミ゛ヽ;)ー、 . . .: : : :::::: ::::::::::::::::::::::::::::::::: / :::/:: ヽ、ヽ、 ::i . .:: :.: ::: . ::::::::::::::::::::::::::::::::::::::: / :::/;;: ヽ ヽ ::l . :. :. .:: : :: :: :::::::: : ::::::::::::::::::  ̄ ̄ ̄(_,ノ  ̄ ̄ ̄ヽ、_ノ ̄ ̄ ̄ ̄

完全に忘れてた...

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

实装のヒント?

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

線形モデルの場合,重みベクトルだけでよい

各手法について 解説

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

以上

28

あとで何か書いて公開します...

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

ランキング学習手法

29

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

ランキング学習3つのアプローチ

• 教師あり機械学習 (識別学習) ≒

–どのような目的関数/損失関数を

–どのように最適化するのか

• ランキング学習3つのアプローチ

– (1) Pointwise手法

– (2) Pairwise手法

– (3) Listwise手法

30

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

ちょっと先出し

31

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

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

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

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

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

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

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

先出し終わり

35

ここまでわかればOK あとは細かい話

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

Pointwise手法

36

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

Pointwise手法の説明

• 二値分類,多値分類や回帰によって定式化

• 文書毎に損失が与えられる

• Pointwise手法

– Discriminative Model for IR

– PRank

– Regression

– ...

37

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

Discriminative Model for IR

38

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

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 𝑞𝑁

適合

非適合

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

補足: Perceptron

• オンライン学習手法

–線形識別モデル 𝒘𝑇𝒙

–間違ったパターンに対して適切に識別できるように重みを修正

• 細かい話にご興味がある方はTokyoNLP#5の「パーセプトロンで楽しい仲間がぽぽぽぽ~ん」をご覧ください

– http://d.hatena.ne.jp/sleepy_yoshi/20110423/p1

40

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

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

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

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

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

PRank

43

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

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

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

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とする

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

PRank

46

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

PRank

47

𝑦𝑟の計算

𝜏𝑟の計算

重みと閾値の 更新

ラベルの予測

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

Pairwise手法

48

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

Pairwise手法の説明

• 文書ペアで損失を設定し,二値分類問題として解く • 一般的にPointwise手法より高精度な学習が可能とされている

• Pairwise手法 – Stochastic Pairwise Descent – RankingSVM – IR-SVM – RankBoost – RankNet – ...

49

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

Pairwise → 二値分類

• 同一クエリ内の文書Aと文書Bに着目 𝒘𝑇𝒙𝐴 > 𝒘𝑇𝒙𝐵 ⇒ 𝒘𝑇 𝒙𝐴 − 𝒙𝐵 > 0

𝒘𝑇𝒙𝐴 < 𝒘𝑇𝒙𝐵 ⇒ 𝒘𝑇 𝒙𝐴 − 𝒙𝐵 < 0

• 以下のようにすると,二値分類問題として解ける

𝒙𝐴𝐵 = 𝒙𝐴 − 𝒙𝐵 𝑦𝐴𝐵 = sign(𝑦𝐴 − 𝑦𝐵)

50

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

再掲: 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

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

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

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

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

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

Stochastic Pairwise Descent [Sculley 09]

• ランダムランプリングした文書ペアに対して重み更新を行う – 更新手法はいろいろ

• SVM

• Passive-Aggressive

• Margin-Perceptron

• など

• 实装: sofia-ml – http://code.google.com/p/sofia-ml/

54

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

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

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

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

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

RankingSVM

• 先ほどと同様に考えると,SVMも二値分類と同様の枠組みで解ける

– minimize 𝒘 2 + 𝐶 𝜉𝑗,𝑘𝑖

𝑗,𝑘𝑖

– s.t. sign 𝑦𝑗𝑖− 𝑦𝑘

𝑖𝒘𝑇 𝒙𝑗

𝑖− 𝒙𝑘

𝑖≥ 1 − 𝜉𝑗,𝑘

𝑖 ∀𝑖, 𝑗, 𝑘

• 最適化の方法は色々

57

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

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

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

参考: Pair 0-1 lossと他の損失関数

59 f(x)=sign(yA-yB) wT (xA-xB)

通常の二値分類と同じアナロジー

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

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

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

61

Pairwise手法の問題点

5

4

= 0

1

• ペアワイズ手法では,順序ペアの誤りのみ考慮

?

評価点数の違いを考慮すべきでは?

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

IR-SVM [Cao+ 06]

• (1) ペア毎に異なる損失重みを利用 – 評価指標に影響を与えるペアの誤りに対して大きな損失を与える (ヒンジロスの傾き)

• (2) クエリ毎のペアの偏りを排除 – 多くのペアを持つクエリに対して損失を小さくする

62 𝒚𝑛𝑤

𝑇𝒙𝑛

loss

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

PARank (手前味噌) [数原+ 11]

• 重要度をマージンに反映 • PAで更新

×

×

□ △

○ ○

×

△ r = 4 r = 3 r = 2

r = 1

○ △

□ ×

重要度 大

重要度 小

𝒘𝑇Φ(q, d)

𝜙1(𝑞, 𝑑)

𝜙2(𝑞, 𝑑)

63 [数原+ 11] 数原, 鈴木, 安田, 小池, 片岡. 評価指標をマージンに反映したオンラインランキング学習. NLP2011.

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

小休止

ご質問ありますか? 64

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

Listwiseアプローチ

65

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

Listwise手法の概要

• クエリ毎に損失を設定 – 検索評価指標を直接/間接的に最適化することが可能

• 一般的にPairwiseよりも精度が高いとされている

• Listwise手法 – ListNet – AdaRank – SVM_MAP – SmoothRank – ...

66

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

ListNet

67

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

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

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

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

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

ListNetのパラメータ学習

• 評価データとモデルの出力が近づける – Plackett-Luceモデルの分布の観点で (クロスエントロピー)

− 𝑃𝒚𝒊 𝜋 log 𝑃𝒘(𝜋)

𝜋∈Π𝑖

3点

2点

1点

doc1

doc2

doc3

評価データ モデル出力

𝒘𝑇𝒙1

𝒘𝑇𝒙2

𝒘𝑇𝒙3 類似度が最大に なるように𝒘を調整

順列の全候補って?! n文書に対してO(n!)

直感的なイメージ

70

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

計算の効率化

• 上位k件 (k=1) に対するPlackett-Luceモデルの分布を計算 [Cao+ 08]

– k=1の際,クエリiのクロスエントロピーの𝒘に関する微分は以下のように求まる

𝜕𝐿 𝒚𝑖 , 𝒘

𝜕𝒘

= − 𝑃𝒚𝑖 𝒙𝑗𝑖

𝒙𝑗𝑖

𝑛𝑖

𝑗=1

+1

exp 𝒘𝑇𝒙𝑗𝑖𝑛𝑖

𝑗=1

exp (𝒘𝑇𝒙𝑗𝑖)

𝑛𝑖

𝑗=1

𝒙𝑗𝑖

71

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

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

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

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

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

ListNet余談

• Pairwise手法であるRankNetでは,多層ニューラルネットでランキング関数を实現

–多層ニューラルネットワークで表現される非線形関数は最急降下法で解ける

• 誤差逆伝播を用いることで勾配を求めることができるため (詳しくはPRMLを!)

• けれど,ListNet論文では線形モデルを利用

– List “Net” なのに?

74

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

AdaRank

75

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

AdaRank

• 検索評価指標を直接最適化するブースティング手法

–線形モデル

• WeakRanker次第

–实装が簡単

–任意の評価指標を最適化することが可能

–性能はそれほどよくない?

76

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

AdaRankのイメージ

訓練データ

重み付き訓練データ

重み付き訓練データ

N

試行回数

g1

g2

gN

弱学習器

… N個の弱学習器を

重み付け和

×

g1が苦手とする クエリに有効

× ×

重み変更

ランキング関数

77

クエリ1 クエリn ...

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

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

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

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

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

再掲: 検索ランキングの評価方法

• 正解データとランキングを比較

• 検索結果上位を重視する評価指標 – (1) 順位kに高い点数>順位kに低い点数 – (2) ランキング上位をより重視

• NDCG (Normalized Discouted Cumulative Gain)

– 上記の2つを取り入れた多段階評価指標

– 𝑦𝑞,𝑖: クエリqにおける順位iの評価点数

𝐷𝐶𝐺𝑞@𝑘 ≡ 2𝑦𝑞,𝑖 − 1

log 1 + 𝑖

𝑘

𝑖=1

𝑁𝐷𝐶𝐺𝑞@𝑘 ≡𝐷𝐶𝐺𝑞@𝑘

𝑚𝑎𝑥𝐷𝐶𝐺𝑞@𝑘

80

(0,1]に正規化

分子 分母

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

AdaRank: WeakRankerの生成方法

• クエリ重み付け評価指標が最大になるようなひとつのランキング素性

– 例: BM25, PageRank, etc...

maxk

𝑃𝑡 𝑖 𝐸(𝜋 𝑞𝑖 , 𝒅𝑖 , 𝑥𝑘 , 𝒚𝑖)

𝑚

𝑖=1

• この場合,最終的なランキング関数𝑓𝑡(𝒙)も線形関数

81

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

その他のListwise手法

82

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

その他のListwise手法

• 評価指標の近似を用いる手法

– SoftRank, SmoothRank

• 構造学習を用いる手法

– SVM_MAP, SVM_NDCG

• 勾配情報を利用しない方法

– NDCG-Annealing, RankPSO

83

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

3つの手法の違い

84

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

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

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

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

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

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

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

その他の話題

88

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

その他の話題

• Click-through logs

• Query-dependent ranking

• Feature selection

• Transfer learning/Domain adaptation

• Diversity/Novelty

「ことはじめ」なので割愛... 89

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

公開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

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

实装

• 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

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

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

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

情報検索の教科書

• 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

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

チュートリアル資料

• 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

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

まとめ

• 近代的な検索エンジンは多数のランキング素性を利用している

• ランキング学習は,評価データを用いて,ランキング素性の最適な重み付けを求める方法

• 適合度の観点での基本タスクは大体終わった感じ

95

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

お持ち帰りメッセージ

• Pointwise, Pairwise, Listwiseの違いは,損失関数の設定方法にあり –どのように最適化するかは規定していない

• Pairwise手法は二値分類アルゴリズムがそのまま利用可能

• 機械学習手法 (に限らず?) は論文 ≒ 实装 – ソースコードはノウハウの宝庫

96

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

おしまい

97