🚀

レコメンドシステム——DIEN (Deep Interest Evolution Network) モデルの詳細解説

2024/12/08に公開

シリーズの目次

レコメンドシステムのシリーズをここにまとめています。
https://zenn.dev/datasciencekun/articles/dc0f61c0ca7f8d

無料相談コース(未経験OK)

  • 機械学習やレコメンド分野でお悩みの方
  • 機械学習やレコメンド分野に携わりたい方(理論から実装まで)

ぜひ下記の無料コースへお申し込みください!
機械学習エンジニア、レコメンドエンジニアになるためのサポート

論文:Deep Interest Evolution Network for Click-Through Rate Prediction

1. はじめに

研究の動機

従来のCTR(クリック率)予測モデルでは、ユーザーの行動をそのまま直接ユーザーの興味・関心として扱い、単純にembedding層を通してMLPに入力していました。これでは行動の背後にある本質的なユーザーの興味を十分に捉えきれていないという課題がありました。

本質的な動機について述べると、ユーザーの行動系列にRNNを適用したいという考えがベースにあったと推測されます。しかし、テキストの系列とユーザー行動の系列には大きな違いがあります。

例えば:

  • テキスト:「私は良い人です」という文は、語順を「人私は良い」と変えると意味が通じなくなります
  • 行動系列:「デニム→ハーレムパンツ→ワイドパンツ」という順序を「ハーレムパンツ→デニム→ワイドパンツ」と変えても本質的な意味は変わりません

つまり、ユーザーの行動系列は「順序」にそれほど敏感ではないため、単純にRNNを適用するのは適切ではありません。そこでDIENでは、行動の背後にある「興味の進化プロセス」をモデル化することで、この課題を解決しようとしています。

2. モデルアーキテクチャの全体像

DIENの全体構造は以下の流れで構成されています:

  1. 特徴入力(4つのカテゴリ)

    • User Profileの特徴
    • User Behaviorの特徴
    • Ad特徴
    • Context特徴
  2. Embedding層で低次元の密なベクトルに変換

  3. Interest Extractor層(通常のGRU + 補助損失)

  4. Interest Evolving層

  5. 最終的な特徴結合とMLP層

    • ad特徴
    • Context特徴
    • User Profile特徴
      をconcatして多層パーセプトロンに入力

モデルの損失関数

補助損失の導入により、DIENの全体の損失関数は以下のようになります:

ここで、L_{target}は全結合層後の交差エントロピー損失:

L_{aux}は補助損失で、Interest Extractor層の学習を改善するために導入:

3. Interest Extractor層と補助損失

Interest Extractorは、ユーザーの行動系列から興味を抽出するための層です。アリババの実装では、過去2週間(14日間)のクリック商品とカテゴリの系列を使用しています(推定では100以上の系列長)。

GRUの基本構造

効率性と効果の観点から、RNNの中でもGRUを採用しています。GRUの基本式は以下の通りです:

ここで:

  • u_t: 更新ゲート
  • r_t: リセットゲート
  • ∘: アダマール積(要素ごとの積)

直接GRUを使用する場合の2つの課題

  1. 隠れ状態の表現力の問題
    隠れ状態h_tは単に行動系列の依存関係を捉えているだけで、ユーザーの興味を効果的に反映できていません。前述の通り、ユーザー行動の「順序」自体にはそれほど意味がないため、単純なpooling操作と大差ない結果になってしまいます。

  2. 教師信号の不十分さ
    ユーザーがクリックした広告は確かにユーザーの興味を反映していますが、最終的な全結合層の損失だけでは、中間状態h_tに対する適切な教師信号が得られません。この損失は最終的な総合的な興味(その1回のクリック行動につながった興味)しか学習できないためです。

補助損失による解決

これらの課題を解決するために、DIENでは補助損失を導入しています。具体的な仕組みは以下の図で示されています:

正例と負例のサンプリング

