SlideShare ist ein Scribd-Unternehmen logo
1 von 97
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Was ist angesagt?

0から理解するニューラルネットアーキテクチャサーチ(NAS)
0から理解するニューラルネットアーキテクチャサーチ(NAS)0から理解するニューラルネットアーキテクチャサーチ(NAS)
0から理解するニューラルネットアーキテクチャサーチ(NAS)
MasanoriSuganuma
 
Active Learning 入門
Active Learning 入門Active Learning 入門
Active Learning 入門
Shuyo Nakatani
 

Was ist angesagt? (20)

最近のDeep Learning (NLP) 界隈におけるAttention事情
最近のDeep Learning (NLP) 界隈におけるAttention事情最近のDeep Learning (NLP) 界隈におけるAttention事情
最近のDeep Learning (NLP) 界隈におけるAttention事情
 
モデル高速化百選
モデル高速化百選モデル高速化百選
モデル高速化百選
 
劣モジュラ最適化と機械学習1章
劣モジュラ最適化と機械学習1章劣モジュラ最適化と機械学習1章
劣モジュラ最適化と機械学習1章
 
研究分野をサーベイする
研究分野をサーベイする研究分野をサーベイする
研究分野をサーベイする
 
差分プライバシーとは何か? (定義 & 解釈編)
差分プライバシーとは何か? (定義 & 解釈編)差分プライバシーとは何か? (定義 & 解釈編)
差分プライバシーとは何か? (定義 & 解釈編)
 
SSII2020 [OS2-02] 教師あり事前学習を凌駕する「弱」教師あり事前学習
SSII2020 [OS2-02] 教師あり事前学習を凌駕する「弱」教師あり事前学習SSII2020 [OS2-02] 教師あり事前学習を凌駕する「弱」教師あり事前学習
SSII2020 [OS2-02] 教師あり事前学習を凌駕する「弱」教師あり事前学習
 
ゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement Learning
ゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement Learningゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement Learning
ゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement Learning
 
PyData.Tokyo Meetup #21 講演資料「Optuna ハイパーパラメータ最適化フレームワーク」太田 健
PyData.Tokyo Meetup #21 講演資料「Optuna ハイパーパラメータ最適化フレームワーク」太田 健PyData.Tokyo Meetup #21 講演資料「Optuna ハイパーパラメータ最適化フレームワーク」太田 健
PyData.Tokyo Meetup #21 講演資料「Optuna ハイパーパラメータ最適化フレームワーク」太田 健
 
マルチモーダル深層学習の研究動向
マルチモーダル深層学習の研究動向マルチモーダル深層学習の研究動向
マルチモーダル深層学習の研究動向
 
SIGIR2011読み会 3. Learning to Rank
SIGIR2011読み会 3. Learning to RankSIGIR2011読み会 3. Learning to Rank
SIGIR2011読み会 3. Learning to Rank
 
PRML輪読#1
PRML輪読#1PRML輪読#1
PRML輪読#1
 
工学系大学4年生のための論文の読み方
工学系大学4年生のための論文の読み方工学系大学4年生のための論文の読み方
工学系大学4年生のための論文の読み方
 
0から理解するニューラルネットアーキテクチャサーチ(NAS)
0から理解するニューラルネットアーキテクチャサーチ(NAS)0から理解するニューラルネットアーキテクチャサーチ(NAS)
0から理解するニューラルネットアーキテクチャサーチ(NAS)
 
SSII2022 [SS2] 少ないデータやラベルを効率的に活用する機械学習技術 〜 足りない情報をどのように補うか?〜
SSII2022 [SS2] 少ないデータやラベルを効率的に活用する機械学習技術 〜 足りない情報をどのように補うか?〜SSII2022 [SS2] 少ないデータやラベルを効率的に活用する機械学習技術 〜 足りない情報をどのように補うか?〜
SSII2022 [SS2] 少ないデータやラベルを効率的に活用する機械学習技術 〜 足りない情報をどのように補うか?〜
 
Active Learning 入門
Active Learning 入門Active Learning 入門
Active Learning 入門
 
トピックモデルの評価指標 Coherence 研究まとめ #トピ本
トピックモデルの評価指標 Coherence 研究まとめ #トピ本トピックモデルの評価指標 Coherence 研究まとめ #トピ本
トピックモデルの評価指標 Coherence 研究まとめ #トピ本
 
最適化超入門
最適化超入門最適化超入門
最適化超入門
 
