Trending Now: Modeling Trend Recommendations
Motivation 選んだ理由
社内のニューラル記事推薦モデルは、コンテンツ同士の関係を学んでいる
現状、トレンドを考慮できるとすれば、時間減衰や人気度合い(CTR)程度
この論文から他の手法を学べないか気になった
Summary どんなもの?
「Trend Now」というような推薦カルーセルについての研究
「あなたにおすすめ」「最近の人気」のような推薦では人気のアイテムを捉えられる
人気のアイテムほど推薦がされやすい rich get richer 問題
「Trend Now」は他に頻繁に登場しないが、人気が急上昇して、近い将来人気になる可能性があるアイテムを促進
「あなたにおすすめ」「最近の人気」の補完的な推薦を期待
アイテムの推薦におけるトレンドについて定義、問題設定
https://scrapbox.io/files/667cf41b1307d7001db5c314.png
アイテムの過去の加速度が与えられた時、どのアイテムが近い将来にトレンドになるかを予測することが目的
各アイテムのインタラクションの荒い累積数だけでなく、きめ細かいユーザーとアイテムのインタラクションを用いる
そのアイテムとインタラクションしたユーザー数だけでなく、どのユーザーがインタラクションしたかも知れる
アイテム間の相関関係を発見するのに役立つ
多くのユーザーが重複しているアイテムは似たトレンドパターンを示す可能性がある
例 「アベンジャーズ」と「ジャスティス リーグ」
ファンが急いで視聴する
オープニング ウィークエンドは好調
その後数週間で徐々に下降する
トレンド推薦を行う2フェーズのニューラルモデルを提案
モデルのトレンド推薦パフォーマンスを測るメトリクスを提案
Contribution 先行研究と比べてどこがすごい?
バイアスと分散のトレードオフが、モデルがタイムリーかつ安定的にトレンドを識別する能力を妨げていることを調査
タスクの実現可能性と時間ステップ長$ \Delta tの間の相関曲線の仮定
https://scrapbox.io/files/667cf41980a2f1001c018fe4.png
データのスパース性から生じる分散
トレンド予測に用いる履歴長を短くするほどスパースになり精度が下がる
時間的なドリフトから生じるバイアス
履歴長を長くすると予測までにラグができてしまい精度が下がる
トレンド推薦タスクを one-step 時系列予測問題として定式化
TrendRec という 2フェーズモデルを提案
次の 2 つのタスクを段階的に学習
補助的な目的の Nextアイテム推薦タスク
ユーザーとアイテムのインタラクションを学習し、アイテム間の基本的な関係をアイテム埋め込みとして表現
主目的の Next step 加速度予測タスク
時系列予測の追加コンテキストとして、学習したアイテム埋め込みを使用
過去の加速度の履歴から、次のステップのトレンド(加速度)を予測
トレンド推薦パフォーマンスメトリクスを導入
Method 技術や手法のキモはどこ?
トレンドの定義
時間ステップ
時間ステップ$ t は $ [t \cdot \Delta t, (t + 1) \cdot \Delta t] と書く
時間ステップの index $ t
$ \Delta t は事前に定義された期間(例 1 hour)
速度
時間ステップ$ t における速度は次のように書く
$ \mathbf{W}_{jt} \in \mathbb{R}
$ \mathbf{W}_{jt}はアイテム $ j の $ \Delta t 中における人気度(インタラクション数)
加速度(Acceleration)
時間ステップ$ tにおけるアイテム$ j の加速度は次のように書く
$ \mathbf{A}_{jt} \in \mathbb{R}
$ \mathbf{A}_{jt} = \Delta \mathbf{W}_{jt} = \mathbf{W}_{jt} - \mathbf{W}_{j(t-1)}
$ \mathbf{A}_{jt}はアイテム$ j の単位時間 $ \Delta tあたりの速度の変化量
トレンドとは時間ステップ$ tにおける加速度$ \mathbf{A}_{jt}
なぜトレンドを加速度と定義するのか
他の推薦と被らないような、多くのインタラクションを受けている補完的なアイテムグループを推薦することが理想
これらのトレンド上昇アイテムは、必ずしも世界的なアイテムや最近最も人気のあるアイテムであるとは限らない
加速度の大きいアイテムをレコメンドすることで、まだ人気が高くない可能性のあるトレンド上昇が期待できるアイテムを効果的に探索することができ、露出率を高めてトレンドをさらに促進する
問題設定
前提
リアルタイムで現在のトレンドを迅速に検出し、トレンドアイテムを推薦することが理想
実際には、現在のトレンドを確実に識別するために十分な相互作用を蓄積するにはある程度の時間が必要
そこで、近い将来のトレンドアイテムを予測して、その間に新たに収集されたデータに基づいて推薦を更新する方が現実的で合理的と主張
トレンド推薦タスクを one-step 時系列予測問題として定義
各アイテムに対して次の時間ステップ$ (t+1)の加速度$ \mathbf{A}_{j(t+1)} を予測
$ P(\mathbf{A}_{j(t+1)}|\mathbf{A}_{j,0:t}, \mathbf{C}_{j,0:t})
加速度の履歴 $ [\mathbf{A}_{j0}, \mathbf{A}_{j1}, ..., \mathbf{A}_{jt}] $ := \mathbf{A}_{j,0:t}
コンテキスト情報の履歴 $ [\mathbf{C}_{j0}, \mathbf{C}_{j1}, ..., \mathbf{C}_{jt}] $ := \mathbf{C}_{j,0:t}
covariates
トレンド予測の結果 top-k を推薦する
トレンド推薦2フェーズモデル
推薦モデルと時系列予測モデルの 2 つのコンポーネント
推薦モデル(右):ユーザーとアイテムのインタラクションを使用して、アイテム推薦を行うように訓練
時系列予測モデル(左):アイテムの加速度の履歴を使用して、次のステップの加速度予測を行うように学習
2つのコンポーネントはアイテムの相関関係をエンコードしたアイテム潜在埋め込みを通じて接続
https://scrapbox.io/files/667cf4149d6a25001dd23b3a.png
TrendRec のための確率的グラフモデル(PGM)
$ \mathbf{V}_{jt} \in \mathbb{R}^D は時間ステップ$ t中のアイテム$ jのプロパティ
時間ステップ$ tで計算されたアイテム潜在埋め込み
$ Dはアイテム埋め込みの次元数
$ \mathbf{A}_{j,0:t} \in \mathbb{R}^{N_{jt}}は時間ステップ$ t中のアイテム$ jの加速度系列$ \lbrack \mathbf{A}_{j0}, \mathbf{A}_{j1}, ..., \mathbf{A}_{jt} \rbrack
$ N_{jt}は履歴の個数
$ \mathbf{U}_{it} \in \mathbb{R}^Dはユーザー $ iの時間ステップ $ t中の興味
ユーザー潜在埋め込み
$ \mathbf{S}_{it} \in \mathbb{R}^{N_{it} \times D}はユーザー $ iの時間ステップ $ t中のインタラクション系列
$ N_{it}はイタラクション数
$ \mathbf{S}_{it}は埋め込み行列(各行がアイテム埋め込み)
辺$ \mathbf{S}_{it} \rightarrow \mathbf{U}_{it}
ユーザーの過去のインタラクションが次の行動に影響する
辺$ \{ \mathbf{U}_{it}, \mathbf{V}_{jt} \} \rightarrow \mathbf{R}_{ijt}
インタラクションはユーザーの興味とアイテムプロパティに依存する
辺$ \{ \mathbf{V}_{jt}, \mathbf{A}_{j,0:t} \} \rightarrow \mathbf{A}_{j(t+1)}
Acceleration はアイテムのプロパティとそのアイテムの Acceleration 履歴に影響される
ハイパラ$ \lambda_u, \lambda_v
分布の分散
生成プロセス
https://scrapbox.io/files/667cf4119d6a25001dd23b06.png
$ I, J, Tはユーザー数、アイテム数、時間ステップ数
$ f_{softmax}(\cdot)はsoftmax関数
$ \mathcal{N} (\mathbf{x};\mathbf{\mu}, \lambda^{-1} \mathbf{I}_D)はガウス分布の確率密度関数
$ f_{ts}(\cdot)は任意の確率的時系列予測モデル
アイテムの履歴加速度と潜在的なアイテム埋め込みの両方を使用して、次の時間ステップでの加速度の確率分布を予測
$ f_{sec}(\cdot)は任意の時系列推薦システム
ユーザーのインタラクション履歴を元に、ユーザー埋め込みを生成
この研究では GRU4Rec を使用
学習
Maximum a Posteriori (MAP) Estimation
潜在変数 $ \mathbf{U}_{it}と$ \mathbf{V}_{jt}、 $ f_{sec}(\cdot)、$ f_{ts}(\cdot)の学習パラメータを推論
簡単のため、PGMでは学習可能なパラメータ𝑓seq(·)と𝑓ts(·)を除外
MAPは次のように分解できる
https://scrapbox.io/files/667cf40df81647001d444895.png
https://scrapbox.io/files/667cf40bd0eaa7001d77e1e0.png
Negative Log Likelihood (NLL)
事後確率を最大化することは$ \mathbf{P}( \mathbf{U}_{it}, \mathbf{V}_{jt} | \mathbf{R}_{ijt}, \mathbf{A}_{j(t+1)}, \mathbf{S}_{it}, \mathbf{A}_{j,0:t}, \lambda_u, \lambda_v )の NLL を最小化することと同じ
https://scrapbox.io/files/667cf407d4c812001cf87b1d.png
推論
Acceleration の時系列予測にのみ着目
$ \mathbf{P}(\mathbf{A}_{j(t+1)}|\mathbf{A}_{j,0:t},\mathbf{V}^*_{jt})=f^*_{ts}(\mathbf{A}_{j,0:t},\mathbf{V}^*_{jt})
$ \mathbf{V}^*はアイテム $ j の事後分布
$ f^*_{ts}(\cdot)は学習した系列的時系列予測モデル
モデルアーキテクチャ
https://scrapbox.io/files/667cf402963ea0001d979303.png
現実的課題と解決策
Skewed Data
現実世界の推薦データセットには通常、数十万のアイテムが含まれます。推奨体制におけるよく知られた「ヘビーテール」問題により、ほとんどのアイテムはインタラクション数が少ない (たとえば、5 回未満のインタラクション) ため、コールドアイテムと見なされます。その結果、これらのアイテムに関連付けられた時系列はほぼ平坦な曲線を示し、ゼロ付近で推移します。トレーニング データにこのような時系列がかなりの割合で存在する場合、時系列予測モデルはゼロを予測する傾向に偏る可能性があります。
Short Active Period
注目アイテムの時系列は、依然としてアクティブ期間が短い可能性がある
アイテム間でアクティブ期間が異なる
分析から、アイテムの時系列には先頭ゼロ (アイテムがまだリリースされていないため) と末尾ゼロ (アイテムがもう入手できないため) が含まれることが一般的であることがわかった
主に、異なるアイテムのアクティブ期間の不一致によって発生
たとえば、アイテム A が市場に導入されたときに、アイテム B が入手できなくなった場合がある
短いライフサイクル
特定のドメインのアイテムは、その性質上、ライフサイクルが短い
ニュース ドメインでは、ほとんどの人が今日のニュースにしか注目しない → ライフサイクルは1日未満
解決法
Featurization
Dynamic Filter(for Skewed Data)
学習データ内のノイズを除去
各アイテムの加速度曲線を検査し、加速度の最も動的な変化を示すアイテムの上位$ \mu \%を選択
$ \mu は調整可能なハイパーパラメーター
アイテム 𝑗 の加速度の動的な性質は、メトリック$ \mathcal{D}_j = \sum^T_{t}|\mathbf{A}_{jt}|で測定
Training
Training Masks
アクティブ期間が短いという問題
Dynamic Filter で選択されたアイテムの系列はスパースのままになる可能性がある
トレーニング中にゼロを無視し、ゼロ以外の値に基づいて勾配を更新するようにする
Training Masks を使用
モデルがゼロを過剰適合するのを防ぐ
モデルがアクティブ期間に焦点を合わせ、ゼロ以外の値に基づいて勾配を更新するようになる
Different Context Windows for Different Domains
コンテキスト長はドメインによって適切な長さが異なる
ドメインに応じて長さを変更
Training on Velocity
トレーニングの安定性を確保
より動的な加速度時系列ではなく、速度時系列を使用して時系列予測モデルをトレーニングする
経験的に、速度時系列でトレーニングされた時系列予測モデルの方が優れたパフォーマンスを達成することがわかった
Inference
予測精度とレイテンシを高めるためにフィルタを適用
Candidate Filter
推薦候補の絞り込みに速度フィルターを適用
時系列予測モデルの加速予測の候補として上位$ \gamma \%のアイテムを選択
現在のタイムステップでのアイテムの速度に基づく
$ \gammaはデータセットに依存するハイパーパラメーター
Active Filter
現在のタイムステップで速度がゼロのアイテムを候補リストから除外
アクティブ期間が短い、ニュースドメインのアイテムに最も役立つ
トレンド推薦パフォーマンスメトリクスを導入
RMSE などの時系列予測の評価指標を用いず、トレンドのアイテムを推薦する問題に合わせて評価指標を設計
推薦領域でよく採用される Recall や NDCG と同様に Acceleration を順位に関連付けた Acc と TNDCG を提案
Acceleration Metrics
次のタイムステップ$ tのAccelerationが高い top-k を選ぶ
正解のAcceleration$ \{\mathbf{A}_{jt}\}_{j \in \mathcal{P}}と対応づける
$ \mathcal{P}はアイテム集合
Acceleration がトレンド性の定量的な測定値であるため、予測されたアイテムの次のタイムステップの加速の合計を計算し、それをモデルのトレンド性スコアとして使用
$ \sum_{j \in \mathcal{P}} \mathbf{A}_{jt}
トレンド性スコアが高いほど、モデルが次のタイムステップでトレンドアイテムを予測する精度が高くなる
min-max正規化を使ってトレンド性スコアを$ \lbrack 0, 1 \rbrackに正規化する
タイムステップ$ tの正解の top-k を$ \mathcal{O}とする
トレンド性スコア
上限$ T^k_{oracle,t} = \sum_{j \in \mathcal{O}} \mathbf{A}_{jt}
下限$ T^k_{random,t} = \frac{T_t}{|J|} \cdot kwhere$ T_t = \sum^J_{j} \mathbf{A}_{jt}
任意の負の数を取るので真の下限は存在しない
ランダムモデルを恣意的に下限と設定
モデルのトレンド性スコア$ T^k_{model, t} = max(\sum_{j \in \mathcal{P}} A_{jt}, T^k_{random, t})
$ \text{Acc}@k_t = \frac{ T^k_{model, t} - T^k_{random, t} }{ T^k_{oracle, t} - T^k_{random, t} } where $ \text{Acc}@k_t \in \lbrack 0, 1 \rbrack
Trendiness-Normalized-DCG (TNDCG)
アイテムのランク位置を考慮
$ \text{TDCG}^k_{model,t} = \sum^k_{r=1} \frac{\mathbf{A}^\mathcal{P}_r}{log_2(r+1)}
$ \text{TDCG}^k_{oracle,t} = \sum^k_{r=1} \frac{\mathbf{A}^\mathcal{O}_r}{log_2(r+1)}
$ \text{TDCG}^k_{random,t} = \sum^k_{r=1} \frac{T_t}{|J|}\cdot\frac{1}{log_2(r+1)}
$ rはランク位置のインデックス
$ \mathbf{A}^\mathcal{P}_rと$ \mathbf{A}^\mathcal{O}_rは、それぞれモデル予測とグラウンドトゥルースからの順序に基づいて位置 𝑟 にランク付けされたアイテムのAcceleration
$ \text{TDCG}@k_t = \frac{ TDCG^k_{model, t} - TDCG^k_{random, t} }{ TDCG^k_{oracle, t} - TDCG^k_{random, t} } where $ \text{TDCG}@k_t \in \lbrack 0, 1 \rbrack
Experiments どうやって有効だと検証した?
TaoBao, Netflix, MIND データセットを使用
timestamp で train, test を分割 (test 20%)
評価は合計$ Tステップでローリング方式で実行
例. テスト期間は2日間、時間ステップの長さ$ \Delta tが6時間なら、評価ステップは$ T = 8になる
収集した$ T個の Acceleration metrics は weighted sum で集約する
oracle と random の差分をとっているので、分散の大きさで重み付けされている
oracle と random ギャップがあるほどそのステップは重要とみなす
https://scrapbox.io/files/667cf3f69748d1001d57e421.png
https://scrapbox.io/files/667cf3fc24eb0c001c46eaff.png
Markov, Exponential Moving Average (EMA), DeepAR と比較
Markov
$ \mathbf{\hat A}_{j(t+1)} = \mathbf{A}_{jt}
EMA
$ \mathbf{\hat A}_{j(t+1)} = \sum^{T-1}_{k=0} w_k \cdot \mathbf{A}_{j(t-k)}
$ wは index $ k によって指数関数的に減衰する重み
DeepAR
$ \mathbf{P}(\mathbf{A}_{j(t+1)}|\mathbf{A}_{j,0:t},\mathbf{C}_{j,0:t}) = f_{seq}(\mathbf{A}_{j,0:t},\mathbf{C}_{j,0:t})
$ f_{seq}(\cdot)は sequential model
Q1. バイアスと分散のトレードオフの仮説は正しいか
Markov モデルの Acceleration Metrics を評価
https://scrapbox.io/files/667cf42187efc6001c2f2d9e.png
TaoBao および MIND データセットでは、曲線は仮説と一致
データのスパース性が緩和されるため、時間間隔が長くなるにつれて Acceleration Metrics が最初に向上
その後、時間ドリフトにより減少
一方、Netflix データセットの曲線は減少し続けている
Netflix データセットのタイムスタンプの粒度が 1 日であるため時間ドリフトの影響を受ける
全体として、結果は仮説を支持している
Q2. 推薦モデルはヒューリスティックモデルや標準的な深層学習時系列予測モデルよりも優れているか
3つのデータセット全てにおいて TrendRec が最高精度
https://scrapbox.io/files/667cf42780a2f1001c0190bf.png
観察
TrendRec はすべてのベースラインモデルを上回っている
DeepAR と比べてもパフォーマンスが向上しており、事前学習済みのアイテム潜在埋め込みが有効とわかる
TrendRec によるパフォーマンスの向上は、アイテム潜在埋め込みの品質と関連している
Tab. 2 を見ると DeepAR に対する改善は TaoBao で最も顕著で、Netflix と MIND ではわずか
Nextアイテム推薦の精度を確認すると TaoBao のパフォーマンスが顕著
https://scrapbox.io/files/667cf42b505c28001dbc4c77.png
Tab. 3 では TrendRec は Netflix や MIND と比較して TaoBao で大幅に優れた結果を示している
Nextアイテム推薦に関する TrendRec のパフォーマンスと正の相関関係にある
C. Nextアイテム推薦 MIND の精度低すぎない...?
上記から、TrendRec の精度は事前学習済みアイテム潜在埋め込みの品質に依存していることを示唆
EMA モデルは、ほとんどの場合、Markov モデルよりも劣っている
トレンドが動的に変化しており、次の時間ステップのトレンドと履歴トレンド間の依存関係が、最新性バイアスによる単純な加重合計よりも複雑であることを示している
ニュース領域では、ディープラーニングベースのモデルによるパフォーマンスの向上は比較的小さい
時間に敏感な性質により、リリースされると短期間で最大加速に達し、その後急激に低下する
各時間ステップで大きな加速度を示すトップアイテムにのみ焦点が当たる
今回の実験では時間ステップを 30 min に設定していた
限られたトレンド履歴を前提とし、流行している瞬間にその Acceleration を正確に予測する方法を学習する必要がある
ディープラーニング ベースのモデルにとって大きな課題
C. こここそ、共通のユーザーグループが興味を示し、類似トレンドによるトレンド推薦精度向上が狙えるのでは
↑そもそも学習すること自体が難しい
Discussion 議論はある?
もう少し他のモデルとの精度比較も見てみたかった
DeepAR の改良版ということなので、DeepAR 自体と比較しても勝つのでは、という気持ちになった
ニュース領域のトレンド予測の難しさに対しての対応策を取り入れても