[論文メモ] COSMO: A large-scale e-commerce common sense knowledge generation and serving system at Amazon
SIGMOD/PODS '24
LLMを利用し購入の意図に注目した推薦システムの提案
オンラインのeコマースにおいてユーザー行動の意図を理解することは非常に重要。
認知科学の観点から意図は行動を起こせる精神状態で、行動は意図の結果らしい。
例えば「結婚式に出席するために服を買う」という場合「結婚式に出席するため」という意図が「服を買う」という行動を合理化・説明している。
こういったユーザー行動の背後にある意図を正確に捉えることができればより良い推薦や検索が提供できる。
しかし、こういった意図は明示的に表現されず常識が必要になり抽出が難しい。
既存研究ではLLMの知識を活用して、ユーザーの購入や同時購入の意図をLLMに「質問する」ことで生成する試みがされている。
低コストで高精度な意図の抽出ができるがいくつかの問題点もある。
不正確だったり、「ユーザーの好みだったから」といった役に立たなかったりする意図を抽出することがある。
また2カテゴリについてのラベリングで実験しておりカテゴリやユーザー増加時の対応が難しく、業界レベルでのデータでは処理においてスケーラビリティや処理コストの問題もある。
これらを解決するためにeコマースに特化した常識知識を効率的に生成するCOSMOを提案
手法
事前知識
図2にCOSMOのためのインストラクションデータ生成のパイプラインを示す。
ユーザー行動をLLMに入力し知識を抽出、フィルタリングしアノテーションしてインストラクションデータを作成する。

ユーザー行動
毎日何百万ものユーザーがeコマースプラットフォーム上で行動する。
この行動の背後にある意図を理解することでより良いショッピング体験を提供できる。
本研究では強い意図がある「検索購入(search-buy)」と「同時購入(co-buy)」という2つの典型的なユーザー行動に注目する。
検索購入行動:クエリと購入商品ペア で定義され、ユーザーが短いセッション内でクエリをクリックし最終的に購入
同時購入行動:同時に購入された2つの商品ペアで定義され、各商品
は主要ドメイン(カテゴリ)
に分類される
常識知識
既存手法に倣ってLLMを用いてユーザー行動を知識の候補として説明させる。
知識は関係と目的
を合わせた3つの組
で表現する。
例えば、「顧客がカメラケースとスクリーン保護ガラスを一緒に購入したのは、それがカメラを保護する能力を持っているから」といった場合、「カメラを保護する能力を持っている」が目的で、関係はcapableOfになる。
ここでは表2に示す関係タイプと目的タイプを扱う。

知識生成
ユーザー行動のサンプリング
ユーザーの行動にはランダムな行動といったノイズも多く含まれる。
膨大なユーザー行動データの中から代表的かつ多様なデータをサンプリングするためにまず商品サンプリングをして次に検索購入や同時購入といった行動ペアをサンプリングする。
商品サンプリングではAmazonの人気のカテゴリ内で多くのユーザーが頻繁に購入する「トップティア商品」(高い購入率やクリック率のある商品)を選択する。
さらに商品タイプごとに傘や椅子など詳細に分類して商品が何であるかをより正確に定義する。
同時購入ペアサンプリングではペアのうち最低どちらかが対象としている商品セットに入っているペアをサンプリング。
またペアそれぞれの商品タイプからランダム購入かを判断・排除する。
検索購入に購入率とクリック率の両方に閾値を設定してクエリと購入された商品をサンプリング。
ここではクエリの具体性に注目する。
そもそもの目的が検索クエリと商品との間に存在する意味的ギャップを埋めること。
曖昧で広範囲を示すクエリについてその知識を生成するのはユーザーの需要を明確化し価値がある。
逆に具体的なクエリの場合は現行の検索エンジンである程度十分。
そこでAmazon Searchの社内モデルでクエリの具体性スコアを計算しサンプリングを行う。
QAプロンプトによる知識生成
LLMは大量の知識をそのパラメータに保持しているためQA形式のプロンプトを用いることでユーザー行動に関連する知識を生成できる。
例えば、「ある顧客がiPhoneを購入した理由はそれが〇〇であるから」という購入行動を与えることでLLMはiPhoneに関連する機能や特性に関する意図知識を生成できる。
事前の実験でしっかりとしたシナリオやタスク指示をした場合、コンテキストに応じた応答が得意だと判明。
図3のようなプロンプトでユーザーの検索行動の意図を言語化する。

