概要
PAI-Rec は、シンプルな統計から深層学習まで、幅広いリコールアルゴリズムを提供します。本ページでは、サポートされているすべてのアルゴリズムを紹介し、TorchEasyRec 環境における DSSM ベクトルリコールについて詳しく説明します。
リコールアルゴリズムのカテゴリ:
深層学習リコール:DSSM ベクトルリコール
協調フィルタリングリコール:ETrec、Swing、SimRank
統計リコール:グローバル人気アイテムおよびグループ別人気アイテム
DSSM ベクトルリコール (TorchEasyRec 版)
2.1 仕組み
深層構造化意味モデル (DSSM) は、ユーザーとアイテムを固定次元のベクトルにエンコードし、ベクトル類似度に基づいて候補を検索する深層 2 タワーモデルです。
ユーザー特徴量 アイテム特徴量
| |
┌─────┴──────┐ ┌─────┴─────┐
│ ユーザー タワー │ │ アイテム タワー │
│ (DNN) │ │ (DNN) │
└─────┬──────┘ └─────┬─────┘
user_embedding item_embedding
└──────── 内積 ────────┘
マッチスコア
2.2 主な利点
利点 | 説明 |
分離型 2 タワーアーキテクチャ | アイテムベクトルはオフラインで事前計算され、ユーザーベクトルはリアルタイムで計算されます。 |
意味的汎化 | 深層ニューラルネットワークを通じて、ユーザーとアイテム間の意味的関係を学習します。 |
効率的な検索 | 数百万のアイテムから数ミリ秒で検索できます。FAISS によるローカルベクトル検索をサポートします。 |
豊富な特徴量サポート | ユーザープロファイル、アイテム属性、行動シーケンスをサポートします。 |
2.3 主要パラメータ
パラメータ | 説明 | 一般的な値 |
| モデル名。 | dssm |
| モデルタイプ。 | dssm / mind (マルチインタレスト) |
| ネガティブサンプリング戦略。 | 1,024 ネガティブサンプル |
| トレーニング期間 (日数)。 | 30 日 |
| 埋め込み次元ポリシー。 | EMB_SQRT4_STEP4 (詳細は以下の式をご参照ください。) |
| オンラインモードの有効化。 | true / false |
2.4 埋め込み次元ポリシー
embed_dim_policy パラメータは、離散特徴量の埋め込み次元を計算します。以下の式において、N は特徴量のカーディナリティです。
ポリシー名 | 計算式 | 説明 |
|
| 4 乗根でステップサイズ 8 |
|
| 4 乗根でステップサイズ 4 (デフォルト) |
|
| 自然対数でステップサイズ 8 |
|
| 自然対数でステップサイズ 4 |
計算例 (特徴量のカーディナリティ N = 10,000 と仮定):
EMB_SQRT4_STEP4:round(10000^0.25 / 4) × 4 = round(10 / 4) × 4 = 12EMB_LN_STEP4:round(ln(10000) / 4) × 4 = round(9.21 / 4) × 4 = 8
2.5 TorchEasyRec における DSSM の特徴
TorchEasyRec の DSSM には以下が含まれます:
特徴 | 説明 |
トレーニングフレームワーク | TorchEasyRec (PyTorch バックエンド) |
トレーニングプラットフォーム | PAI-DLC (GPU トレーニング) |
ベクトルインデックス | FAISS (IVF タイプ) |
オンラインサービス | EasyRec プロセッサ (Torch 版) |
特徴量エンジニアリング | オフラインとオンラインの一貫性を保つための FG 特徴量エンコーディング |
モデルのホットアップデート | steady_mode 設定による自動ロード。 |
ネガティブサンプリング設定:
{
"negative_sampler": {
"sampler_type": "negative_sampler",
"num_sample": 1024
}
}
ネガティブサンプリングは、ベクトルリコールにおいて非常に重要です。動的にネガティブサンプルをサンプリングすることで、識別能力を向上させます。
2.6 TorchEasyRec サービスアーキテクチャ
TorchEasyRec サービスコンポーネント:
FG エンコーディング:オフラインとオンラインの特徴量一貫性を確保します。
ユーザー タワー:リアルタイムでユーザーベクトルを推論する Torch ScriptModule。
FAISS インデックス:効率的な CPU ベースの検索。PAI-EAS CPU インスタンスにデプロイ可能です。
TorchEasyRec プロセッサ:
easyrec-torch-{version}プロセッサ。利用可能なバージョンは バージョンリスト に記載されています。
デプロイ設定例:
{
"processor": "easyrec-torch-1.12",
"model_config": {
"fg_mode": "normal",
"faiss_neigh_num": 500,
"faiss_nprobe": 1000,
"steady_mode": true,
"period": 2880
}
}
人気アイテムリコール
3.1 グローバル人気アイテムリコール
原理:ユーザー行動統計に基づいて、サイト全体で最も人気のあるアイテムを返します。
計算式:
ユースケース:
行動履歴がない新規ユーザーのコールドスタート。
フォールバックリコール戦略。
人気コンテンツの配信。
主要設定:
パラメータ | 説明 |
行動重み | 行動 (インプレッション、クリック、コンバージョン) に異なる重みを付けます。 |
時間減衰 | 最近の行動を優先します。 |
重複排除戦略 | アイテム、作成者、カテゴリによる重複排除を行います。 |
3.2 ユーザーグループ別人気アイテムリコール
原理:ユーザーを属性 (性別、年齢層、地域) でグループ化し、各グループ内で最も人気のあるアイテムを計算します。
ユースケース:
「あなたへのおすすめ」ホームページ。
異なるユーザーグループが明確に異なる嗜好を持つシナリオ。
利点:
グローバル人気アイテムリコールよりもパーソナライズされています。
実装が簡単で、ユーザー行動履歴を必要としません。
3.3 アイテムグループ別人気アイテムリコール
原理:アイテムを属性 (カテゴリ、タグ) でグループ化し、各グループ内で最も人気のあるアイテムを計算します。
ユースケース:
詳細ページの関連レコメンデーションシナリオにおいて、他のアルゴリズム (ETrec I2I など) が十分な関連アイテムを返さない場合に、結果を補完します。
現在のアイテムと同じカテゴリから人気アイテムを推薦します。
協調フィルタリングリコール
4.1 ETrec U2I リコール
参考:協調フィルタリング (etrec)
このアイテムベース協調フィルタリング (Item-based CF) アルゴリズムは、ユーザーとアイテムのインタラクションからアイテムの共起類似度を計算し、ユーザーの履歴に類似したアイテムを推薦します。
主な特徴:
リアルタイム行動トリガー (U2I Trigger) をサポートします。
時間減衰を適用して、最近の行動を優先します。
クリック、お気に入り、カート追加に重みを付けて、複数の行動を融合します。
主要設定:
パラメータ | 説明 | 一般的な値 |
| 行動時間ウィンドウ。 | 15 日 |
| 時間減衰係数。 | 0.2 |
| 選択するトリガーの数。 | 10 |
| リコールするアイテムの数。 | 500 |
| リコールエンジン。 | FeatureStore / Hologres |
4.2 ETrec I2I リコール
原理:アイテム間の類似度を計算するアイテムベース協調フィルタリングアルゴリズムです。
ユースケース:
関連レコメンデーション (例:「よく一緒に購入されている商品」)。
詳細ページで類似アイテムを推薦します。
類似度計算:
共起ベース:同じユーザーが 2 つのアイテムにインタラクションした回数に基づきます。
ベクトルベース:アイテム埋め込みのコサイン類似度に基づきます。
4.3 Swing U2I リコール
参考:Swing アルゴリズムツール
原理:ユーザーとアイテムの二部グラフにおける Swing 構造を使用して類似度を計算する、改良された協調フィルタリングアルゴリズムです。
核となる考え方:
多くの共通ユーザーがインタラクションするアイテムは類似しています。
非常にアクティブなユーザーの重みを減らすことで、ペナルティを課します。
利点:
人気アイテムの過剰推薦を軽減します。
ロングテールアイテムの関連性発見を支援します。
4.4 SimRank U2I リコール
参考:SimRank++ 類似度計算アルゴリズム
⚠️ 注意:SimRank は、複数回の反復処理と全グラフのランダムウォークにより、リソースを大量に消費します。コストを削減するために、MaxCompute サブスクリプションリソースを使用してください。原理:ランダムウォークを通じてノード類似度を計算するグラフベースの類似度アルゴリズムです。
核となる考え方:
多くの類似したアイテムにインタラクションするユーザーは類似しています。
類似したユーザーがインタラクションするアイテムは類似しています。
ユースケース:
疎なユーザー行動データ。
間接的な関係の発見。
特性:
反復処理を行うため、収束が遅い可能性があります。
マルチホップの関係を捉えます。
あなたへのおすすめ vs. 関連レコメンデーション
5.1 なぜシナリオを区別するのか?
異なるシナリオでは、ユーザーの意図と目標が異なるため、異なるリコール戦略が必要です:
観点 | あなたへのおすすめ | 関連レコメンデーション |
ページの位置 | ホームページ / レコメンデーションフィード | 詳細ページ / コンテンツページ |
ユーザーの意図 | 興味の発見、ブラウジング、消費 | 深い探索と意思決定のサポート |
トリガー条件 | ユーザープロファイル + 行動履歴 | 現在閲覧中のアイテム |
レコメンデーション目標 | パーソナライズされた探索 | 類似 / 補完的レコメンデーション |
多様性の要求 | 高 (クロスカテゴリ) | 中 (同じカテゴリの関連アイテム) |
5.2 あなたへのおすすめ
適用可能なアルゴリズム:
DSSM ベクトルリコール:深いパーソナライゼーションのためのコアアルゴリズム。
ETrec U2I:ユーザー行動履歴に基づく協調フィルタリング。
Swing U2I:ロングテールの興味を発見するため。
SimRank U2I:間接的な関係を発見するため。
ユーザーグループ別人気アイテム:コールドスタートユーザーのフォールバック。
設定の特徴:
ユーザーのパーソナライゼーションを重視
複数のリコールチャネルの融合
レコメンデーションの多様性の制御
5.3 関連レコメンデーション
適用可能なアルゴリズム:
ETrec I2I:アイテム類似度に基づく協調フィルタリング。
アイテムグループ別人気アイテム:同じカテゴリから人気アイテムを推薦するため。
DSSM ベクトルリコール:意味的類似度に基づいてアイテムをマッチングするため。
設定の特徴:
現在閲覧中のアイテムによってトリガー
コンテンツの関連性を重視
同じカテゴリまたはトピックのアイテムを優先
5.4 アルゴリズムとシナリオのマッピング
アルゴリズム | あなたへのおすすめ | 関連レコメンデーション |
DSSM ベクトルリコール | ✅ コア | ✅ 補助 |
ETrec U2I | ✅ コア | ❌ |
ETrec I2I | ❌ | ✅ コア |
Swing U2I | ✅ | ❌ |
SimRank U2I | ✅ | ❌ |
グローバル人気アイテム | ✅ フォールバック | ✅ フォールバック |
ユーザーグループ別人気アイテム | ✅ | ❌ |
アイテムグループ別人気アイテム | ❌ | ✅ |
アルゴリズムの選択
6.1 ビジネスステージによる選択
ステージ | 推奨アルゴリズム |
コールドスタートステージ | 人気アイテムリコール + グループ別人気アイテムリコール |
成長ステージ | 協調フィルタリング (ETrec / Swing) |
成熟ステージ | DSSM ベクトルリコール + マルチチャネルリコール融合 |
6.2 マルチチャネルリコール融合
本番環境では、通常、複数のリコールチャネルを組み合わせます。
融合戦略:
重み付け融合:各リコールチャネルに異なる重みを割り当てます。
重複排除融合:アイテム ID で重複排除し、最高スコアを保持します。
クォータ融合:各リコールチャネルに固定のスロット数を割り当てます。
まとめ
PAI-Rec は、包括的なリコールアルゴリズムスイートを提供します:
アルゴリズムタイプ | 代表的なアルゴリズム | コア機能 | 適用可能なシナリオ |
深層学習 | DSSM (TorchEasyRec) | 意味的マッチング、効率的な検索 | 大規模パーソナライゼーション |
協調フィルタリング | ETrec / Swing / SimRank | 行動の関連付け、ロングテール発見 | 中規模シナリオ |
統計リコール | 人気アイテム / グループ別人気アイテム | シンプル、効率的、コールドスタートソリューション | フォールバック / 新規ユーザー |
TorchEasyRec DSSM の主な利点:
PyTorch ベースのトレーニングで、複雑なモデルアーキテクチャをサポートします。
FAISS ベクトルインデックスにより、CPU インスタンスを含む効率的な検索を実現します。
EasyRec プロセッサ (Torch) による統一されたオンラインサービング。
FG 特徴量エンコーディングは、オフラインとオンラインの特徴量の一貫性を確保します。
steady_mode がモデルのホットアップデートをサポートします。
ベクトルインデックスの比較:EasyRec (TensorFlow) vs. TorchEasyRec:
フレームワーク | ベクトルインデックスソリューション | 説明 |
EasyRec (TensorFlow) | Hologres Proxima | FAISS をサポートしていません。アイテムベクトルは Hologres ベクトルエンジンに格納されます。 |
TorchEasyRec | FAISS | FAISS インデックスをサポートします。インデックスファイルはモデルと共に OSS に格納され、サービス起動時にメモリにロードされます。 |
ベストプラクティス:
DSSM ベクトルリコール (TorchEasyRec) をコアの深層学習リコール手法として使用します。
協調フィルタリング を行動の関連性を発見するための補完として使用します。
人気アイテムリコール をカバレッジを確保するためのフォールバックとして使用します。
シナリオ (あなたへのおすすめまたは関連レコメンデーション) に基づいて、適切なアルゴリズムの組み合わせを選択します。