SSII2020SS: グラフデータでも深層学習 〜 Graph Neural Networks 入門 〜
SSII2020SS: グラフデータでも深層学習 〜 Graph Neural Networks 入門 〜SSII2020SS: グラフデータでも深層学習 〜 Graph Neural Networks 入門 〜
SSII2020SS: グラフデータでも深層学習 〜 Graph Neural Networks 入門 〜
 
Triplet Loss 徹底解説
Triplet Loss 徹底解説Triplet Loss 徹底解説
Triplet Loss 徹底解説
 
最適輸送の解き方
最適輸送の解き方最適輸送の解き方
最適輸送の解き方
 

Andere mochten auch

Confidence Weightedで ランク学習を実装してみた
Confidence Weightedで ランク学習を実装してみたConfidence Weightedで ランク学習を実装してみた
Confidence Weightedで ランク学習を実装してみた
tkng
 

Andere mochten auch (20)

Confidence Weightedで ランク学習を実装してみた
Confidence Weightedで ランク学習を実装してみたConfidence Weightedで ランク学習を実装してみた
Confidence Weightedで ランク学習を実装してみた
 
Learning to Rank: An Introduction to LambdaMART
Learning to Rank: An Introduction to LambdaMARTLearning to Rank: An Introduction to LambdaMART
Learning to Rank: An Introduction to LambdaMART
 
Matrix Factorizationを使った評価予測
Matrix Factorizationを使った評価予測Matrix Factorizationを使った評価予測
Matrix Factorizationを使った評価予測
 
スパース推定
スパース推定スパース推定
スパース推定
 
ゲームで切り込む暗黙知的なスキルやノウハウ
ゲームで切り込む暗黙知的なスキルやノウハウゲームで切り込む暗黙知的なスキルやノウハウ
ゲームで切り込む暗黙知的なスキルやノウハウ
 
Watson API トレーニング 20160716 rev02
Watson API トレーニング 20160716 rev02Watson API トレーニング 20160716 rev02
Watson API トレーニング 20160716 rev02
 
転置インデックスとTop k-query
転置インデックスとTop k-query転置インデックスとTop k-query
転置インデックスとTop k-query
 
How to Run Solr on Docker and Why
How to Run Solr on Docker and WhyHow to Run Solr on Docker and Why
How to Run Solr on Docker and Why
 
ディープラーニングでおそ松さんの6つ子は見分けられるのか? FIT2016
ディープラーニングでおそ松さんの6つ子は見分けられるのか? FIT2016ディープラーニングでおそ松さんの6つ子は見分けられるのか? FIT2016
ディープラーニングでおそ松さんの6つ子は見分けられるのか? FIT2016
 
リクルートにおける画像解析事例紹介
リクルートにおける画像解析事例紹介リクルートにおける画像解析事例紹介
リクルートにおける画像解析事例紹介
 
CDNのトラフィックエンジニアリング:CDNの現状とSDNの可能性
CDNのトラフィックエンジニアリング:CDNの現状とSDNの可能性CDNのトラフィックエンジニアリング:CDNの現状とSDNの可能性
CDNのトラフィックエンジニアリング:CDNの現状とSDNの可能性
 
Java 9 and Future #jjug
Java 9 and Future #jjugJava 9 and Future #jjug
Java 9 and Future #jjug
 
Java libraries you can't afford to miss
Java libraries you can't afford to missJava libraries you can't afford to miss
Java libraries you can't afford to miss
 
Jjug ccc
Jjug cccJjug ccc
Jjug ccc
 
VMの歩む道。 Dalvik、ART、そしてJava VM
VMの歩む道。 Dalvik、ART、そしてJava VMVMの歩む道。 Dalvik、ART、そしてJava VM
VMの歩む道。 Dalvik、ART、そしてJava VM
 
U-NEXT学生インターン、過激なJavaの学び方と過激な要求
U-NEXT学生インターン、過激なJavaの学び方と過激な要求U-NEXT学生インターン、過激なJavaの学び方と過激な要求
U-NEXT学生インターン、過激なJavaの学び方と過激な要求
 
Arachne Unweaved (JP)
Arachne Unweaved (JP)Arachne Unweaved (JP)
Arachne Unweaved (JP)
 
Java8移行は怖くない~エンタープライズ案件でのJava8移行事例~
Java8移行は怖くない~エンタープライズ案件でのJava8移行事例~Java8移行は怖くない~エンタープライズ案件でのJava8移行事例~
Java8移行は怖くない~エンタープライズ案件でのJava8移行事例~
 
Jjugccc2017spring-postgres-ccc_m1
Jjugccc2017spring-postgres-ccc_m1Jjugccc2017spring-postgres-ccc_m1
Jjugccc2017spring-postgres-ccc_m1
 