プロンプトエンジニアリングの一環で回答のリストを生成させるために最後に1.をつける。
MetaのOPT175bとOPT30bを利用した。GPUはA100を16台。
知識の洗練
LLMで生成下だけだと品質に問題があるのでフィルタリングし品質の向上を図る
粗いフィルタリング
ルールベースと類似性ベースの2つの手法を使ってノイズを含む不完全な生成物をフィルタリングする。
ルールベースフィルタリング
NLTK(Natural Language Toolkit)の文分割ツールを使用して生成物から最初の文を抽出しGPT-2を用いてperplexityスコアを計算。
閾値を調整して不完全な文を削除。
また、クエリや商品タイプ、商品タイトルとまったく同じ生成物(または編集距離が閾値以下の生成物)を直接フィルタリング。
さらに、「同じ理由で使用される」や「衣類と一緒に使用される」といった、あまり意味のない知識に関しては頻度とエントロピーを組み合わせて判断し削除する。
類似性フィルタリング
ルールベースで除去しきれなかった類似ケースを除去するためeコマースコーパスで事前学習された独自の言語モデルを使用し埋め込みを生成。
埋め込みのコサイン類似度を計算し閾値でこれらも削除。
ヒューマンインザループによるアノテーション
人間のフィードバックを取り入れて知識の品質をさらに向上させる。
課題は膨大な量の知識候補とコストのバランスを取ること。
均一サンプリングだとロングテール部分の知識に対する予測性能が悪くなる可能性がある。
そこで知識の頻度ログと商品の人気度に基づいて以下の重み付けを行う。

は生成された知識の頻度、
は人気度関数。
人気度はクエリ-商品相互作用グラフにおけるクエリの次数や商品同時購入グラフにおける商品の次数によって定義。
これにより人気のない商品とのバランスを取る。
2つのユーザー行動に対して知識候補をそれぞれ15,000サンプル収集。
表3がデータの統計。

データのプライバシーの問題から専門のデータアノテーションベンダーに依頼。
既存研究では妥当性(その知識が正確かどうか)と典型性(その知識がどれだけ一般的か)の2つのアノテーションだったがこれだと不足が多い。
例えばApple Watchの購入理由で典型的なのは「スマートウォッチ」であることだが、「時間を確認するため」というのは一般的でない。
アノテーターの負担も考えて以下の5つの質問にした。
- 説明は完全な文か?
- 説明は関連しているか?
- 説明は情報を提供しているか?
- 説明は妥当か?
- 説明は典型的か?
2人の異なるアノテーターによって「はい/いいえ/わからない」とラベル付けされ、意見の不一致については3人目が最終的な確認を行いラベリング。
このデータを用いて分類モデルを学習しフィルタリング後のデータすべてにスコアをつける。
DeBERTa-largeと社内の言語モデルをファインチューニングし人間の判断を全体に適用。
妥当性スコアが0.5を超える知識候補を採用する。
これらの知識精練プロセスを経て高品質なeコマース用の知識を低コストで作成する。
インストラクションチューニングされたCOSMO-LMモデル
表4にアノテーション結果を示す。

検索購入のうち35%が典型的でありインストラクションデータとして直接利用できる。
同時購入の典型性率は非常に低い。
これはLLMは同時購入された商品のうち片方の知識を生成することが多く共通の理由を考慮して生成することが少ないため。
典型的な知識生成だけでなく妥当性と典型性の予測能力、検索結果の関連性や同時購入の理由などいろいろなeコマースに関するタスクを処理できるようしたい。
そのために18の製品カテゴリ、15の関係タイプ、5種類のタスクをカバーするインストラクションデータを収集。
詳しい構成は図4参照

またモデルを異なるフォーマットに対して堅牢にするために異なるテンプレートを設計しインストラクションと入力出力ペアを言語化。
例えば、「検索クエリ」や「ユーザー入力」、「ユーザーが検索した:」などの接頭辞を追加。
LLaMA 7b、13bといったパブリックなモデルをベースとして微調整した。
評価と応用
インストラクションチューニングされたCOSMO-LMモデルを使用して3つのeコマースの下流アプリケーションについて評価。
検索関連性
COSMO-LMを使用して検索クエリと商品との関連性を向上させる。
例えば「冬用の服」というクエリは、ユーザーが暖かい服を求めていることを暗示している
データセットはAmazonのKDD Cup 2022データセットを使用し検索関連性を測定する問題をクラス分類問題とする。
クエリと商品を入力としてExact(完全一致)、Substitute(代替品)、Complement(補完品)、Irrelevant(無関係)の4クラスに分類する。
また汎化の確認のためにus、ca、uk、inの異なる4市場から類似データを独自に収集。
各データセットの統計は表5の通り。

