个性化重排--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.pdf
个性化重排--Personalized Re-ranking for Recommendation的更多相关文章
- [转]Magento on Steroids – Best practice for highest performance
本文转自:https://www.mgt-commerce.com/blog/magento-on-steroids-best-practice-for-highest-performance/ Th ...
- 【RS】RankMBPR:Rank-Aware Mutual Bayesian Personalized Ranking for Item Recommendation - RankMBPR:基于排序感知的相互贝叶斯个性化排序的项目推荐
[论文标题]RankMBPR:Rank-Aware Mutual Bayesian Personalized Ranking for Item Recommendation ( WAIM 2016: ...
- 【RS】Using graded implicit feedback for bayesian personalized ranking - 使用分级隐式反馈来进行贝叶斯个性化排序
[论文标题]Using graded implicit feedback for bayesian personalized ranking (RecSys '14 recsys.ACM ) [论文 ...
- 【RS】BPR:Bayesian Personalized Ranking from Implicit Feedback - BPR:利用隐反馈的贝叶斯个性化排序
[论文标题]BPR:Bayesian Personalized Ranking from Implicit Feedback (2012,Published by ACM Press) [论文作者]S ...
- Bayesian Personalized Ranking 算法解析及Python实现
1. Learning to Rank 1.1 什么是排序算法 为什么google搜索 ”idiot“ 后,会出现特朗普的照片? “我们已经爬取和存储了数十亿的网页拷贝在我们相应的索引位置.因此,你输 ...
- A context-aware personalized travel recommendation system based on geotagged social media data mining
文章简介:利用社交网站Flickr上照片的geotag信息将这些照片聚类发现城市里的旅游景点,通过各照片的拍照时间得到用户访问某景点时的时间上下文和天气上下文(利用时间和public API of W ...
- VBPR: Visual Bayesian Personalized Ranking from Implicit Feedback-AAAI2016 -20160422
1.Information publication:AAAI2016 2.What 基于BPR模型的改进:在商品喜好偏序对的学习中,将商品图片的视觉信息加入进去,冷启动问题. 3.Dataset Am ...
- GBPR: Group Preference Based Bayesian Personalized Ranking for One-Class Collaborative Filtering-IJACA 2013_20160421
1.Information publication:IJACA 2013 2.What 基于BPR模型的改进:改变BPR模型中,a,用户对商品喜好偏序对之间相互独立;b,用户之间相互独立的假设 原因: ...
- BPR: Bayesian Personalized Ranking from Implicit Feedback-CoRR 2012——20160421
1.Information publication:CoRR 2012 2.What 商品推荐中常用的方法矩阵因子分解(MF),协同过滤(KNN)只考虑了用户购买的商品,文章提出利用购买与未购买的偏序 ...
随机推荐
- @noi.ac - 508@ 01背包
目录 @description@ @solution@ @accepted code@ @details@ @description@ 有一天你学了一个能解决01背包问题的算法,你决定将这个算法应用到 ...
- hdu 1789 Doing Homework again (Greedy)
Problem - 1789 继续贪心.经典贪心算法,如果数据比较大就要用线段树来维护了. 思路很简单,只要按照代价由大到小排序,然后靠后插入即可.RE了一次,是没想到deadline可以很大.如果d ...
- 如何查看redis内存使用情况
https://jingyan.baidu.com/article/2c8c281dbd079f0008252a0f.html Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以 ...
- sql语句列名为变量(Spring Boot+mybitis实验环境)
之前用的#{参数},在列名.表明部分一直不能成为变量.折腾了很久,结果仅仅是改为${变量}就可以了.
- Echarts Map地图下钻至县级
**准备工作:**1.首先使用vue-cli的脚手架生成vue项目. 2.然后使用npm安装echartsnpm install echarts -S 3.安装完后再mian.js中挂载到vue的实例 ...
- WebService 基础知识点和用Postman调试
阅读连接:Retrofit 用Soap协议访问WebService 详解 参考 1.java发HTTP POST请求(内容为xml格式) 2. android解析XML总结(SAX.Pull.Dom三 ...
- 手风琴jq实现
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- pytorch中如何处理RNN输入变长序列padding
一.为什么RNN需要处理变长输入 假设我们有情感分析的例子,对每句话进行一个感情级别的分类,主体流程大概是下图所示: 思路比较简单,但是当我们进行batch个训练数据一起计算的时候,我们会遇到多个训练 ...
- Vue的第一个实例
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- ZR并查集专题
ZR并查集专题 并查集,作为一个基础算法,对于初学者来说,下面的代码是维护连通性的利器 return fa[x] == x ? x : fa[x] = getf(fa[x]); 所以,但是这对并查集的 ...