ヤフーにおける機械学習検索ランキングの取り組み #searchtechjp

687 Views

December 05, 19

スライド概要

『Search Engineering Tech Talk 2019 Autumn』で発表した、ヤフーにおける機械学習検索ランキングの取り組みに関する紹介になります。
https://search-tech.connpass.com/event/156014/

profile-image

エンジニア・デザイナー向けのヤフー公式アカウント。イベント/登壇情報/ブログ記事など、ヤフーの技術・デザインに関わる情報を発信します。

シェア

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

ヤフーにおける機械学習 検索ランキングの取り組み Search Engineering Tech Talk 2019 Autumn 2019/12/4 ヤフー株式会社 サイエンス統括本部 鈴木 翔吾 12 . 11 2 0 1 21 .10 .

2.

自己紹介 名前 鈴木 翔吾 (Shogo Suzuki) 所属 ヤフー株式会社 サイエンス統括本部 (2017年入社) p ヤフーショッピング の検索改善に取り組んでいます p ヤフー知恵袋 興味 検索システム・ランキング学習・A/Bテスト 2 12 . 11 2 0 1 21 .10 .

3.

今日お話すること 導入:検索システムとランキング ヤフーにおける機械学習ランキング 柔軟なランキングを実現するプラグイン 3 12 . 11 2 0 1 21 .10 .

4.

今日お話すること 導入:検索システムとランキング ヤフーにおける機械学習ランキング 柔軟なランキングを実現するプラグイン 4 12 . 11 2 0 1 21 .10 .

5.

検索システムとランキング 検索キーワードに マッチする文書を取得 検索キーワード ユーザー 検索エンジン マッチした文書を ある基準でランキングする ランキングされた文書 5 12 . 11 2 0 1 21 .10 .

6.

検索結果のチューニング 例:ECサイトにおける商品検索 しょうゆ 売り上げ順に並べてみよう! 6 12 . 11 2 0 1 21 .10 .

7.

検索結果のチューニング 例:ECサイトにおける商品検索 しょうゆ 売り上げ順に並べてみよう! 「しょうゆラーメン」ばっかり 検索結果に出てきちゃった… 7 12 . 11 2 0 1 21 .10 .

8.

検索結果のチューニング 例:ECサイトにおける商品検索 しょうゆ 検索キーワードと商品名の マッチスコアで並べてみよう! 売り上げ順に並べてみよう! 「しょうゆラーメン」ばっかり 検索結果に出てきちゃった… 8 12 . 11 2 0 1 21 .10 .

9.

検索結果のチューニング 例:ECサイトにおける商品検索 9 しょうゆ 売り上げ順に並べてみよう! 検索キーワードと商品名の マッチスコアで並べてみよう! 「しょうゆラーメン」ばっかり 検索結果に出てきちゃった… しょうゆ商品は出るけど 人気無さそうな商品ばっかり… 12 . 11 2 0 1 21 .10 .

10.

検索結果のチューニング スコアの足し合わせを色々試した… 検索キーワード「しょうゆ」は綺麗になった! 10 12 . 11 2 0 1 21 .10 .

11.

検索結果のチューニング スコアの足し合わせを色々試した… 検索キーワード「しょうゆ」は綺麗になった! 「iPhone ケース」 「ワンピース 30代」 「500円」 「カレー 美味しい 安い」 「adidas」 「ルンバ980」 11 12 . 11 2 0 1 21 .10 .

12.

検索結果のチューニング スコアの足し合わせを色々試した… 検索キーワード「しょうゆ」は綺麗になった! こんなの全部 チューニングしてられるか! 「iPhone ケース」 「ワンピース 30代」 「500円」 「カレー 美味しい 安い」 「adidas」 「ルンバ980」 12 12 . 11 2 0 1 21 .10 .

13.

検索結果のチューニング スコアの足し合わせを色々試した… 検索キーワード「しょうゆ」は綺麗になった! こんなの全部 チューニングしてられるか! 「iPhone ケース」 「ワンピース 30代」 「500円」 「カレー 美味しい 安い」 機械学習モデルによる 文書のランキング 「adidas」 「ルンバ980」 13 12 . 11 2 0 1 21 .10 .

14.

機械学習ランキングモデル ランキングモデルはどのように学習するか? 検索キーワード 文書間の順序関係を学習する手法 マッチした文書 ランキング学習 ランキングモデル しょうゆ スコア付け Excellent Bad … 14 ≻ 1.2 0.9 2.4 0.3 12 . 11 2 0 1 21 .10 . f( ) > f( )と なるように学習