正例:

  • ユーザーのクリック商品系列を使用
  • e_b^i[t]はユーザーiのt番目のアイテムのembeddingベクトル
  • クリックされた商品を使用する根拠:ユーザーがクリックした項目は明確に興味を示している

負例:

  • ユーザーがクリックしなかった商品からサンプリング
  • 全アイテム集合からユーザーがクリックしたアイテムを除いた集合から選択
  • ê_b^iで表現

補助損失の数式表現

この損失関数の設計から以下の特徴が分かります:

  1. 中間隠れ状態h_tがユーザーのクリック行動を予測できるように学習が行われる
  2. 正例との内積が大きく、負例との内積が小さくなるように学習される
  3. シグモイド関数を通すことで、確率的な解釈が可能

4. Interest Evolving層

Attentionの導入理由

最終的な目標はターゲット広告のCTR予測であるため、すべての興味を同等に扱うのではなく、ターゲット広告に関連する興味に焦点を当てる必要があります。これはDINモデルの考え方を継承したもので、注意機構を用いて各興味とターゲット広告との関連性(重み)を学習します。

Interest Evolving層は、外部環境と内部認知の共同影響による、ユーザーの様々な興味の時間的な進化をモデル化します。例えば、服への興味を例にとると:

  • 流行の変化
  • ユーザーの好みの変化
  • これらの変化が服に対するCTR予測に直接影響

アーキテクチャの詳細

処理フロー

  1. Interest Extractor層から得られた中間隠れ状態(h_t)を入力として受け取る
  2. ターゲット広告(target ad)との間で注意スコアを計算
  3. 得られた注意スコアとh_tを組み合わせてAUGRUに入力

Attentionスコアの計算方法

論文では以下の計算式が提案されています:

ここで:

  • h_t: Interest Extractor層から抽出された中間隠れ状態
  • e_a: ターゲット広告の特徴を結合したベクトル
    • 例:[good_id, cate_id]などの特徴の結合
  • softmax関数で重みの正規化を実施

Interest Evolving層の利点

  1. 履歴情報の効果的な活用
    最終的な興味の表現に、より関連性の高い履歴情報を提供できます。

  2. 進化トレンドの活用
    興味の進化傾向に従ってターゲットアイテムのCTRをより正確に予測できます。

興味は互いに影響を与え合うことがありますが、基本的に各興味は独自の進化過程を持ちます。例えば:

  • 本への興味の進化プロセス
  • 衣類への興味の進化プロセス

これらは基本的に独立して進化していきます。DIENではターゲットとなる広告に関連する興味の進化プロセスに焦点を当てます。

5. GRUの改良版AUGRUの詳細

注意機構をGRUに組み込む方法として、DIENでは3つのアプローチを比較検討しています:

1. AIGRU(Attentional Input GRU)

最も単純なアプローチで、入力に注意スコアを掛け合わせます:

AIGRUの課題:

  • 関連性の低い興味の入力値をゼロに近づけることはできます
  • しかし、ゼロ入力でもGRUの隠れ状態は変化してしまうため、あまり効果的ではありません

2. AGRU(Attention based GRU)

質問応答分野で提案された手法を応用し、更新ゲートを注意スコアで置き換えます:

AGRUの特徴:

  • 関連性の低い興味の影響を弱めることができます
  • 注意機構をGRUに組み込むことで、AIGRUの欠点を克服

3. AUGRU(GRU with Attentional Update Gate)

AGRUをさらに改良した手法です:

AUGRUの利点:

  • 更新ゲートの次元情報を保持したまま、注意スコアを活用
  • 各次元の重要度を個別に制御可能
  • より効果的に興味の進化をモデル化

6. まとめ

DIENは以下の技術的革新により、CTR予測の精度を大きく向上させました:

  1. Interest Extractor層による潜在的な興味の抽出
  2. 補助損失による効果的な学習
  3. AUGRUによる興味進化の精密なモデル化

Discussion