個性化重排--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的個性化重排,
- 假如使用者和列表中物品的互動,更加合理
- 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等網路都可以用來做預訓練。
- 討論
- 文章的創新主要是重排階段引入了使用者的相關特徵。個人認為可以用於二次推薦,應該有幫助
- 輸入層最後那個操作沒有太搞明白,有理解不到位的地方歡迎討論。
references:
Personalized Re-ranking for Recommendation.https://arxiv.org/pdf/1904.06813.