Personalized Re-ranking for Recommendation

1 minute read

Published:

一篇介绍推荐系统中重排的论文, 阿里和快手于 2019 年发表于 Recsys 的论文, 该论文中使用了 Transformer 来捕捉推荐列表中物品之间的关系, Attention is all you need 发表于 2017 年, 这篇论文也算是很早就用 Transformer 做推荐的了.

论文基本信息:

1. Introduction

在推荐中, ranking 有多么滴重要已经不言而喻了. 就现在推荐系统的模式而言, 通常会是这么一个流程: $\text{召回} \longrightarrow \text{召回} \longrightarrow \text{粗排} \longrightarrow \text{精排}$, 有时候在粗排和精排之间还会有一个阶段: 重排, 也就是该论文的主角 Re-ranking. 这篇论文主要解决的是现有 (当时) 排序模型没有考虑物品之间的相互影响以及用户信息的问题. 文中提出了一个个性化的重排模型, 以上游排序模型输出的列表为输入, 综合考虑列表中物品之间的关系以及用户的个性化信息生成一个新的排序.

一些排序模型, 如 Pointwise 类的, 显然是没有考虑物品间的关系的, Pairwise/Listwise 看似考虑了但实际上主要是改变损失函数的形式 (就我个人而言, 不少 pairwise/listwise 的模型本质上还是 pointwise 的, 模型的输入还是单个的物品, 为物品打分时只看到了一个物品的信息, 虽然在训练阶段会与其他物品的打分进行比较, 但是在推断阶段物品的分数完全不会受到其他物品的影响).

除此之外, 如何把重排做的更个性化也是论文的一个目标. 通常在训练模型时, 样本的特征中一般已经包含了一部分用户的信息, 如用户与物品的交叉特征等. 论文中显示地对用户的个性化信息进行建模并引入了重排阶段. 看到这篇论文, 又想起之前阿里团队做的一些工作, 很是敬佩, 在推荐算法领域总是能做出引领潮流的工作!

2. Preliminaries

上游排序模型输出的列表为 $\mathcal{S}r = [i_1, i_2, \cdots, i_n]$, 对应的物品的特征组成的矩阵为 $\boldsymbol{X} \in \mathbb{R}^{n \times d{feature}}$. 用户的请求集合为 $\mathcal{R}$, 每个用户请求对应一个 $\mathcal{S}_r$. 为了引入用户个性化的信息, 文中为每个 $<user, item>$ 学习了一个向量. 最终重排阶段的问题转化成了如下的一个优化问题:

\[\mathcal{L} = \sum_{r \in \mathcal{R}} \mathcal{l}(\{ P(y_i | \boldsymbol{X}, \boldsymbol{PV}; \hat{\theta}) | i \in \mathcal{S}_r\})\]

其中 $\boldsymbol{PV} \in \mathbb{R}^{n \times d_{pv}}$ 表示用户的个性化矩阵.

3. How To Do

文中提出了 Personalized Re-ranking Model (PRM), 其模型结构如 PRM(b) 所示.

(a) Transformer 的 Encoder 的结构; (b) PRM 模型结构; (c) 生成用户个性化向量的方式

3.1. Input Layer

输入层的目标是将物品列表转化成对应的表征, 其作用与 Embedding Layer 一致. 从 PRM(b) 可以看到, 输入层的处理过程为: 原始特征拼接上个性化特征再加上位置编码, 经过经过一个全连接层即得到 Input Layer 的输出 $\boldsymbol{E}$. 不再赘述.

3.2. Encoding Layer

编码层的目标融合列表中物品间的信息, 由 $N$ 个 Transformer 的 Encoder 组成. Encoding Layer 和 Transformer 中编码部分的处理方式一样, 不再赘述.

3.3. Output Layer

输出层即预测每个物品的一个分数作为排序的依据. 由于输出层的输入是 Encoding Layer 的输出, 每个物品的表征融合了列表中其他物品的信息, 这个或许就是货真价实的 Listwise?

3.4. Personalized Model

之前提到了个性化的表征, 每一个 $<user, item>$ 都会有一个对应的向量, 表示用户与物品之间的一个交互. 文中没有采取端到端的方式来学习 $\boldsymbol{PV}$, 而是以预训练的方式来获得. 为什么不端到端的训练呢? 文中的解释: 按照特定任务训练得到的表征泛化性不好. $\boldsymbol{PV}$ 的学习是通过用户的点击数据学习到的, 该预训练模型如 PRM(c) 所示, 该模型可以看作一个 CTR 预估模型, 取最后一个隐层的向量作为 $\boldsymbol{PV}$.

4. Conclusion

从模型结构来说, 应该是比较早开始将 Transformer 应用于推荐的工作了. 从 LTR 的角度来看, 个人认为是 listwise 的形式, 与 ListNet 颇有几分相似, 都采用的是 softmax 损失, 只不过获得概率分布的方式有所差异.