Slide 1

Slide 1 text

© 2024 Cookpad Inc. クックパッドが取り組む レシピレコメンドの面白さと難しさ クックパッド株式会社 重久直輝・深澤祐援

Slide 2

Slide 2 text

© 2024 Cookpad Inc. 2 自己紹介 Yusuke Fukasawa (@fufufukakaka) 自然言語処理・レコメンドをやっ てきている 好きなモデルは RecVAE 趣味 ● テニス ● ポケモンの対戦(レート1800)と その動画解析 Naoki Shigehisa (@naoki_shigehisa) レコメンドに関わる サービス開発エンジニア メインはバックエンド 趣味... 日本酒・猫

Slide 3

Slide 3 text

本日お話すること・お話しないこと © 2024 Cookpad Inc. 3 ● クックパッドが取り組んできたレシピレコメンドの紹介 ● それを踏まえて、今後どのようなチャレンジをしようとしているか ● モデルの技術的な話というよりは気持ちの話が多いです

Slide 4

Slide 4 text

クックパッドとは © 2024 Cookpad Inc. 4

Slide 5

Slide 5 text

クックパッドとは © 2024 Cookpad Inc. 5 ● 料理レシピの投稿・検索サービス

Slide 6

Slide 6 text

クックパッドとは © 2024 Cookpad Inc. 6 ● レシピ以外にも作った料理をおすすめする「つくれぽ」や、急上昇中のハッシュ タグの紹介など、毎日の料理を楽しみにするための機能を提供

Slide 7

Slide 7 text

クックパッドが取り組んできたレコメンド © 2024 Cookpad Inc. 7

Slide 8

Slide 8 text

あなたのタグ (2022/3 ~ 2022/8) © 2024 Cookpad Inc. 8 ● ユーザー毎に表示するコンテンツを出し 分けた最初の施策 ● 自分が投稿したハッシュタグや閲覧した ハッシュタグを表示 ● TOP画面では従来のコンテンツに比ベて タップ率が高くなったが、ハッシュタグの 中でレシピに到達したユーザーは少な かった

Slide 9

Slide 9 text

テーマ (2022/11 ~ 2023/6) © 2024 Cookpad Inc. 9 ● ユーザーの長期的な興味を「ワインに合う」や「鶏 むね最強」などのテーマとして捉えて、TOP画面で レコメンドする試み ● ハッシュタグでは中身のレシピが少なく入れ替わり も起こりにくかったため、テーマというさらに大きい 枠を作成 ● テーマを経由する形で計算しているが主体はレシ ピとしてレコメンド

Slide 10

Slide 10 text

テーマのレコメンド方法 © 2024 Cookpad Inc. 10 ● ユーザーの行動の種類毎にテーマを SQL・MLで予測して表示 ○ レシピ閲覧 ○ 保存 ○ つくれぽ ○ レシピ投稿

Slide 11

Slide 11 text

テーマのレコメンド方法 © 2024 Cookpad Inc. 11 # ワインのお供に レシピ つくれぽ ハッシュタグ テーマ 人手で関連付け ● 保存したり閲覧したりしたレシピに関連するテーマを集計してレコメンド

Slide 12

Slide 12 text

TOPでテーマをレコメンドした結果 © 2024 Cookpad Inc. 12 ● ヘビーユーザーのアプリへの訪問頻度が上昇していた ○ 元々ある程度高頻度にきていたユーザーの訪問頻度が さらに上がった ● ただ、これは元々クックパッドをたくさん使ってくれていた 一部のユーザーの変化 ○ クックパッドを使う大多数のユーザーはここを素通り ■ 使うのは全体の3~4%くらい ○ この変化をもっと広げたい

Slide 13

Slide 13 text

テーマのレコメンドを検索結果へ展開 (2023/6) © 2024 Cookpad Inc. 13 ● クックパッドの中で最も利用されている検索結果 画面で同様のレコメンドを展開 ● TOP画面で表示していたテーマと同じテーマを利用 ● その中で、検索クエリにヒットするレシピを表示

Slide 14

Slide 14 text

