• 个性化重排--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} ight]),原始特征矩阵(X in mathbb{R}^{n imes d_{ ext {feature }}}),(X)的每行(x_i)对应(i in S)的特征向量。(P V in mathbb{R}^{n imes d_{mathrm{pv}}})是个性化矩阵,由预训练得到。(PE in mathbb{R}^{oldsymbol{n} imesleft(d_{ ext {feature }}+d_{p v} ight)})表示位置编码,初始列表中物品的位置.

    [E^{prime prime}=left[egin{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} ight]+left[egin{array}{c} {p e_{i_{1}}} \ {p e_{i_{2}}} \ {cdots} \ {p e_{i_{n}}} end{array} ight] ]

    其中(E^{prime prime} in mathbb{R}^{n imesleft(d_{ ext {feature }}+d_{p v} ight)}),为了将(E^{''})转化(d)维的(E),使用前馈神经网络转化下:

    [E=E W^{E}+b^{E} ]

    此处有一个疑问,为什么需要做这一步降维?直接将拼接后的向量送入编码层不可以吗?

    编码层

    编码层目标在于整合对列表中物品的相互影响,以及用户行为和列表中物品的相互影响。这里使用了Transformer的编码部分,可以看图(a).

    输出层

    输出层使用(softmax)输出一个分数列表,根据分数就可以实现重排。具体来说,

    [ ext { Score }(i)=Pleft(y_{i} | X, P V ; hat{ heta} ight)=operatorname{softmax}left(F^{left(N_{x} ight)} W^{F}+b^{F} ight), i in mathcal{S}_{r} ]

    其中(F^{left(N_{x} ight)})是Transformer部分的输出。对应的损失函数为

    [mathcal{L}=-sum_{r in mathcal{R}} sum_{i in S_{r}} y_{i} log left(Pleft(y_{i} | X, P V ; hat{ heta} ight) ight. ]

    其中(mathcal{R})是所有用户的请求的集合。即保证重排后的列表尽可能的符合每个用户

    预训练个性化向量

    预训练网络将点击率作为目标,利用网络的隐层向量作为个性化向量。就是预训练模型的经典操作。对应的损失函数

    [egin{aligned}mathcal{L}=sum_{i in mathcal{D}}left(y_{i} log left(Pleft(y_{i} | mathcal{H}_{u}, u ; heta^{prime} ight) ight) ight.+left(1-y_{i} ight) log left(1-Pleft(y_{i} | mathcal{H}_{u}, u ; heta^{prime} ight) ight)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.pdf

  • 相关阅读:
    基于结构化平均感知机的分词器Java实现
    HanLP分词命名实体提取详解
    [英语学习]王秒同学《21天TED英语精练团》
    [不好分类]转帖:好好说话是个“技术活”(李笑来说话太直了?)
    [英语学习]3招速成英语发音 背景音乐和学习随感
    [读书笔记]《番茄工作法图解:简单易行的时间管理方法》
    [英语学习]给宝宝的英语原版资源
    [办公自动化]如何判断服务器是否开放某端口
    [他山之石]Google's Project Oxygen Pumps Fresh Air Into Management
    [读书笔记]云计算时代的网络,读《腾云,云计算和大数据时代网络技术揭秘》
  • 原文地址:https://www.cnblogs.com/gongyanzh/p/12161376.html
Copyright © 2020-2023  润新知