15.

ランキング学習についてもう少し しょうゆ Excellent Bad … ランキングモデル 15 Q. ランキング学習でのラベルって? A. 検索キーワードと文書の関連度です 例えば5段階評価 (Perfect, Excellent, Good, Fair, Bad) が 使われます Q. ラベルってどうやって付けるの? A. 「人手で付ける」「ユーザー行動ログを使う」の2択です Q. とりあえず試したいんだけど? A. p RankLib https://github.com/jobandtalent/RankLib p LightGBM https://github.com/microsoft/LightGBM/tree/master/examples/lambdarank 12 . 11 2 0 1 21 .10 .

16.

今日お話すること 導入:検索システムとランキング ヤフーにおける機械学習ランキング 柔軟なランキングを実現するプラグイン 16 12 . 11 2 0 1 21 .10 .

17.

ヤフーにおける検索ランキング 17 12 . 11 2 0 1 21 .10 .

18.

ランキングモデルができるまで 検索FE 検索リクエスト 検索エンジン ランキングモデル 検索結果 … ランキングログを送信 ・検索結果中の文書ID ・ランキング特徴量 … デプロイ 集計特徴量をフィード LightGBM 学習データ 検索FEログを送信 ・検索結果中の文書ID ・ユーザー行動 Excellent Bad … 18 12 . 11 2 0 1 21 .10 .

19.

ランキングモデルができるまで 検索FE 検索リクエスト 検索エンジン 検索FEから 検索リクエストが 飛んでくる 検索結果 … 19 ※正確には検索APIを挟んでおり クエリ解析などの処理が走るが, ここでは省略 12 . 11 2 0 1 21 .10 .

20.

ランキングモデルができるまで 検索FE 検索リクエスト 検索エンジン 検索結果 … ログをHadoopクラスタ(HDFS)に送信 Hive Tableのレコードとして格納する ランキングログを送信 ・検索結果中の文書ID ・ランキング特徴量 ※ ランキングモデルの学習データを作成するため, ユーザー行動およびランキング時に用いた特徴量を 保管しておく 検索FEログを送信 ・検索結果中の文書ID ・ユーザー行動 ※ ランキング特徴量は検索結果に含めて, FEログと一緒に送信することも考えられる. しかし, 特徴量の情報はかなり大きいので, 検索エンジンから直接HDFSに送信する方針を採用. 20 12 . 11 2 0 1 21 .10 .

21.

ランキングモデルができるまで Hive Tableに格納されたログから, HiveQL/Sparkを用いて学習データを作成 検索エンジンから送信されたランキングログ 検索FEのユーザー行動ログ リクエストID 文書ID ランキングID ユーザー行動 文書ID ランキングID ランキング特徴量 req_1 A rank_1 click A rank_1 {“f_1”: 3, ...} req_1 B rank_1 none B rank_1 {“f_1”: 2, ...} 学習データ Excellent Bad … 21 12 . 11 2 0 1 21 .10 .

22.

ランキングモデルができるまで LightGBMを用いたランキング学習により ランキングモデルを作成 ランキングモデル … objective = lambdarank LightGBM ※ データフォーマットにやや癖があります LightGBM/examples/lambdarank を参考 学習データ ※ ランキングモデルはリアルタイムに動作するため あまりにも大きいランキングモデルは 検索エンジンに乗せられません. Excellent Bad 22 12 . 11 2 0 … そのため, ハイパラチューニングは精度だけでなく モデルサイズ(木の最大本数, 深さ, 葉の数)も 気にする必要があります. 1 21 .10 .

23.

ランキングモデルができるまで 検索エンジン ランキング特徴量の一部は Hive Tableから集計して生成する バッチで集計→特徴量をフィード 23 12 . ランキングモデル デプロイ 集計特徴量をフィード 11 2 0 1 21 .10 . … ランキングプラグイン 形式に変換 (後述) ↓ ランキングモデルを 検索エンジンにデプロイ

24.

ランキングモデルができるまで (再掲) 検索FE 検索リクエスト 検索エンジン ランキングモデル 検索結果 … ランキングログを送信 ・検索結果中の文書ID ・ランキング特徴量 … デプロイ 集計特徴量をフィード LightGBM 学習データ 検索FEログを送信 ・検索結果中の文書ID ・ユーザー行動 Excellent Bad … 24 12 . 11 2 0 1 21 .10 .

25.

今日お話すること 導入:検索システムとランキング ヤフーにおける機械学習ランキング 柔軟なランキングを実現するプラグイン 25 12 . 11 2 0 1 21 .10 .

