Personalized Re-ranking for Recommendation
ABSTRACT
排名是推荐系统中的核心任务,目的是为用户提供有序的项目列表。通常,从有标记的数据集中学习排名函数以优化全局性能,从而为每个项目生成分数,继而排名。然而,这个结果可能是次优的,因为评分函数单独应用于每个项目,并没有明确考虑项目之间的相互影响,用户偏好的差异。
因此,该文章提出了一种个性化的重新排名模型。该模型采用Transformer直接优化整个推荐列表。Transformer应用自注意力机制,该机制直接对整个列表中任何一对项目之间的全局关系进行建模。
通过引入预训练的嵌入表示来学习不同用户的个性化编码来进一步提高性能。在线基准测试和现实世界在线电子商务系统的实验结果证明了所提出的重新排名模型的显著改进。
INTRODUCTION
之前的推荐系统通常只考虑用户-项目对的特征,未考虑来自列表中其他项目的影响,尤其是互相临近的项目。尽管pair wise和list wise学习排序算法,试图通过以项目对或项目列表作为输入来解决问题,但它们只专注以优化损失函数以更好地利用标签。没有明确建模特征空间中项目之间的相互影响。
一些研究对项目之间的影响进行建模,以调整由先前排名算法给出的列表,这是重新排名。主要思想是构建评分函数,具体是把项目表示encoding到特征空间中。最佳方法是基于RNN的,例如GlobalRErank和DLCM。他们将得到的初始列表按照顺序输入到基于RNN的结构中,并在每个时间步输出encoded向量。不过RNN-based模型对list中项目之间的交互建模能力有限。前一个编码项目的特征信息随着编码距离的增加而退化。受Transformer的启发,该文章使用Transformer来模拟项目之间的相互影响。
除了项目之间的交互,推荐系统中的重新排序也应该考虑交互的个性化编码功能。推荐系统的重新排名是用户特定的,取决于用户的偏好和意图。例如对于价格敏感的用户,在重新排名的模型中,价格特征之间的交互更为重要。传统的全局编码可能不是最优的,因为它忽略了每个用户的特征分布之间的差异。
例如,当用户关注价格比较时,价格不同的相似商品往往更多地出现。当用户没有明显的购买意愿时,推荐列表中的商品往往更加多样化。因此,文章在Transformer结构中引入了个性化模块来表示用户对项目交互的偏好和意图。在该模型的个性化重新排序模型中,可以同时捕获列表中项目和用户之间的交互。
- Problem:文章提出了推荐系统的个性化重排序问题,这是首次将个性化信息显式地引入到大规模在线系统的重排序任务中
- Model:使用带有个性化嵌入的Transformer来计算初始输入,进行重新排序。这比基于RNN的方法相比,Transformer采用的自注意力机制能够以一种更客观、更有效的方式以对任意两个项目之间的相互关系进行特定用户的建模
- Data:发布了一个大规模数据集(电子商务重新排序数据集)。这个数据集是从一个真实的电子商务推荐系统构建的。数据集中记录包含针对用户的推荐列表,该列表带有用于排名的点击标签和功能
- Evaluation:实验结果明显优于SOAT的方法
RELATED WORK
文章的目的是对基础分类器得到的推荐列表进行重新排序。根据使用的损失函数,可以分为三类方法:pointwise, pairwise, listwise。所有这些方法都学习全局评分函数,在该函数中全局学习某一特征的权重。然而,特征的权重不仅应该能知道项目之间的交互,而且还应该能知道用户和项目之间的交互。
类似的工作有使用GRU,LSTM,pointer network来完成。但是这些方法的encoder能力会被encoding距离限制。此外,这些方法使用的decoder来生成有序列表,不适用于在线排序系统。因为在线排序系统对延迟有很高的要求。因为序列decoder需要使用在时间t-1处的项目作为输入来预测时间t处的项目,这不能被并行化处理,且需要n次推理。
groupwise评分函数,能在评分时并行化,但由于它枚举了列表中所有可能的项目组合,计算成本较高
RE-RANKING MODEL FORMULATION
下表展示了文章使用的主要符号:
Learning to rank(简称为LTR)方法被广泛应用于实际工作系统中的排序。通常使用最小化以下损失函数L来学习全局评分函数:
其中的\(\mathcal{R}\)是所有用户的推荐请求的集合;\(\mathcal{I}_r\)是请求\(r\in \mathcal{R}\)的候选项目集;\(x_i\)是项目i的特征;\(y_i\)是项目i的标签,例如:是否点击;\(P(y_i|x_i;\theta)\)是带参数的排名模型,给项目i预测点击概率;\(\ell\)计算\(y_i\)和\(P(y_i|x_i;\theta)\)的损失;
但是\(x_i\)不足以学习一个好的得分函数,文章说明,推荐系统的排序应该考虑以下额外信息:
(a)项目对之间的互信息
(b)用户与项目之间的交互
项目对之间的互信息能够从LTR方法给出的结果列表中学习;很多研究很好地利用了项目对之间的互信息。可是很少工作考虑用户和项目之间的交互。项目对的相互使用程度因用户而异。文章中,引入了个性化矩阵PV来学习特定用户的的编码函数,该编码函数能够对项目对之间的个性化交互进行建模。损失函数如下:
其中\(\mathcal{S}_r\)是先前的推荐模型给出的初始推荐列表;\(\hat{\theta}\)是重排名模型的参数;X是推荐列表中所有项目的特征矩阵。
PERSONALIZED RE-RANKING MODEL(PRM)
4.1 Model Architecture
PRM模型的体系结构如下图所示,模型由输入层、编码层和输出层三部分组成。它将先前算法生成的初始项目列表作为输入,并输出重新排序的列表:
4.2 Input Layer
输入层的目标是准备初始列表中所有项目的综合表示,并将其提供给encoding layer。首先,先前的排序方法给出的初始顺序列表\(\mathcal{S}=[i_1,i_2,\cdots,i_n]\)具有固定的长度。模型有一个原始特征矩阵\(X\in \mathbb{R}^{n\times d_{feature}}\)。X中的每一行\(x_i\)表示项目\(i\in \mathcal{S}\)的特征向量。
Personalized Vector(PV)。对两个项目的特征向量进行编码可以对它们之间的相互作用进行建模,但是这些作用对用户的影响是未知的。因此需要学习特定用户的编码函数。虽然整个初始列表的表示可以部分反映用户的偏好,但对于强大的个性化编码功能来说,这是不够的。在图1(b)中,将特征矩阵\(X\in \mathbb{R}^{n\times d_{feature}}\)和个性化矩阵\(PV\in \mathbb{R}^{n\times d_{pv}}\)进行连接,得到中间嵌入矩阵\(E^{'}\in \mathbb{R}^{n\times (d_{feature}+d_{pv})}\),具体形式如下。PV是预训练模型产生的。
Position Embedding(PE)。为了利用初始列表中的顺序信息,实验在输入embedding中插入一个位置embedding \(PE\in \mathbb{R}^{n\times (d_{feature}+d_{pv})}\)。encoding layer的嵌入矩阵可以用以下公式来计算:
实验发现,使用可学习的PE性能略优于固定的位置embedding。
最后用一个简单的前馈网络将特征矩阵\(E^{''}\in \mathbb{R}^{n\times (d_{feature}+d_{pv})}\)转换成\(E\in \mathbb{R}^{n\times d}\),其中d是encoding layer的每个输入向量的维数,E可以通过如下公式计算:
其中\(W^E \in \mathbb{R}^{(d_{feature}+d_{pv})\times d}\)是一个映射矩阵,\(b^E\)是一个d维向量。
4.3 Encoding Layer
图1(a)中的encoding layer的目标是集成项目对和其他额外信息(包括用户偏好和初始列表\(\mathcal{S}\)的排序顺序)之间的相互作用。为了实现这一目标,文章采用了类似Transformer的encoder。Transformer中的自注意力机制特别适合于文章提出的重新排序任务,因为它直接为任何两个项目的交互关系进行建模,而不考虑它们之间的距离。在没有距离衰减的情况下,Transformer可以捕获初始列表中彼此相距较远的项目之间的更多交互。如图1(b)所示,实验的encoding模块由Transformer encoder的\(N_x\)块组成。每个块(图1(a))包含一个注意力层和一个前馈网络(FFN)层。
Attention Layer,定义如下:
其中矩阵Q,K,V表示queries,keys,values respectively。d是矩阵K的维数,避免内积过大。softmax用于将内积的值转换成value vector V的加权值。在文章中,使用了自注意力机制,其中Q,K,V是从相同的矩阵投影出来的。
为了建模更复杂互信息的影响,使用多头注意力机制,公式如下:
其中\(W^Q,W^K,W^V\in \mathbb{R}^{d\times d}\),\(W^O\in \mathbb{R}^{hd\times d_{model}}\)是映射矩阵。h是header的数量。
Feed-Forward Network。这种位置前馈网络(FFN)的主要功能是增强模型的非线性和不同维数输入向量之间的交互作用。
Stacking the Encoding Layer。在此,文章在position-wise FFN后面使用注意力模块,作为Transformer编码器的一个块。通过多个块的叠加可以得到更复杂、更高阶的互信息。
Output Layer
输出层的功能主要是为每个项目\(i=i_1,\cdots,i_n\)生成分数(在图1(b)中标记为Score(i))。