TIGER:Semantic IDを生成して商品を検索する推薦モデル
NeurIPS 2023のTIGERを、RQ-VAEによるSemantic ID、自己回帰検索、Amazon Reviewsでの評価、コールドスタートと推論コストの限界から解説します。
Xでシェア目次
AI利用の明示
本記事の構成と本文は、OpenAIのコーディングエージェント「Codex」が作成しました。数値と手法は原論文を確認して記載していますが、利用時は原文も確認してください。
推薦システムの候補検索では、ユーザーと商品をベクトルに変換し、近似最近傍探索(ANN)で商品を探す構成が一般的です。Shashank Rajputらの「Recommender Systems with Generative Retrieval」は、商品を短いSemantic IDで表し、ユーザーの行動履歴から次に選ばれる商品のIDを生成するTIGER(Transformer Index for GEnerative Recommenders)を提案しました。対象はarXiv v3(2023年11月3日改訂)のNeurIPS 2023論文です。
この論文の価値は、商品ごとの埋め込みとANN indexを使う候補検索を、内容に基づく離散IDとTransformerの自己回帰予測に置き換え、そのIDの共有を新規商品への推薦にも利用した点にあります。ただし、インデックスが完全に消えるわけではありません。生成したIDから商品を引く対応表は必要です。
何を生成するのか
従来型の候補検索では、ユーザー履歴から得たベクトルと各商品のベクトルを比較します。TIGERは、まず商品内容からSemantic IDを作り、履歴中の商品もこのID列へ変換します。Transformerのencoder-decoderが次商品のIDを左から右へ予測し、生成結果を商品へ引き戻します。
商品内容 → Sentence-T5 → 768次元vector → RQ-VAE → Semantic ID
↓
ユーザーID + 履歴商品のSemantic ID列 → Transformer → 次商品のSemantic ID
↓
lookup table → 推薦商品
たとえば似た靴を(5, 25, 55)と(5, 25, 78)のように表せれば、前半のトークンを共有できます。無関係な連番の商品IDと違い、内容の近い商品から学んだ情報を共有できる、というのが設計上の狙いです。Semantic IDは自然言語の文字列ではなく、各段のコードブックから選んだ整数の組です。
Semantic IDの作り方:残差を順に量子化する
論文の実験では、商品タイトル、価格、ブランド、カテゴリを文にして事前学習済みSentence-T5へ入力し、768次元の内容ベクトルを得ます。RQ-VAEのエンコーダーがこれを32次元の潜在ベクトルへ変換し、3段のresidual quantizationでトークンを選びます。各段は256個のベクトルを持つ別々のコードブックです。
1段目は潜在ベクトルに最も近いcodewordを選びます。2段目は、元のベクトルから1段目のcodewordを引いた残差を量子化します。3段目も同様です。粗い特徴を前段、細かい差を後段で表す構造なので、同じprefixを持つ商品は意味的に近くなりやすいと考えられます。Beauty datasetの可視化でも、1番目のトークンは大まかなカテゴリ、2番目はその内側の細分化と対応しました。ただし、これは実験上の定性的観察であり、あらゆる商品カテゴリで厳密な分類木になる保証ではありません。
3トークンだけでは複数の商品が同じIDになることがあります。TIGERは衝突した商品へ4番目の識別トークンを追加し、衝突しない商品にも0を付けます。したがって、実験で使うIDは「3個の意味的なトークン+1個の衝突回避トークン」からなる4トークンです。最後のトークンまで意味階層として解釈するのは誤りです。IDを一意にするため、商品IDからSemantic ID、Semantic IDから商品IDへの対応表を保持します。原論文の手法と実装設定
履歴から次のIDを生成する
ユーザーが触れた商品のIDを時系列に連結し、先頭にユーザーIDのトークンを置きます。生のユーザーIDはhashing trickで2,000種類のトークンへ写します。エンコーダーがこの履歴を読み、デコーダーが次商品の4トークンを自己回帰で出します。
入力 : user_42, (5,25,78,0), (8,3,12,0), ...
出力 : (5,25,55,0)
予測 : P(c1 | 履歴) × P(c2 | 履歴,c1) × ... × P(c4 | 履歴,c1,c2,c3)
この例の数値は説明用です。論文のモデルはエンコーダー・デコーダー各4層、約1,300万パラメータで、top-K候補を得る際にはbeam searchを使います。トークン用のvocabularyは各段256種類の計1,024トークンで、これにユーザーIDなどのトークンが加わります。学習対象は商品の次回interactionであり、説明文を生成するLLMではありません。原論文のモデル設定
生成IDがカタログに存在しない場合もあります。実験のtop-10では無効IDが約0.1〜1.6%と報告され、論文はbeamを大きくして無効IDを除外する方法を示しています。prefixが近い別商品へ置き換える案も挙げていますが、これは今後の課題であり、報告された評価結果に組み込まれた手法ではありません。原論文のInvalid IDs節
評価:3カテゴリのオフライン次商品予測
評価にはAmazon Product ReviewsのBeauty、Sports and Outdoors、Toys and Gamesを使います。1996年5月〜2014年7月のレビューをinteractionとして時刻順に並べ、5件未満のレビューしかないユーザーを除外します。各ユーザーの最後の商品をテスト、直前をvalidation、残りを学習に使い、学習時の履歴は最大20商品です。指標はRecall@5/10とNDCG@5/10です。原論文Appendix C
| データセット | ユーザー | アイテム | 平均履歴長 |
|---|---|---|---|
| Beauty | 22,363 | 12,101 | 8.87 |
| Sports and Outdoors | 35,598 | 18,357 | 8.32 |
| Toys and Games | 19,412 | 11,924 | 8.63 |
Table 1のNDCG@10を、各データセットで最も強い比較手法と並べると次の通りです。
| データセット | 最良の比較手法 | 比較手法のNDCG@10 | TIGERのNDCG@10 | 相対改善 |
|---|---|---|---|---|
| Sports and Outdoors | S3-Rec | 0.0204 | 0.0225 | +10.29% |
| Beauty | S3-Rec | 0.0327 | 0.0384 | +17.43% |
| Toys and Games | S3-Rec | 0.0376 | 0.0432 | +14.97% |
3データセットすべてでTIGERが上回りました。特にBeautyのNDCG@5はSASRecの0.0249からTIGERの0.0321へ29.04%の相対改善です。ただしTable 1の多くの比較手法値はS3-Recの公開結果から取り、P5のみ前処理を変更して比較しています。Appendix Dによれば、元のP5前処理には連番IDを分割前に割り当てることによる情報漏洩の懸念がありました。数字はこのオフライン設定のもので、オンラインCTRや売上の改善を意味しません。原論文Table 1とAppendix D
Semantic IDそのものの寄与を確かめるTable 2では、NDCG@10がBeautyでRandom ID 0.0250、LSHで作ったSemantic ID 0.0309、RQ-VAEのSemantic ID 0.0384でした。デコーダーを使うだけで同じ性能になるわけではなく、内容に基づくIDの作り方が重要だと分かります。ただし、これはID生成法の比較で、RQ-VAEだけを本番システムに追加したときの効果ではありません。原論文Table 2
コールドスタートと多様性はどう評価されたか
新規商品への評価はBeautyで行われました。テスト商品から5%をtraining splitから除き、履歴を持たない「unseen item」を模擬します。RQ-VAEと推薦モデルはtraining splitで学習し、その後にunseen itemへもSemantic IDを付けます。生成したIDと一致する既存商品に加え、先頭3トークンが一致するunseen itemを候補へ追加します。top-K中のunseen item割合を制限するεを設け、ε = 0.1では内容ベクトルのKNN手法をRecall@Kで上回りました。
これは「学習していない商品を4トークンまで正確に生成した」という意味ではありません。共有prefixから候補を広げる仕組みを加えた結果です。新商品の内容特徴を取得でき、同じエンコーダーと量子化器でIDを付けられることが前提になります。原論文のCold-Start Recommendation節
多様性の実験では、Beautyのdecoding temperatureを1.0から2.0へ上げると、推薦top-10のカテゴリ分布のEntropy@10が0.76から1.38へ上昇しました。これはカテゴリの散らばりが増えたことを示しますが、同じ設定での関連性とのトレードオフやユーザー満足度までは測っていません。原論文Table 3
実装するときに確認したい境界
論文の設定を小規模に検証するなら、まず商品の内容特徴と時系列interactionを用意し、train/validation/テストをユーザー単位の時間順に固定します。次に内容エンコーダーとRQ-VAEでIDを作り、衝突率とコードブック利用率を測ります。固定したIDで次商品予測を学習し、beam search後に無効IDを除外してRecall・NDCGを測ります。新規商品については、通常評価と分けてprefix一致の候補拡張を評価する必要があります。この順序は原論文の構成から整理した検証案であり、論文が公開した実行手順そのものではありません。
導入上の注意は3点あります。
推論コスト:ANNは不要でも、beam searchを伴う自己回帰生成は重くなります。著者らもANN方式より推論計算が高くなり得ると明記し、遅延最適化は本論文の対象外としています。カタログの更新:モデルの埋め込みテーブルは商品数に比例しませんが、商品とSemantic IDの双方向対応表は商品数とともに増えます。新商品を入れる際はID付与、衝突回避、対応表の更新を整合させる必要があります。
ID長:長いIDは表現容量を増やせても、履歴のトークン数と生成ステップを増やします。Appendix Eは6トークン構成でも指標はおおむね頑健だったと述べる一方、計算費用の増加を認めています。
この論文は、約1.2万〜1.8万商品規模の3カテゴリにおけるオフライン比較です。より大きなカタログの運用負荷、オンライン効果、遅延の裾部分はここからは判断できません。後続研究のRPGについての記事では、TIGERの自己回帰生成を長いSemantic IDへ拡張するときの課題と、別の並列生成方式を扱っています。原論文Appendix E