評価指標はMacro F1とMicro F1。
Macro F1はクラスごとに平等に評価するため、少数クラスが多い場合に強調される。クラスのバランスに敏感。
Micro F1は全体のパフォーマンスを評価し、クラスのサイズに比例して影響を与える。多数クラスに依存する傾向がある。
クラス不均衡を考慮してMacro F1とMicro F1で評価してるが特にMacro F1を重視しているとのこと。
Bi-encoderとCross-encoderという2つのアーキテクチャをベースラインとして採用。
図6にそれぞれのアーキテクチャを示す。

Bi-encoderはクエリと商品の表現を結合し、関連性を予測する。
Cross-encoderはクエリや商品タイトル、説明などの全ての関連情報を統合して予測する。
セッションベースのレコメンデーション
COSMO-LMを使用してセッションベースのレコメンデーション(SBR)を強化する。
SBRはユーザーの複数のアイテムとのインタラクションから次にクリックまたは購入するアイテムを予測するタスク。
衣料品と電子機器の2カテゴリーの1週間分のセッションデータを収集した。
セッションの平均長さは20分以内に制限され、ユーザーが頻繁にアイテムをインタラクションしたデータを対象にした。
データの統計は表7を参照。

ベースラインとしてFPMC、GRU4Rec、STAMP、SR-GNNなどの時系列モデルやグラフベースのモデルを採用。
初期実験でGCE-GNNが様々なセッションベースのレコメンデーションデータセットで強力なパフォーマンスを発揮。
なのでGCE-GNNモデルをベースに、COSMO-LMから生成された検索クエリ関連の知識を利用し検索意図に対応したレコメンデーションモデル「COSMO-GNN」を作成。
評価指標は以下の3つ
Hits@10:レコメンデーションの結果の上位10件に少なくとも1つの正解を含むかで0 or 1
NDCG@10:関連性の高いものが上位に出るかどうかの指標で0~1
MRR@10:最初に現れた正解の順位の逆数で0~1
実験結果は表8の通り。

COSMO-GNNは他のペースラインモデルに比べ高い性能を発揮し特にHits@10およびNDCG@10で大幅な改善を示した。
電子機器カテゴリではより複雑で多様な検索シーケンスが含まれているため衣料品カテゴリよりも大きな改善が見られた(Hits@10)。
これは電子機器ではユーザーが具体的なニーズに到達するために多くの背景知識を必要とするためと考えられる。
Hits@10は改善してMRR@10は低下したというのが少々気になる。
検索ナビゲーション
COSMOは従来の製品中心の検索から顧客の意図や行動に基づいた検索ができる。
顧客の意図や行動に密接に対応し製品の分類と顧客の言語との間のギャップを埋める。
図8に例を示す。
階層構造に整理され粗い概念(キャンプ)からより具体的なもの(冬キャンプ)へと展開され、さらに意図概念が商品概念(冬用ブーツ等)にリンクされる。

COSMOはマルチレイヤーかつ動的なナビゲーションシステムを提供。
図9に検索ナビゲーションを示す。

広範な概念の解釈:曖昧なクエリに対してもユーザーの意図を深く理解し広範なユーザー意図に対応
商品タイプおよびサブタイプの発見:クエリに基づいて特定の商品タイプやサブタイプを提示し顧客の需要により近い商品を発見
属性ベースの絞り込み:検索結果を特定の属性に基づいて絞り込み各顧客に合わせた検索体験を提供
実験はAmazonでのオンラインA/Bテスト。Amazonの米国トラフィックのおおよそ10%らしい。
結果、売上が0.7%(数億ドル)増加し、ナビゲーションのエンゲージメント率も8%向上。
これらの成果は図9にある僅かなものから得られた。
この結果から、COSMO-LMをさらに広範に適用することで、年間の売上高を大幅に向上させる可能性がある。
所感
AmazonのLLMを利用した推薦システムということでちょっと話題になっていたので読んだ。
LLMを使って単純な検索-購入履歴からその理由(一般常識的な)を取り出すというのは面白い(既存でもあるが)。
LLMがある程度の常識を持っているので、それを利用してただのデータから常識を要求される情報を取り出すということが色々なタスクで試されそう。
ただラベリングが必要なのは少々いただけないが。フィルタリングに関してもなかなか大変そうではある。