テーマのレコメンドを検索結果へ展開した結果 © 2024 Cookpad Inc. 14 ● うまくいかず、2週間の検証期間で撤退 ● 検索結果でのタップ率は変化しなかった ● 人気順ではタップ後のレシピ保存率が大きく 低下していた

Slide 15

Slide 15 text

© 2024 Cookpad Inc. 15 ユーザにレシピ(ハッシュタグ・テーマ)を 推薦してきたが、なかなかうまくいかない...

Slide 16

Slide 16 text

© 2024 Cookpad Inc. 16 なぜ?

Slide 17

Slide 17 text

なぜうまくいかなかったのか? © 2024 Cookpad Inc. 17

Slide 18

Slide 18 text

© 2024 Cookpad Inc. 18 なぜレコメンドはこれまでうまくいかなかったのか? ● 要因1: クックパッドはユーザが昨日作った料理が何だったのか、正確に 把握することができない ○ EC サイトにおける “購入” のような明確なコンバージョンが 存在しない ■ 「料理を作った」瞬間に相当するものがない ○ 毎回クックパッドのレシピから料理を作っているとは限らない 料理 完成! つくれぽ 投稿 クックパッドを 開く レシピ検索・ 人気順を見る レシピ詳細 を開く そのまま滞在 or スクショや印刷・覚えて閉じている

Slide 19

Slide 19 text

© 2024 Cookpad Inc. 19 なぜレコメンドはこれまでうまくいかなかったのか? ● 要因2: 大体のユーザはクックパッドに特定の目的を持ってレシピを探しにきてい る ○ 「夕飯のためになすと挽き肉で今すぐ作れるレシピを探してます!」 ○ 探している過程でたまたま出会うことはあっても、最初からいきなり回遊目 的で覗くことはあんまりない ○ 検索から行動が始まることがほとんど

Slide 20

Slide 20 text

© 2024 Cookpad Inc. 20 なぜレコメンドはこれまでうまくいかなかったのか? 「作った」を正確に 捉えるイベントがない ユーザは “今” 作ることがで きる料理を探している レコメンドの質...「作った!」は正確に捉えない限り本質的な改善は難しい ユーザのニーズ... 「今作りたい!」が分かる前に推薦を出しても厳しそう

Slide 21

Slide 21 text

© 2024 Cookpad Inc. 21 より適したレコメンドの形があるのかも? → 似た構造のサービスを参考にしよう

Slide 22

Slide 22 text

参考にできそうなサービスを探す © 2024 Cookpad Inc. 22

Slide 23

Slide 23 text

© 2024 Cookpad Inc. 23 別サービスの調査 ● 候補1: YouTube ○ レコメンドがホーム画面やその他色々なところ で中心的な役割を果たしている ○ ★ ユーザは YouTube 以外で YouTube の動画 を見ることはない→在庫把握ができる ○ ★ 「今すぐこの動画を見たい!」という目的で YouTube に訪れ ることはあまり多くなさそう。そもそも回遊目的のユーザのほう が多いのではないか

Slide 24

Slide 24 text

© 2024 Cookpad Inc. 24 別サービスの調査 ● 候補2: Netflix ○ やはりコンバージョンイベントは曖昧 ○ 「見たことがある映画」というのは Netflix だけでは完結しない情報な ので、クックパッドと類似性がある ■ 一方で Netflix オリジナルコンテンツは他では見れないので完全 に把握できる ○ ランキング機能はない ○ ★ 「今すぐこの映画を見たい!」というユーザと「今日何見ようかな」 というユーザが同じくらいいそう ■ レコメンドで回遊を促す時間的余裕がいくらかありそう

Slide 25

Slide 25 text

© 2024 Cookpad Inc. 25 別サービスの調査 ● 候補3: Amazon ○ “購入” という明確なコンバージョンがある ○ 「何買おうかな」というよりは「Amazonであれ買えるかな」と探しに来るユーザ の方が多そう? ■ 自分は回遊行動を起点に Amazon を開くことはあまりない ○ Amazon はユーザがどんなアイテムを持っているのか、については全く知り得 ない ■ かつては掃除機を買ったら掃除機をレコメンドされた ■ クックパッドで言う「ハンバーグを作った人にハンバーグを推薦」 → クックパッドにとって Amazon のレコメンド戦略は参考にできるかも?