2017spring jjug ccc_f2
2017spring jjug ccc_f22017spring jjug ccc_f2
2017spring jjug ccc_f2
 

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

WSDM2012読み会: Learning to Rank with Multi-Aspect Relevance for Vertical Search
WSDM2012読み会: Learning to Rank with Multi-Aspect Relevance for Vertical SearchWSDM2012読み会: Learning to Rank with Multi-Aspect Relevance for Vertical Search
WSDM2012読み会: Learning to Rank with Multi-Aspect Relevance for Vertical Search
sleepy_yoshi
 
Learning to rank for IR
Learning to rank for IRLearning to rank for IR
Learning to rank for IR
takaya imai
 
Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築
Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築
Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築
Tatsuya Tojima
 

Ähnlich wie DSIRNLP#1 ランキング学習ことはじめ (20)

ACL2011読み会: Query Weighting for Ranking Model Adaptation
ACL2011読み会: Query Weighting for Ranking Model AdaptationACL2011読み会: Query Weighting for Ranking Model Adaptation
ACL2011読み会: Query Weighting for Ranking Model Adaptation
 
SIGIR2012勉強会 23 Learning to Rank
SIGIR2012勉強会 23 Learning to RankSIGIR2012勉強会 23 Learning to Rank
SIGIR2012勉強会 23 Learning to Rank
 
WSDM2012読み会: Learning to Rank with Multi-Aspect Relevance for Vertical Search
WSDM2012読み会: Learning to Rank with Multi-Aspect Relevance for Vertical SearchWSDM2012読み会: Learning to Rank with Multi-Aspect Relevance for Vertical Search
WSDM2012読み会: Learning to Rank with Multi-Aspect Relevance for Vertical Search
 
Learning to rank for IR
Learning to rank for IRLearning to rank for IR
Learning to rank for IR
 
コンピューターの整列処理におけるデータ操作の時間的共起分析
コンピューターの整列処理におけるデータ操作の時間的共起分析コンピューターの整列処理におけるデータ操作の時間的共起分析
コンピューターの整列処理におけるデータ操作の時間的共起分析
 
Pythonとdeep learningで手書き文字認識
Pythonとdeep learningで手書き文字認識Pythonとdeep learningで手書き文字認識
Pythonとdeep learningで手書き文字認識
 
20181219_全部見せます、データサイエンティストの仕事
20181219_全部見せます、データサイエンティストの仕事20181219_全部見せます、データサイエンティストの仕事
20181219_全部見せます、データサイエンティストの仕事
 
SSII2022 [TS3] コンテンツ制作を支援する機械学習技術​〜 イラストレーションやデザインの基礎から最新鋭の技術まで 〜​
SSII2022 [TS3] コンテンツ制作を支援する機械学習技術​〜 イラストレーションやデザインの基礎から最新鋭の技術まで 〜​SSII2022 [TS3] コンテンツ制作を支援する機械学習技術​〜 イラストレーションやデザインの基礎から最新鋭の技術まで 〜​
SSII2022 [TS3] コンテンツ制作を支援する機械学習技術​〜 イラストレーションやデザインの基礎から最新鋭の技術まで 〜​
 
ソーシャルデザインパターン -評判と情報収集-
ソーシャルデザインパターン -評判と情報収集-ソーシャルデザインパターン -評判と情報収集-
ソーシャルデザインパターン -評判と情報収集-
 
Gorinphp0729
Gorinphp0729Gorinphp0729
Gorinphp0729
 
Gorinphp0729
Gorinphp0729Gorinphp0729
Gorinphp0729
 
NIPS2010読み会: A New Probabilistic Model for Rank Aggregation
NIPS2010読み会: A New Probabilistic Model for Rank AggregationNIPS2010読み会: A New Probabilistic Model for Rank Aggregation
NIPS2010読み会: A New Probabilistic Model for Rank Aggregation
 
Paper Introduction "RankCompete: Simultaneous ranking and clustering of info...
Paper Introduction "RankCompete:Simultaneous ranking and clustering of info...Paper Introduction "RankCompete:Simultaneous ranking and clustering of info...
Paper Introduction "RankCompete: Simultaneous ranking and clustering of info...
 
Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築
Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築
Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築
 
SSII2021 [TS2] 深層強化学習 〜 強化学習の基礎から応用まで 〜
SSII2021 [TS2] 深層強化学習 〜 強化学習の基礎から応用まで 〜SSII2021 [TS2] 深層強化学習 〜 強化学習の基礎から応用まで 〜
SSII2021 [TS2] 深層強化学習 〜 強化学習の基礎から応用まで 〜
 
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
 
