1. 程式人生 > >個性化重排--Personalized Re-ranking for Recommendation

個性化重排--Personalized Re-ranking for Recommendation

推薦中的個性化重排--Personalized Re-ranking for Recommendation
這篇文章是阿里在ResSys'19發表的,主要貢獻是在重排序階段,引入了使用者的相關資訊,很符合實際場景。

  • PRM的提出

重排主要是對排序後結果的優化,也可以用於二次推薦。考慮到效能原因,典型的排序技術是基於pointwise的,給定一個query,系統對每個物品進行打分,按照打分結果進行排序。pointwise不考慮排序列表中物品之間的相關性,為了解決這個問題,有兩種主流做法:

pairwise和listwise:pairwise和listwise考慮列表中物品間的相關性

建模物品之間的相互作用:基於RNN的方法是目前的SOTA,輸入初始列表,輸出編碼後的列表[2].RNN存在兩個問題,一是距離限制,二是無法有效的對列表中物品進行互動。

直觀上來說,使用者的行為資訊也應該被加入到重排,因為不同使用者的傾向性不同。假如使用者更關注價格,重排時價格就需要更多關注。文章提出基於Transformer的個性化重排,

  1. 假如使用者和列表中物品的互動,更加合理
  2. Transformer的self-attention機制有效捕捉特徵間的互動,改善了基於RNN方法的缺點
  • 模型細節

先看圖

個性化重排的個性化就體現在加入了使用者個性化向量\(pv\),可以建模使用者個性和物品之間的相互關係。

輸入層

輸入層由三部分組成:原始特徵、個性化特徵、位置特徵

給定初始列表\(\mathcal{S}=\left[i_{1}, i_{2}, \ldots, i_{n}\right]\),原始特徵矩陣\(X \in \mathbb{R}^{n \times d_{\text {feature }}}\),\(X\)的每行\(x_i\)對應\(i \in S\)的特徵向量。\(P V \in \mathbb{R}^{n \times d_{\mathrm{pv}}}\)是個性化矩陣,由預訓練得到。\(PE \in \mathbb{R}^{\boldsymbol{n} \times\left(d_{\text {feature }}+d_{p v}\right)}\)表示位置編碼,初始列表中物品的位置.
\[ E^{\prime \prime}=\left[\begin{array}{c} {x_{i_{1}} ; p v_{i_{1}}} \\ {x_{i_{2}} ; p v_{i_{2}}} \\ {\cdots} \\ {x_{i_{n}} ; p v_{i_{n}}} \end{array}\right]+\left[\begin{array}{c} {p e_{i_{1}}} \\ {p e_{i_{2}}} \\ {\cdots} \\ {p e_{i_{n}}} \end{array}\right] \]
其中\(E^{\prime \prime} \in \mathbb{R}^{n \times\left(d_{\text {feature }}+d_{p v}\right)}\),為了將\(E^{''}\)轉化\(d\)維的\(E\),使用前饋神經網路轉化下:
\[ E=E W^{E}+b^{E} \]

此處有一個疑問,為什麼需要做這一步降維?直接將拼接後的向量送入編碼層不可以嗎?

編碼層

編碼層目標在於整合對列表中物品的相互影響,以及使用者行為和列表中物品的相互影響。這裡使用了Transformer的編碼部分,可以看圖(a).

輸出層

輸出層使用\(softmax\)輸出一個分數列表,根據分數就可以實現重排。具體來說,
\[ \text { Score }(i)=P\left(y_{i} | X, P V ; \hat{\theta}\right)=\operatorname{softmax}\left(F^{\left(N_{x}\right)} W^{F}+b^{F}\right), i \in \mathcal{S}_{r} \]
其中\(F^{\left(N_{x}\right)}\)是Transformer部分的輸出。對應的損失函式為
\[ \mathcal{L}=-\sum_{r \in \mathcal{R}} \sum_{i \in S_{r}} y_{i} \log \left(P\left(y_{i} | X, P V ; \hat{\theta}\right)\right. \]
其中\(\mathcal{R}\)是所有使用者的請求的集合。即保證重排後的列表儘可能的符合每個使用者

預訓練個性化向量

預訓練網路將點選率作為目標,利用網路的隱層向量作為個性化向量。就是預訓練模型的經典操作。對應的損失函式
\[ \begin{aligned}\mathcal{L}=\sum_{i \in \mathcal{D}}\left(y_{i} \log \left(P\left(y_{i} | \mathcal{H}_{u}, u ; \theta^{\prime}\right)\right)\right.+\left(1-y_{i}\right) \log \left(1-P\left(y_{i} | \mathcal{H}_{u}, u ; \theta^{\prime}\right)\right)\end{aligned} \]
其中\(\mathcal H _u\)表示使用者的歷史行為資訊,item表示物品資訊,user表示人口統計學資訊。可以看出個性化向量的預訓練網路就是一個CTR預估網路,因此經典的Wide&Depp,DeepFM等網路都可以用來做預訓練。

  • 討論
  1. 文章的創新主要是重排階段引入了使用者的相關特徵。個人認為可以用於二次推薦,應該有幫助
  2. 輸入層最後那個操作沒有太搞明白,有理解不到位的地方歡迎討論。

references:

Personalized Re-ranking for Recommendation.https://arxiv.org/pdf/1904.06813.