Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
ヤフーにおける機械学習検索ランキングの取り組み
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
750
RecSys 2019 論文読み会 発表資料
szdr
1
1.3k
E-Commerce検索におけるランキング研究
szdr
1
910
ランク学習と偽負例化合物を用いたバーチャルスクリーニング
szdr
0
580
Convolutional Neural NetworkとRankNetを用いた画像の順序予測
szdr
0
300
Other Decks in Technology
See All in Technology
営業オントロジーの作り方と、エージェントからの辿り方 ── ナレッジワークの現場から
kworkdev
PRO
1
200
ログラスのマルチプロダクトを 支える認証基盤 〜テナントごとに異なる統制とどう向き合うか〜
dada4386
3
220
Terraformを用いたJamf Pro構成のIaC, GitOps化への挑戦
yukun
0
110
PQC移行の今 -- IETF からみた現在地
satokan
4
650
20260929_AmazonGuardDutyの検出通知メールにAWS DevOpsAgentの調査結果を追加する
yhana
1
370
Meet AgentCore Identity Consent Portal
hironobuiga
2
120
顧客の成果創出とプロダクトの成長を 両立するためのFDE
sansantech
PRO
0
490
なぜAI任せのゲームは面白くならないのか?
hirohasuyoutube
0
310
カンファレンスに参加した後の浮遊感とセルフケア
pauli
0
230
【Findyテック文化祭ワークショップ】新卒エンジニア&採用担当と作る、 なりたい姿と今やるべき一歩
dip_tech
PRO
0
150
VS Code × GitHub Copilot での Fabric 開発
ryomaru0825
1
170
Harness Engineering on Rails
joelq
0
760
Featured
See All Featured
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.3k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Bootstrapping a Software Product
garrettdimon
PRO
306
120k
Chasing Engaging Ingredients in Design
codingconduct
0
340
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
2
2.2k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
530
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
Building Applications with DynamoDB
mza
96
7.2k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6.2k
Making the Leap to Tech Lead
cromwellryan
135
10k
Build your cross-platform service in a week with App Engine
jlugia
234
19k
Music & Morning Musume
bryan
48
7.4k
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ヵ月後… 最近検索結果が変! 季節トレンドのあるサービスなど 学習データ/予測対象で データの分布が変わっていく → モデルの更新が必要