Slide 26

Slide 26 text

Amazon のレコメンドを調べる © 2024 Cookpad Inc. 26

Slide 27

Slide 27 text

© 2024 Cookpad Inc. 27 Amazon のレコメンドを調べる ● ホーム画面 ○ 改めて見てみると、ホーム画面には 殆どレコメンドがない ■ 再購入を促す動線 ■ 直近検索していてまだ購入が発生していない閲覧履歴から のおすすめ ○ セレンディピティを狙った推薦は全く出てこない ■ 全てユーザの行動を起点とした説明可能性が高い推薦に なっている

Slide 28

Slide 28 text

© 2024 Cookpad Inc. 28 Amazon のレコメンドを調べる ● 検索画面 ○ 「garmin」で検索した時の様子 ○ ここではまだ特に推薦的な要素はない ○ “関連商品を検索” でクエリ拡張の候補 が出ているくらい ○ ここでわかるのは恐らくかなり整理された Knowledge Base の充 実度合い

Slide 29

Slide 29 text

© 2024 Cookpad Inc. 29 Amazon のレコメンドを調べる ● アイテムの詳細画面 ○ まず上部に推薦が出ている ■ スポーツ用のスマートウォッチを調べている時にスピーカーが出 てくるのは明らかにセレンディピティを狙っている ○ スクロールするとどんどん推薦セクションが出てくる ■ 「よく一緒に購入されている商品」 ■ 「この商品に関連する商品」 ■ 「他のお客様がよく閲覧している商品」 ○ ユーザの目的がはっきりした後で 回遊行動を促す推薦が出現している

Slide 30

Slide 30 text

クックパッドへの応用 © 2024 Cookpad Inc. 30

Slide 31

Slide 31 text

© 2024 Cookpad Inc. 31 クックパッドにおけるレコメンド戦略を考える ● Amazon でのレコメンドまとめ ○ ホーム画面でのレコメンド … 説明可能性が高いもののみ ○ 検索画面でのレコメンド … Knowledge Base に基づいた 外部知識による拡張 ○ アイテム詳細画面でのレコメンド … セレンディピティを狙ったもの が登場 ● ユーザの目的: 「探しているもの」がわかるまでは控えめな推薦 ● ユーザが所持している食材、昨日作ったレシピのことは わからないが、「探しているもの」がわかった後でそれに 基づく推薦をするならユーザの気持ちに寄り添えるのでは

Slide 32

Slide 32 text

© 2024 Cookpad Inc. 32 ホーム画面でレコメンドするイメージ ナスと挽き肉が あるな... これで夕食なに 作ろうかな あなたの昨日までの レシピ閲覧傾向から こんなレシピが おすすめですよ!! カレー、ラーメン、パスタ ... う〜ん、美味しそうだ けど今それらを 作りたいわけじゃ ないんだよな

Slide 33

Slide 33 text

© 2024 Cookpad Inc. 33 検索行動後に推薦するイメージ ナスと挽き肉が あるな... これで夕食なに 作ろうかな もしかしていま ナスと挽き肉で レシピ探してます!? それならこんな料理も 作れますよ! ナスと挽き肉で 検索っと... う〜ん悩むな マ!? 発想になかったけど、よく 見たら 私の好きな味付け・ 得意な調理方法で こんなレシピも 作れるんだ...! BIG TY

Slide 34

Slide 34 text

© 2024 Cookpad Inc. 34 クックパッドで検索行動後に推薦するとしたら ● ★ Sequential Recommend ○ 回遊行動をしている最中にオンラインの推薦API に 問い合わせて「次に見てくれそうなアイテム」を表示する ● Item-to-Item ○ レシピの詳細ページで、別の関連レシピを表示する ○ バッチだけ or バッチ + sequential recommend などで リランク のどちらもあり得る

Slide 35

Slide 35 text

