DSIRNLP #1
ランキング学習ことはじめ
     2011-07-23
   Yoshihiko Suhara
    @sleepy_yoshi
自己紹介
• 数原 良彦 (すはら よしひこ)
 – @sleepy_yoshi
 – http://d.hatena.ne.jp/sleepy_yoshi/

• 情報検索の研究開発ぽい仕事など
 – 情報検索とか機械学習とか
    • 特にランキング学習


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

                                         2
さて本題



       3
本発表のねらい
• ねらい
 – ランキング学習の認知度を高める
 – ランキング学習をざっくり伝える
 – なにか实装できるようになっていただく
   • 理論的妥当性の説明はほとんど無し
   • アルゴリズムを可能な限り紹介


• おねがい?
 – 質問は適宜お気軽にどうぞ
 – 手法をたくさん紹介するのはイメージづけのため
   • 完全に理解する必要ありません
   • イメージがつけば後で詳細を追える(ハズ)


                            4
おことわり
• DSIRNLPのコンセプトは「实装」
• そう気が付いたのは今朝の8時でした




                       5
言い訳




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


                  6
目次
• ランキング学習とは? (15min.)
  – 検索ランキングの歴史
  – 検索ランキングの評価方法
  – ランキング学習の概要


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

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

                          7
ランキング学習とは?
• Learning to rank
  – 決まった訳語がない
     • 例) ランキング学習,ランク学習とか
  – 順序学習 (preference learning) とは微妙に違う
     • ランキング学習 ⊂ 順序学習


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

                                         8
ランキング学習とは?



             9
検索エンジン




         10
検索ランキングの歴史
• 従来は単一のランキング手法を利用
 – (1) クエリ・文書関連度に基づく手法
  • TF-IDF, BM25, 言語モデルなど
 – (2) 文書重要度に基づく手法
  • PageRank, HITS, SALSAなど


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

                              11
近代的なランキングの实現方法
• 多数のランキング素性を用いてランキングを实現
                            クエリ・文書関連度
                              (クエリ依存)
            1 (, )
            e.g., BM25
 クエリq           ・
                ・
                ・
             (, )              ランキング関数

                                 T Φ(, )
            +1 ()
           e.g., PageRank
                ・
                ・               検索スコア
                ・
クエリqを含む       ()
文書d                         文書の重要度
                            (クエリ非依存)
           = Φ(, )                           12
ランキング素性の例
クエリ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
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
正解データ (適合性評価) の作成方法
• クエリに対する検索結果集合の一部に対して,「クエリが
  表す意図」に適合しているかという観点で点数を付与
  – 評価点数は多段階
  – 複数の被験者の適合度を平均

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

     gooトップ       5
 1                          被験者の事前知識
                            に依存するため,
                            ブレなく評価するのは
 2   スパムブログ       0
                            難しい...

 3   IT記事
     評価点数はクエリ・文書ペアに対して付与
              4
                                   18
検索ランキングの評価方法
• 正解データとランキングを比較

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

• NDCG (Normalized Discouted Cumulative Gain)
   – 上記の2つを取り入れた多段階評価指標
   – , : クエリqにおける順位iの評価点数
                                        
                                               2, − 1
                       @ ≡
                                              log 1 + 
                                       =1

                                           @
                      @ ≡                         (0,1]に正規化
                                         @

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



           20
分類問題におけるモデルの生成
           (1 , 1 )
Training   (2 , 2 )
  data                      未知のデータ
               …
           ( ,  )     
                                    入力


  学習
アルゴリズム                        モデル

                学習/生成
                                    出力

                             予測値         21
ランキング学習の訓練データ
   素性や評価はクエリ毎に与えられる

                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
ランキング学習におけるモデルの生成
                             未知のクエリ
                               
                                    
                                (1 , ? )
Training                            
                                (2 , ? )
  data




                                    …
                                     
                                ( , ? )

                                          入力


  学習