テストアプローチにデータ分析を使おう
テストアプローチにデータ分析を使おうテストアプローチにデータ分析を使おう
テストアプローチにデータ分析を使おう
 
Hive/Pigを使ったKDD'12 track2の広告クリック率予測
Hive/Pigを使ったKDD'12 track2の広告クリック率予測Hive/Pigを使ったKDD'12 track2の広告クリック率予測
Hive/Pigを使ったKDD'12 track2の広告クリック率予測
 
Information retrieval model
Information retrieval modelInformation retrieval model
Information retrieval model
 
楽天におけるビッグデータとその活用について
楽天におけるビッグデータとその活用について楽天におけるビッグデータとその活用について
楽天におけるビッグデータとその活用について
 

Mehr von sleepy_yoshi

SEXI2013読み会: Adult Query Classification for Web Search and Recommendation
SEXI2013読み会: Adult Query Classification for Web Search and RecommendationSEXI2013読み会: Adult Query Classification for Web Search and Recommendation
SEXI2013読み会: Adult Query Classification for Web Search and Recommendation
sleepy_yoshi
 

Mehr von sleepy_yoshi (20)

KDD2014勉強会: Large-Scale High-Precision Topic Modeling on Twitter
KDD2014勉強会: Large-Scale High-Precision Topic Modeling on TwitterKDD2014勉強会: Large-Scale High-Precision Topic Modeling on Twitter
KDD2014勉強会: Large-Scale High-Precision Topic Modeling on Twitter
 
KDD2013読み会: Direct Optimization of Ranking Measures
KDD2013読み会: Direct Optimization of Ranking MeasuresKDD2013読み会: Direct Optimization of Ranking Measures
KDD2013読み会: Direct Optimization of Ranking Measures
 
PRML復々習レーン#15 前回までのあらすじ
PRML復々習レーン#15 前回までのあらすじPRML復々習レーン#15 前回までのあらすじ
PRML復々習レーン#15 前回までのあらすじ
 
PRML復々習レーン#14 前回までのあらすじ
PRML復々習レーン#14 前回までのあらすじPRML復々習レーン#14 前回までのあらすじ
PRML復々習レーン#14 前回までのあらすじ
 
PRML復々習レーン#13 前回までのあらすじ
PRML復々習レーン#13 前回までのあらすじPRML復々習レーン#13 前回までのあらすじ
PRML復々習レーン#13 前回までのあらすじ
 
PRML復々習レーン#12 前回までのあらすじ
PRML復々習レーン#12 前回までのあらすじPRML復々習レーン#12 前回までのあらすじ
PRML復々習レーン#12 前回までのあらすじ
 
ICML2013読み会: Distributed training of Large-scale Logistic models
ICML2013読み会: Distributed training of Large-scale Logistic modelsICML2013読み会: Distributed training of Large-scale Logistic models
ICML2013読み会: Distributed training of Large-scale Logistic models
 
SEXI2013読み会: Adult Query Classification for Web Search and Recommendation
SEXI2013読み会: Adult Query Classification for Web Search and RecommendationSEXI2013読み会: Adult Query Classification for Web Search and Recommendation
SEXI2013読み会: Adult Query Classification for Web Search and Recommendation
 
計算論的学習理論入門 -PAC学習とかVC次元とか-
計算論的学習理論入門 -PAC学習とかVC次元とか-計算論的学習理論入門 -PAC学習とかVC次元とか-
計算論的学習理論入門 -PAC学習とかVC次元とか-
 
PRML復々習レーン#11 前回までのあらすじ
PRML復々習レーン#11 前回までのあらすじPRML復々習レーン#11 前回までのあらすじ
PRML復々習レーン#11 前回までのあらすじ
 
SMO徹底入門 - SVMをちゃんと実装する
SMO徹底入門 - SVMをちゃんと実装するSMO徹底入門 - SVMをちゃんと実装する
SMO徹底入門 - SVMをちゃんと実装する
 
PRML復々習レーン#10 前回までのあらすじ
PRML復々習レーン#10 前回までのあらすじPRML復々習レーン#10 前回までのあらすじ
PRML復々習レーン#10 前回までのあらすじ
 
PRML復々習レーン#10 7.1.3-7.1.5
PRML復々習レーン#10 7.1.3-7.1.5PRML復々習レーン#10 7.1.3-7.1.5
PRML復々習レーン#10 7.1.3-7.1.5
 
