美文网首页推荐系统论文阅读
推荐系统论文阅读(三)-阿里巴巴个性化重排序算法

推荐系统论文阅读(三)-阿里巴巴个性化重排序算法

作者: 推荐系统论文阅读 | 来源:发表于2020-04-19 20:24 被阅读0次

    论文原文

    论文题目:《Personalized Re-ranking for Recommendation》

    论文链接:https://arxiv.org/pdf/1904.06813.pdf

    一 、背景

    大型推荐系统的推荐分为好几个阶段:

    Fig 1 推荐系统的四个阶段

    ps:图来源张俊林老师知乎文章《推荐系统技术演进趋势:从召回到排序再到重排》

    在传统的推荐系统中,推荐可以分为召回+排序两个阶段,召回阶段从海量商品库中筛选出用户感兴趣的商品,召回任务的特点是快速,能快速选出用户感兴趣的大量商品,这个阶段用的特征不用很多很全面,模型通常比较简单。在排序阶段,由于要精确给用户推荐商品了,这个时候就会用比较复杂的模型,把更多的特征融入到模型中,通过精准的排序方法把对应的商品推荐给用户。

    如果在召回阶段召回了大量的商品,但是排序阶段不再细分的情况下,排序模型可能跟不上召回阶段,所以这个时候可以加上粗排,后面在进行精排,粗排阶段可以引入多一点的用户特征和商品特征了,而在精排环节,就可以引入你所能想到的所有特征,模型也可以更加复杂。

    排序结果出来后是可以直接推给用户的,但是有时候为了更多的业务需求,需要对这些物品进行重排序,比如去已读、去重、打散、多样性保证、固定类型物品插入等等。

    本文的主要工作就是推荐系统的最后一个阶段:重排序

    为什么进行重排序而不是直接把精排的结果直接推荐给用户呢,文中提到,排序阶段从标记的数据集中学习排序功能以优化全局性能,从而为每个单独的项目生成一个得分。但是,它可能不是最佳选择,因为评分功能分别应用于每个项目,并且没有明确考虑项目之间的相互影响以及用户偏好或意图的差异。所以,在重排序阶段引入了Transformer结构来对每一个item pair关系进行建模,从而直接优化整个推荐列表,进一步提高性能。

    二、问题和符号定义

    2.1 符号定义

    Table 1 符号定义

    2.2 Learning to Rank

    LTR(learning to rank) 方法通过一个全局的函数给每一个item打分,然后根据分数进行排序来产生初始化的推荐列表,全局的损失函数如下:

    公式中的每个参数跟Table 1中的定义一样,l 是计算y_{i} 和P(y_{i} | .)的交叉熵损失,其实就是Ctr预估中的损失。

    但是通过这种方式去优化模型的参数会产生问题,光靠item的特征x不足以学习到一个很理想的排序函数。阿里的研究人员发现,推荐系统的排名应考虑以下额外信息:

    (a)项目对之间的相互影响

    (b)  用户与项目之间的互动关系

    物品对之间的相互影响可以直接从现有LTR模型为请求r给出的初始列表S_{r} = [i_{1} i_{2} ,...,i_{n} ]中学习。但是,很少有模型考虑用户和项目之间的交互。 物品对的相互影响程度因用户而异。 本文引入了个性化矩阵PV来学习用户特定的编码功能,该功能可以对物品对之间的个性化相互影响进行建模。

    新的loss定义如下:

    比上面的loss多了PV,其他的是一样的,Sr是初始化列表,参数变成来re-rank模型的参数。

    三、模型结构

    3.1 模型的输入

    S = [i_{1} , i_{2}...i_{n}  ] 为上一个排序阶段的结果,共有n个item

    X 是item的原始特征向量,维度为n ✖️ d-feature

    Personalized Vector (PV ):预训练模型中得到的个性化矩阵向量,维度是n ✖️d-pv

    把X和PV拼接后形成一个原始特征+个性化特征的矩阵E^‘:

    PE: 位置特征向量,维度为n ✖️(d-pv+d-feature)

    将PE和E^‘相加后形成矩阵E^":

    有了E^"后,将它送到一个全连接层后想成一个最终的矩阵E,维度是n✖️d:

    3.2  Encoding Layer

    就是Transformer的结构

    Attention:

    Multi head attention:

    Feed-Forward Network和Stacking the Encoding Layer:在《Attention is all you need》中有,就不展开了。

    3.3 Output Layer

    Nx个位置的结果都计算一个值,然后对这Nx个值进行softmax操作得出分数,这里W^F 和B^F 应该是每个位置共享的参数,用来学习每个item的得分。

    上式是模型的损失函数,yi是每个item的标签,个人觉得在这个模型中,所有的item的标签都为1

    3.4 Personalized Module

    个性化部分,用来产生PV向量,在整个模型训练的一开始就要先进行预训练。H_{u} 是用户u交互过的所有物品,除此之外,用户的性别,年龄等信息也会作为特征输入。当然这个模型还可以用fm,ffm.deepfm等来替代,把最后一层的vector拿出来当PV就可以来。该模型的损失函数如下:

    三、实验结果


    可以看到模型整体的效果相对于其他LTR模型还是有提升的,而且在线上也表现出来优势。

    相关文章

      网友评论

        本文标题:推荐系统论文阅读(三)-阿里巴巴个性化重排序算法

        本文链接:https://www.haomeiwen.com/subject/siimbhtx.html