© 2024 Cookpad Inc. 35 Sequential Recommend ● Session Based Recommendation とも呼ばれる ○ Transformers4Rec などが有名 ● id 配列を入力とし、次に出現しそうな id 候補を出力する ○ なので、コールドユーザにも推薦できる ● 次の単語を予測するモデルとほぼ同じ ● 自分で実装することもできるが、フレームワークを使うと 簡単に実装できる ○ RecBole など ○ API 実装もそこまで複雑じゃない https://qiita.com/fufufukakaka/items/e03df3a7299b2b8f99cf

Slide 36

Slide 36 text

© 2024 Cookpad Inc. 36 Sequential Recommend: 実験結果 ● 検索行動のセッション中で、次に閲覧するレシピを予測する問題 として学習させた際の結果 CORE↓ BERT4Rec SASRec CORE Recall@10 0.421 0.435 0.542 Precision@10 0.042 0.043 0.054 NDCG@10 0.278 0.285 0.382 MRR@10 0.233 0.238 0.332 ItemCoverage@10 0.236 0.338 0.429 AveragePopularity@10 295.2 423.76 329.28 また、BERT4Rec, SASRec に比べると CORE は少し学習時間が短かった

Slide 37

Slide 37 text

© 2024 Cookpad Inc. 37 具体例: Sequential Recommend ナシゴレン ガパオライス ガーリック ライス 卵、トマトと長 ネギの 中華スープ あるユーザの閲覧履歴 画像は wikimedia より引用 このあと何を推薦しようかな ...

Slide 38

Slide 38 text

© 2024 Cookpad Inc. 38 具体例: Sequential Recommend モデル(CORE)の推薦結果 1. ごぼうと長ネギの中華スープ 2. 春雨と長ネギの中華スープ 3. もやしとわかめのスープ 4. ウインナーと卵の炒飯 5. 簡単本格ガパオライス ● 直前が長ネギと卵のスープだったことを受けて 長ネギのスープが2つ推薦されている! ● ガパオライス、ナシゴレンといったご飯物があった からか、中華スープのニュアンスを混ぜて炒飯が推薦 にある! ● ガパオライスの推薦も出ているぞ

Slide 39

Slide 39 text

© 2024 Cookpad Inc. 39 クックパッドで Sequential Recommend を使うとしたら 検索結果画面に差し込む ある程度閲覧行動を行っているユーザに 通常の検索結果の途中に 推薦結果を差し込む

Slide 40

Slide 40 text

© 2024 Cookpad Inc. 40 クックパッドで Sequential Recommend を使うとしたら item2item レコメンドと組み合わせる sequential recommend の推薦結果を factorization machine などでリランキング or MF や item2vec で候補を用意したあとに sequential recommend でリランキング

Slide 41

Slide 41 text

まとめ © 2024 Cookpad Inc. 41

Slide 42

Slide 42 text

© 2024 Cookpad Inc. 42 本日のまとめ ● クックパッドではこれまで様々な観点に基づくレコメンドを試してきた ● 一方で、サービス特性を踏まえると相性の悪い・良いレコメンドがあることもわ かってきた ● 他サービスを参考にして、ユーザの目的がはっきりしてから推薦を行うことが 有効なのでは、という仮説を立てた ● Sequential Recommend に目をつけて実験を少しずつ進めている

Slide 43

Slide 43 text

テーマのレコメンドの結果 © 2024 Cookpad Inc. 43 ● 保存ベース、つくれぽベース、レシピ閲覧ベースはタップ率や再訪率にほとんど差 がなかった ● レシピ投稿ベースは他3つに比べてややタップ率や再訪率が高かったが、掲出可能 なユーザー数が極端に少ない

Slide 44

Slide 44 text

なぜ大きな差が生まれなかったのか © 2024 Cookpad Inc. 44 ● つくれぽや保存は人によって基準が違う...?(=ノイズが多い) ○ つくれぽ ■ 作った ■ 写真が綺麗に撮れた ■ 美味しかった ○ 保存 ■ 美味しそう ■ 今度作ろう ■ 作った ■ 作って美味しかった ● レシピ投稿は「自分が好き」なレシピ以外に、「クックパッドで見てもらえそう」なレシ ピが投稿されることが多い