PRML復々習レーン#9 6.3-6.3.1
PRML復々習レーン#9 6.3-6.3.1PRML復々習レーン#9 6.3-6.3.1
PRML復々習レーン#9 6.3-6.3.1
 
PRML復々習レーン#9 前回までのあらすじ
PRML復々習レーン#9 前回までのあらすじPRML復々習レーン#9 前回までのあらすじ
PRML復々習レーン#9 前回までのあらすじ
 
PRML復々習レーン#7 前回までのあらすじ
PRML復々習レーン#7 前回までのあらすじPRML復々習レーン#7 前回までのあらすじ
PRML復々習レーン#7 前回までのあらすじ
 
DSIRNLP#3 LT: 辞書挟み込み型転置インデクスFIg4.5
DSIRNLP#3 LT: 辞書挟み込み型転置インデクスFIg4.5DSIRNLP#3 LT: 辞書挟み込み型転置インデクスFIg4.5
DSIRNLP#3 LT: 辞書挟み込み型転置インデクスFIg4.5
 
ICML2012読み会 Scaling Up Coordinate Descent Algorithms for Large L1 regularizat...
ICML2012読み会 Scaling Up Coordinate Descent Algorithms for Large L1 regularizat...ICML2012読み会 Scaling Up Coordinate Descent Algorithms for Large L1 regularizat...
ICML2012読み会 Scaling Up Coordinate Descent Algorithms for Large L1 regularizat...
 
PRML復々習レーン#3 3.1.3-3.1.5
PRML復々習レーン#3 3.1.3-3.1.5PRML復々習レーン#3 3.1.3-3.1.5
PRML復々習レーン#3 3.1.3-3.1.5
 
PRML復々習レーン#3 前回までのあらすじ
PRML復々習レーン#3 前回までのあらすじPRML復々習レーン#3 前回までのあらすじ
PRML復々習レーン#3 前回までのあらすじ
 

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

  • 1. DSIRNLP #1 ランキング学習ことはじめ 2011-07-23 Yoshihiko Suhara @sleepy_yoshi
  • 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
  • 16. ポイント • 現代の検索エンジンは多様な要因を用いてラ ンキングを实現 • 要因が多くなると,組み合わせの調整が困難 ⇒教師あり機械学習の枠組みで最適化 16
  • 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
  • 24. ここまでのまとめ • ランキング素性とランキング関数 • 正解データのつくり方と評価方法 – 「適合度」至上主義 • ランキング学習におけるモデルと予測 24
  • 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
  • 30. ランキング学習3つのアプローチ • 教師あり機械学習 (識別学習) ≒ – どのような目的関数/損失関数を – どのように最適化するのか • ランキング学習3つのアプローチ – (1) Pointwise手法 – (2) Pairwise手法 – (3) Listwise手法 30
  • 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
  • 37. Pointwise手法の説明 • 二値分類,多値分類や回帰によって定式化 • 文書毎に損失が与えられる • Pointwise手法 – Discriminative Model for IR – PRank – Regression – ... 37
  • 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
  • 43. PRank 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. PRank 46
  • 47. PRank ラベルの予測 ������������ の計算 ������������ の計算 重みと閾値の 更新 47
  • 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-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
  • 61. Pairwise手法の問題点 • ペアワイズ手法では,順序ペアの誤りのみ考慮 4 0 = ? 5 1 評価点数の違いを考慮すべきでは? 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.
  • 66. Listwise手法の概要 • クエリ毎に損失を設定 – 検索評価指標を直接/間接的に最適化することが 可能 • 一般的にPairwiseよりも精度が高いとされている • Listwise手法 – ListNet – AdaRank – SVM_MAP – SmoothRank – ... 66
  • 67. ListNet 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. AdaRank 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
  • 83. その他のListwise手法 • 評価指標の近似を用いる手法 – SoftRank, SmoothRank • 構造学習を用いる手法 – SVM_MAP, SVM_NDCG • 勾配情報を利用しない方法 – NDCG-Annealing, RankPSO 83
  • 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
  • 95. まとめ • 近代的な検索エンジンは多数のランキング素 性を利用している • ランキング学習は,評価データを用いて,ラン キング素性の最適な重み付けを求める方法 • 適合度の観点での基本タスクは大体終わっ た感じ 95
  • 96. お持ち帰りメッセージ • Pointwise, Pairwise, Listwiseの違いは,損失 関数の設定方法にあり – どのように最適化するかは規定していない • Pairwise手法は二値分類アルゴリズムがその まま利用可能 • 機械学習手法 (に限らず?) は論文 ≒ 实装 – ソースコードはノウハウの宝庫 96