26.

独自ランキングプラグイン 各検索エンジンで ランキングプラグインは存在するが, サービスを改善していくには より柔軟なプラグインが必要だった Solr公式のランキング学習ガイド https://lucene.apache.org/solr/guide/8_2/learning-to-rank.html 社内で独自の ランキングプラグインを開発! Elasticsearch Learning to Rank https://elasticsearch-learning-to-rank.readthedocs.io/en/latest/ 26 12 . 11 2 0 1 21 .10 .

27.

DSLでランキングモデルを記述 四則演算や条件式、組み込み関数をサポート 例 “parser”: “rank-expression” “expr”: “if(f1 > 0, f2, f3) + 0.5 * if(f1 > 10, f3, f4)” f1 + 0.5 × >0 f2 27 f1 > 10 f3 f3 12 . 11 2 0 1 21 .10 f4 .

28.

DSLでランキングモデルを記述 設定の継承をサポート control_setting.json base_setting.json “parser”: “model-json”, “expr”: “control-model.json” “props”: { “prop_A”: 10, “prop_B”: 20 }, ... test_setting.json “parser”: “model-json”, “expr”: “test-model.json” 共通設定を記述 28 A/Bテストでランキングモデルの 差し替えを行いたいときは, 共通設定を継承して A/Bテスト用の設定だけを記述できる 12 . 11 2 0 1 21 .10 .

29.
[beta]
多段階ランキング
マッチした文書全てを機械学習モデルで
リアルタイムにランキングするのは重くて無理…
とはいえ, 精度の良いモデルを使いたい…
前段は軽い計算で文書をフィルタリング
後段は重量モデルでランキング!

29

light-model
12 .

heavy-model
11

2 0

1 21

.10

.

“collectPhase”: {
“parser”: “model-json”,
“expr”: “light-model.json”
},
“rerankPhases”: {
“heavyPhase”: {
“parser”: “model-json”,
“expr”: “heavy-model.json”,
“rerankCount”: <N>
}
}

30.

独自のランキング特徴量 例:統計特徴量 マッチスコア (BM25など) ランキング時に, マッチした文書集合の 特徴量統計値を計算→ランキングに利用 8.4 ・最大値 ・最小値 ・平均値 をサポート ・分散 ・percentile 7.3 12.5 6.5 30 他の商品に比べて マッチスコアが高い → 買われやすい? 12 . 11 2 0 1 21 .10 .

31.

おまけ 31 12 . 11 2 0 1 21 .10 .

32.

ヤフーにおけるランキング改善 検索モデリングチームのお仕事 複数の検索サービスを担当 web検索にも各サービスの検索結果を掲出 … p 多様な検索課題に取り組める (大変だけど) p 他サービスの成功事例や実装を輸出入しやすい 検索結果が良くなる web検索からの流入が増加 各サービスのUUに貢献できる! 32 12 . 11 2 0 1 21 .10 .

33.

ヤフーにおけるランキング改善 苦労した/しているポイントは盛りだくさん マッチングスコア課題 ユーザーアクション vs 検索結果の綺麗さ 検索キーワード「防水」 注意:この商品は防水ではありません。 iPhone ユーザーはケースやケーブル商品を買いがち → ランキングモデルもそのように学習 iPhone本体出さなくて良いのか? 33 12 . 11 2 0 1 21 検索キーワード「◯◯ 12巻」 ◯◯ 15巻 発売日:2018/12 ユーザーの意図をどうスコアに反映する? .10 .

34.

今日お話したこと 導入:検索システムとランキング ヤフーにおける機械学習ランキング 柔軟なランキングを実現するプラグイン 34 12 . 11 2 0 1 21 .10 .

35.

EOP 35 12 . 11 2 0 1 21 .10 .

36.

時間余ったら 36 12 . 11 2 0 1 21 .10 .

37.

ランキングモデルで気をつけること 高速なランキング 使ってよい特徴量 例) 「文書の新鮮さ」を 考慮したい 文書の投稿時刻と 検索リクエスト時刻の差分を ランキング特徴量に追加 検索結果を高速に返したい ランキングモデルで 良い検索結果できた! Nヵ月後… 最近検索結果が変! 季節トレンドのあるサービスなど 学習データ/予測対象で 更新する度に 検索結果が変わるぞ!? データの分布が変わっていく → モデルの更新が必要 重いランキングモデルは サービスに取り入れにくい 37 モデルの更新 12 . 11 2 0 1 21 .10 .