Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ヤフーにおける機械学習検索ランキングの取り組み
Search
sz_dr
December 04, 2019
Technology
16k
10
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ヤフーにおける機械学習検索ランキングの取り組み
Search Engineering Tech Talk 2019 Autumn
https://search-tech.connpass.com/event/156014/
sz_dr
December 04, 2019
More Decks by sz_dr
See All by sz_dr
Vespaを利用したテクいベクトル検索
szdr
3
740
RecSys 2019 論文読み会 発表資料
szdr
1
1.3k
E-Commerce検索におけるランキング研究
szdr
1
900
ランク学習と偽負例化合物を用いたバーチャルスクリーニング
szdr
0
580
Convolutional Neural NetworkとRankNetを用いた画像の順序予測
szdr
0
300
Other Decks in Technology
See All in Technology
Autonomous AI Databaseサービス・アップデート(FY27)/ adb-service-update-jp-fy27
oracle4engineer
PRO
0
130
生成AIのテナント制御とシャドーMCP対策 | AIを"止めずに"、情報を守る
yukun
0
120
From Vanilla Kubernetes to a Batteries-Included Platform: Developer Experience at 1,300+ Clusters
yosshi_
0
610
Sigmaユーザーのための有用リソース一挙公開 & Sigmaで使えるMCP #sigma_ucj /useful-resources-for-sigma-computing-users-and-mcps-with-sigma
shinyaa31
0
150
リージョンの壁を越える、 ちょっと変わったAWSサービスの話
falken
PRO
0
270
Backstageでつくるセルフサービスな社内開発基盤
kikunosuke75
1
350
Benchmarking Vector Databases: pgvector vs. LanceDB
tsho
0
150
作り直せるコードは迅速に 作り直せないDBは慎重に - AI時代のプロダクトエンジニアが「判断の不可逆性」で開発速度を変える話
kinosuke01
0
270
推論の観測、できていますか? 〜 Google Cloud Gemini Enterprise Agent Platformで 3つの Gemini モデルを実測して踏んだ、評価の罠 〜
shukob
PRO
0
160
【視聴者参加型!】AWSセキュリティアンチパターンクイズ
syoshie
0
450
現場に行くだけでは足りない——プロダクトエンジニアが業務の流れを捉える観点と、その鍛え方
takumiengineering
0
320
Beyond the Hype: Practical AI for Your Oracle Database with MCP
thatjeffsmith
1
280
Featured
See All Featured
Mind Mapping
helmedeiros
1
350
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.5k
It's Worth the Effort
3n
188
29k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.9k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
510
The Language of Interfaces
destraynor
162
27k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.7k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
570
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
770
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Google's AI Overviews - The New Search
badams
0
1.6k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
520
Transcript
12 . 11 2 0 1 21 .10 . ヤフー株式会社
サイエンス統括本部 鈴木 翔吾 ヤフーにおける機械学習 検索ランキングの取り組み Search Engineering Tech Talk 2019 Autumn 2019/12/4
12 . 11 2 0 1 21 .10 . 自己紹介
2 名前 鈴木 翔吾 (Shogo Suzuki) 所属 ヤフー株式会社 サイエンス統括本部 (2017年入社) p ヤフーショッピング p ヤフー知恵袋 の検索改善に取り組んでいます 興味 検索システム・ランキング学習・A/Bテスト
12 . 11 2 0 1 21 .10 . 今日お話すること
3 導入:検索システムとランキング ヤフーにおける機械学習ランキング 柔軟なランキングを実現するプラグイン
12 . 11 2 0 1 21 .10 . 今日お話すること
4 導入:検索システムとランキング ヤフーにおける機械学習ランキング 柔軟なランキングを実現するプラグイン
12 . 11 2 0 1 21 .10 . 検索システムとランキング
5 検索キーワード ユーザー 検索エンジン 検索キーワードに マッチする文書を取得 マッチした文書を ある基準でランキングする ランキングされた文書
12 . 11 2 0 1 21 .10 . 検索結果のチューニング
6 例:ECサイトにおける商品検索 しょうゆ 売り上げ順に並べてみよう!
12 . 11 2 0 1 21 .10 . 検索結果のチューニング
7 例:ECサイトにおける商品検索 しょうゆ 売り上げ順に並べてみよう! 「しょうゆラーメン」ばっかり 検索結果に出てきちゃった…
12 . 11 2 0 1 21 .10 . 検索結果のチューニング
8 例:ECサイトにおける商品検索 しょうゆ 売り上げ順に並べてみよう! 「しょうゆラーメン」ばっかり 検索結果に出てきちゃった… 検索キーワードと商品名の マッチスコアで並べてみよう!
12 . 11 2 0 1 21 .10 . 検索結果のチューニング
9 例:ECサイトにおける商品検索 しょうゆ 売り上げ順に並べてみよう! 「しょうゆラーメン」ばっかり 検索結果に出てきちゃった… 検索キーワードと商品名の マッチスコアで並べてみよう! しょうゆ商品は出るけど 人気無さそうな商品ばっかり…
12 . 11 2 0 1 21 .10 . 検索結果のチューニング
10 スコアの足し合わせを色々試した… 検索キーワード「しょうゆ」は綺麗になった!
12 . 11 2 0 1 21 .10 . 検索結果のチューニング
11 スコアの足し合わせを色々試した… 検索キーワード「しょうゆ」は綺麗になった! 「iPhone ケース」 「ワンピース 30代」 「500円」 「カレー 美味しい 安い」 「adidas」 「ルンバ980」
12 . 11 2 0 1 21 .10 . 検索結果のチューニング
12 スコアの足し合わせを色々試した… 検索キーワード「しょうゆ」は綺麗になった! 「iPhone ケース」 「ワンピース 30代」 「500円」 「カレー 美味しい 安い」 「adidas」 「ルンバ980」 こんなの全部 チューニングしてられるか!
12 . 11 2 0 1 21 .10 . 検索結果のチューニング
13 スコアの足し合わせを色々試した… 検索キーワード「しょうゆ」は綺麗になった! 「iPhone ケース」 「ワンピース 30代」 「500円」 「カレー 美味しい 安い」 「adidas」 「ルンバ980」 機械学習モデルによる 文書のランキング こんなの全部 チューニングしてられるか!
12 . 11 2 0 1 21 .10 . 機械学習ランキングモデル
14 検索キーワード マッチした文書 ランキングモデル 1.2 0.9 2.4 0.3 スコア付け ランキングモデルはどのように学習するか? 文書間の順序関係を学習する手法 ランキング学習 しょうゆ … Excellent Bad ≻ f( ) > f( )と なるように学習
12 . 11 2 0 1 21 .10 . ランキング学習についてもう少し
15 しょうゆ … Excellent Bad 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 導入:検索システムとランキング ヤフーにおける機械学習ランキング 柔軟なランキングを実現するプラグイン
12 . 11 2 0 1 21 .10 . ヤフーにおける検索ランキング
17
12 . 11 2 0 1 21 .10 . ランキングモデルができるまで
18 検索FE … 検索リクエスト 検索結果 検索FEログを送信 ・検索結果中の文書ID ・ユーザー行動 ランキングログを送信 ・検索結果中の文書ID ・ランキング特徴量 学習データ … Excellent Bad LightGBM ランキングモデル … デプロイ 集計特徴量をフィード 検索エンジン
12 . 11 2 0 1 21 .10 . ランキングモデルができるまで
19 検索FE … 検索リクエスト 検索結果 検索FEから 検索リクエストが 飛んでくる ※正確には検索APIを挟んでおり クエリ解析などの処理が走るが, ここでは省略 検索エンジン
12 . 11 2 0 1 21 .10 . ランキングモデルができるまで
20 検索FE … 検索リクエスト 検索結果 検索FEログを送信 ・検索結果中の文書ID ・ユーザー行動 ランキングログを送信 ・検索結果中の文書ID ・ランキング特徴量 ログをHadoopクラスタ(HDFS)に送信 Hive Tableのレコードとして格納する ※ ランキングモデルの学習データを作成するため, ユーザー行動およびランキング時に用いた特徴量を 保管しておく ※ ランキング特徴量は検索結果に含めて, FEログと一緒に送信することも考えられる. しかし, 特徴量の情報はかなり大きいので, 検索エンジンから直接HDFSに送信する方針を採用. 検索エンジン
12 . 11 2 0 1 21 .10 . ランキングモデルができるまで
21 学習データ … Excellent Bad Hive Tableに格納されたログから, HiveQL/Sparkを用いて学習データを作成 リクエストID 文書ID ランキングID ユーザー行動 req_1 A rank_1 click req_1 B rank_1 none 文書ID ランキングID ランキング特徴量 A rank_1 {“f_1”: 3, ...} B rank_1 {“f_1”: 2, ...} 検索FEのユーザー行動ログ 検索エンジンから送信されたランキングログ
12 . 11 2 0 1 21 .10 . ランキングモデルができるまで
22 学習データ … Excellent Bad LightGBM ランキングモデル … LightGBMを用いたランキング学習により ランキングモデルを作成 objective = lambdarank ※ データフォーマットにやや癖があります LightGBM/examples/lambdarank を参考 ※ ランキングモデルはリアルタイムに動作するため あまりにも大きいランキングモデルは 検索エンジンに乗せられません. そのため, ハイパラチューニングは精度だけでなく モデルサイズ(木の最大本数, 深さ, 葉の数)も 気にする必要があります.
12 . 11 2 0 1 21 .10 . ランキングモデルができるまで
23 ランキングモデル … デプロイ 集計特徴量をフィード ランキングプラグイン 形式に変換 (後述) ↓ ランキングモデルを 検索エンジンにデプロイ ランキング特徴量の一部は Hive Tableから集計して生成する バッチで集計→特徴量をフィード 検索エンジン
12 . 11 2 0 1 21 .10 . ランキングモデルができるまで
(再掲) 24 検索FE … 検索リクエスト 検索結果 検索FEログを送信 ・検索結果中の文書ID ・ユーザー行動 ランキングログを送信 ・検索結果中の文書ID ・ランキング特徴量 学習データ … Excellent Bad LightGBM ランキングモデル … デプロイ 集計特徴量をフィード 検索エンジン
12 . 11 2 0 1 21 .10 . 今日お話すること
25 導入:検索システムとランキング ヤフーにおける機械学習ランキング 柔軟なランキングを実現するプラグイン
12 . 11 2 0 1 21 .10 . 独自ランキングプラグイン
26 https://lucene.apache.org/solr/guide/8_2/learning-to-rank.html Solr公式のランキング学習ガイド Elasticsearch Learning to Rank https://elasticsearch-learning-to-rank.readthedocs.io/en/latest/ 各検索エンジンで ランキングプラグインは存在するが, サービスを改善していくには より柔軟なプラグインが必要だった 社内で独自の ランキングプラグインを開発!
12 . 11 2 0 1 21 .10 . DSLでランキングモデルを記述
27 四則演算や条件式、組み込み関数をサポート “parser”: “rank-expression” “expr”: “if(f1 > 0, f2, f3) + 0.5 * if(f1 > 10, f3, f4)” 例 f1 f2 f3 + 0.5 × f1 f3 f4 > 0 > 10
12 . 11 2 0 1 21 .10 . DSLでランキングモデルを記述
28 設定の継承をサポート “props”: { “prop_A”: 10, “prop_B”: 20 }, ... base_setting.json control_setting.json “parser”: “model-json”, “expr”: “control-model.json” test_setting.json “parser”: “model-json”, “expr”: “test-model.json” 共通設定を記述 A/Bテストでランキングモデルの 差し替えを行いたいときは, 共通設定を継承して A/Bテスト用の設定だけを記述できる
12 . 11 2 0 1 21 .10 . 多段階ランキング
29 マッチした文書全てを機械学習モデルで リアルタイムにランキングするのは重くて無理… とはいえ, 精度の良いモデルを使いたい… 前段は軽い計算で文書をフィルタリング 後段は重量モデルでランキング! light-model heavy-model “collectPhase”: { “parser”: “model-json”, “expr”: “light-model.json” }, “rerankPhases”: { “heavyPhase”: { “parser”: “model-json”, “expr”: “heavy-model.json”, “rerankCount”: <N> } }
12 . 11 2 0 1 21 .10 . 独自のランキング特徴量
30 例:統計特徴量 マッチスコア (BM25など) 8.4 7.3 12.5 6.5 他の商品に比べて マッチスコアが高い → 買われやすい? ランキング時に, マッチした文書集合の 特徴量統計値を計算→ランキングに利用 ・最大値 ・最小値 ・平均値 ・分散 ・percentile をサポート
12 . 11 2 0 1 21 .10 . 31
おまけ
12 . 11 2 0 1 21 .10 . ヤフーにおけるランキング改善
32 検索モデリングチームのお仕事 複数の検索サービスを担当 p 多様な検索課題に取り組める (大変だけど) p 他サービスの成功事例や実装を輸出入しやすい web検索にも各サービスの検索結果を掲出 検索結果が良くなる web検索からの流入が増加 各サービスのUUに貢献できる! …
12 . 11 2 0 1 21 .10 . ヤフーにおけるランキング改善
33 苦労した/しているポイントは盛りだくさん ユーザーアクション vs 検索結果の綺麗さ iPhone iPhone本体出さなくて良いのか? ユーザーはケースやケーブル商品を買いがち → ランキングモデルもそのように学習 マッチングスコア課題 検索キーワード「防水」 注意:この商品は防水ではありません。 検索キーワード「◯◯ 12巻」 ◯◯ 15巻 発売日:2018/12 ユーザーの意図をどうスコアに反映する?
12 . 11 2 0 1 21 .10 . 今日お話したこと
34 導入:検索システムとランキング ヤフーにおける機械学習ランキング 柔軟なランキングを実現するプラグイン
12 . 11 2 0 1 21 .10 . 35
EOP
12 . 11 2 0 1 21 .10 . 36
時間余ったら
12 . 11 2 0 1 21 .10 . ランキングモデルで気をつけること
37 高速なランキング 使ってよい特徴量 検索結果を高速に返したい 重いランキングモデルは サービスに取り入れにくい 例) 「文書の新鮮さ」を 考慮したい 文書の投稿時刻と 検索リクエスト時刻の差分を ランキング特徴量に追加 更新する度に 検索結果が変わるぞ!? モデルの更新 ランキングモデルで 良い検索結果できた! Nヵ月後… 最近検索結果が変! 季節トレンドのあるサービスなど 学習データ/予測対象で データの分布が変わっていく → モデルの更新が必要