アルゴリズム                         モデル

               学習/生成
                                          出力
           直接順列を出力
           する手法もある     予測値  = (1 , 1 , ...,  )
                                                  23
ここまでのまとめ
• ランキング素性とランキング関数

• 正解データのつくり方と評価方法
 – 「適合度」至上主義


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



                      24
小休止




ご質問ありますか?   25
实装について
. .: : : : : : : : :: :::: :: :: : :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
           . . : : : :: : : :: : ::: :: : :::: :: ::: ::: ::::::::::::::::::::::::::::::::::::::
        . . .... ..: : :: :: ::: :::::: :::::::::::: : :::::::::::::::::::::::::::::::::::::::::::::
                    Λ_Λ . . . .: : : ::: : :: ::::::::: :::::::::::::::::::::::::::::
                 /:彡ミ゛ヽ;)ー、 . . .: : : :::::: :::::::::::::::::::::::::::::::::
               / :::/:: ヽ、ヽ、 ::i . .:: :.: ::: . :::::::::::::::::::::::::::::::::::::::
             / :::/;;: ヽ ヽ ::l . :. :. .:: : :: :: :::::::: : ::::::::::::::::::
 ̄ ̄ ̄(_,ノ  ̄ ̄ ̄ヽ、_ノ ̄ ̄ ̄ ̄

              完全に忘れてた...                                                                               26
实装のヒント?
         データ構造                                          アルゴリズム
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
ランキング学習手法


            29
ランキング学習3つのアプローチ
• 教師あり機械学習 (識別学習) ≒
 – どのような目的関数/損失関数を
 – どのように最適化するのか


• ランキング学習3つのアプローチ
 – (1) Pointwise手法
 – (2) Pairwise手法
 – (3) Listwise手法

                      30
ちょっと先出し


          31
(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
(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
(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
先出し終わり
ここまでわかればOK
あとは細かい話


             35
Pointwise手法


              36
Pointwise手法の説明
• 二値分類,多値分類や回帰によって定式化
• 文書毎に損失が与えられる

• Pointwise手法
  – Discriminative Model for IR
  – PRank
  – Regression
  – ...

                                  37
Discriminative Model for IR



                              38
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).
補足: 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 *:   −  < 0+
                        ∈*1,…+


• 学習方法
  – Perceptronと同様に1サンプルずつ学習
  – 誤った予測をした場合,重みと閾値の両方を修正

*Crammer+ 02+ K. Crammer and Y. Singer. Pranking with Ranking. NIPS ‘01, (2002)   44
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
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
                          ℓ
             = min ,
6:       +1 ←  + 2 
                           
7:        ← +1 =1  +  
                + 
                                        みんな大好きPassive-Aggressive
8: ENDIF
9: ENDFOR
10: RETURN                                                               56
RankingSVM
• 先ほどと同様に考えると,SVMも二値分類と
  同様の枠組みで解ける
                     2                           
 – minimize            +       , ,
                                                               
 – s.t. sign  −           −            ≥ 1 − , ∀, , 



• 最適化の方法は色々


                                                                                       57
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).
参考: Pair 0-1 lossと他の損失関数
通常の二値分類と同じアナロジー




        f(x)=sign(yA-yB) wT (xA-xB)   59
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
Pairwise手法の問題点
• ペアワイズ手法では,順序ペアの誤りのみ考慮



       4       0

           =       ?
       5       1




  評価点数の違いを考慮すべきでは?
                          61
IR-SVM [Cao+ 06]
• (1) ペア毎に異なる損失重みを利用
 – 評価指標に影響を与えるペアの誤りに対して大きな
   損失を与える (ヒンジロスの傾き)
• (2) クエリ毎のペアの偏りを排除
 – 多くのペアを持つクエリに対して損失を小さくする

              loss




                        
                                       62
PARank (手前味噌) [数原+ 11]
  • 重要度をマージンに反映
  • PAで更新
        2 (, )
                                             ○
                       重要度                                      ○   r=4
                                     △
                        小                                       △   r=3
                                                 ○
                                     △       ○                  □   r=2
                             □                     ○            ×   r=1
                                         △
                                             重要度
                             □           △    大
                                 □
                        ×                                        Φ(q, d)
                         ×
                             ×

                                                 1 (, )

                                                                               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(  )
  • 順列の確率モデル:  | =          =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
ListNetのパラメータ学習
 • 評価データとモデルの出力が近づける
   – Plackett-Luceモデルの分布の観点で (クロスエントロピー)
               −              log  ()
                   ∈Π

直感的なイメージ
            評価データ      順列の全候補って?! モデル出力

     doc1
                       n文書に対してO(n!)   1
               3点
     doc2      2点                                      2
                            類似度が最大に
     doc3
               1点           なるようにを調整                 3



                                                                 70
計算の効率化
• 上位k件 (k=1) に対するPlackett-Luceモデル
  の分布を計算 [Cao+ 08]
 – k=1の際,クエリiのクロスエントロピーのに関す
   る微分は以下のように求まる

   , 
      
                                                                             
                                                        1                                                
           =−                      +                      
                                                                                        exp(  ) 
                  =1                               =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   ...   クエリn

 1            ×                   g1


       重み付き訓練データ                       g1が苦手とする
                           重み変更
                                        クエリに有効
 2      ×            ×            g2




                                  …
 …




                                        N個の弱学習器を
              …




                                           重み付け和
 …




       重み付き訓練データ
                                  …
 N                                gN
                                        ランキング関数

                                                   77
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
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
再掲: 検索ランキングの評価方法
• 正解データとランキングを比較

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

• NDCG (Normalized Discouted Cumulative Gain)
   – 上記の2つを取り入れた多段階評価指標
   – , : クエリqにおける順位iの評価点数
                                        
                                               2, − 1
                       @ ≡
                                              log 1 + 
                                       =1

                                           @
                      @ ≡                         (0,1]に正規化
                                         @

                                                                          80
AdaRank: WeakRankerの生成方法
• クエリ重み付け評価指標が最大になるようなひとつ
  のランキング素性
 – 例: BM25, PageRank, etc...
                

          max            (  ,  ,  ,  )
            k
                =1


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



                                                                   81
その他のListwise手法


                 82
その他のListwise手法
• 評価指標の近似を用いる手法
 – SoftRank, SmoothRank


• 構造学習を用いる手法
 – SVM_MAP, SVM_NDCG


• 勾配情報を利用しない方法
 – NDCG-Annealing, RankPSO

                             83
3つの手法の違い


           84
再掲: (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
再掲: (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
再掲: (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
その他の話題
•   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

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

  • 1.
    DSIRNLP #1 ランキング学習ことはじめ 2011-07-23 Yoshihiko Suhara @sleepy_yoshi
  • 2.
    自己紹介 • 数原 良彦(すはら よしひこ) – @sleepy_yoshi – http://d.hatena.ne.jp/sleepy_yoshi/ • 情報検索の研究開発ぽい仕事など – 情報検索とか機械学習とか • 特にランキング学習 • 三浦半島在住 – マグロを食べる頻度が減った  – 三浦半島で地震に怯える日々  2
  • 3.
  • 4.
    本発表のねらい • ねらい –ランキング学習の認知度を高める – ランキング学習をざっくり伝える – なにか实装できるようになっていただく • 理論的妥当性の説明はほとんど無し • アルゴリズムを可能な限り紹介 • おねがい? – 質問は適宜お気軽にどうぞ – 手法をたくさん紹介するのはイメージづけのため • 完全に理解する必要ありません • イメージがつけば後で詳細を追える(ハズ) 4
  • 5.
  • 6.
  • 7.
    目次 • ランキング学習とは? (15min.) – 検索ランキングの歴史 – 検索ランキングの評価方法 – ランキング学習の概要 • ランキング学習手法の紹介 (35min.) – Pointwise手法 – Pairwise手法 – Listwise手法 • その他の話題とまとめ (10min.) 7
  • 8.
    ランキング学習とは? • Learning torank – 決まった訳語がない • 例) ランキング学習,ランク学習とか – 順序学習 (preference learning) とは微妙に違う • ランキング学習 ⊂ 順序学習 • 教師あり機械学習の枠組みで,検索ランキン グを最適化する技術 – 最適化ってなによ? 8
  • 9.
  • 10.
  • 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
  • 16.
    ポイント • 現代の検索エンジンは多様な要因を用いてラ ンキングを实現 • 要因が多くなると,組み合わせの調整が困難 ⇒教師あり機械学習の枠組みで最適化 16
  • 17.
  • 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
  • 20.
  • 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
  • 24.
    ここまでのまとめ • ランキング素性とランキング関数 • 正解データのつくり方と評価方法 – 「適合度」至上主義 • ランキング学習におけるモデルと予測 24
  • 25.
  • 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
  • 28.
  • 29.
  • 30.
    ランキング学習3つのアプローチ • 教師あり機械学習 (識別学習)≒ – どのような目的関数/損失関数を – どのように最適化するのか • ランキング学習3つのアプローチ – (1) Pointwise手法 – (2) Pairwise手法 – (3) Listwise手法 30
  • 31.
  • 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
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
    Discriminative Model forIR [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
  • 43.
  • 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
  • 46.
  • 47.
    PRank ラベルの予測 の計算 の計算 重みと閾値の 更新 47
  • 48.
  • 49.
    Pairwise手法の説明 • 文書ペアで損失を設定し,二値分類問題として解く • 一般的にPointwise手法より高精度な学習が可能とさ れている • Pairwise手法 – Stochastic Pairwise Descent – RankingSVM – IR-SVM – RankBoost – RankNet – ... 49
  • 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-1lossと他の損失関数 通常の二値分類と同じアナロジー 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
  • 61.
  • 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.
  • 64.
  • 65.
  • 66.
    Listwise手法の概要 • クエリ毎に損失を設定 – 検索評価指標を直接/間接的に最適化することが 可能 • 一般的にPairwiseよりも精度が高いとされている • Listwise手法 – ListNet – AdaRank – SVM_MAP – SmoothRank – ... 66
  • 67.
  • 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
  • 74.
    ListNet余談 • Pairwise手法であるRankNetでは,多層ニュー ラルネットでランキング関数を实現 – 多層ニューラルネットワークで表現される非線形 関数は最急降下法で解ける • 誤差逆伝播を用いることで勾配を求めることができる ため (詳しくはPRMLを!) • けれど,ListNet論文では線形モデルを利用 – List “Net” なのに? 74
  • 75.
  • 76.
    AdaRank • 検索評価指標を直接最適化するブースティン グ手法 – 線形モデル • WeakRanker次第 – 实装が簡単  – 任意の評価指標を最適化することが可能  – 性能はそれほどよくない?  76
  • 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
  • 82.
  • 83.
    その他のListwise手法 • 評価指標の近似を用いる手法 –SoftRank, SmoothRank • 構造学習を用いる手法 – SVM_MAP, SVM_NDCG • 勾配情報を利用しない方法 – NDCG-Annealing, RankPSO 83
  • 84.
  • 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
  • 88.
  • 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 YanLiu. 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
  • 96.
    お持ち帰りメッセージ • Pointwise, Pairwise,Listwiseの違いは,損失 関数の設定方法にあり – どのように最適化するかは規定していない • Pairwise手法は二値分類アルゴリズムがその まま利用可能 • 機械学習手法 (に限らず?) は論文 ≒ 实装 – ソースコードはノウハウの宝庫 96
  • 97.