xiaohongshu在《Sliding Spectrum Decomposition for Diversified Recommendation》中提出了SSD的多样性方法:

摘要

内容feeds流,作为一种向用户推荐一系列浏览和消费(engage)的item的产品,在社交媒体平台上非常流行。在本文中,我们提出从item序列的角度,使用时间序列分析技术来研究这种场景下的多样性问题。我们推导出一种称为滑动频谱分解(SSD)的方法,它捕捉用户在浏览长item序列时对多样性的感知。我们还分享了我们在设计和实现一种合适的item embedding方法方面的经验,以便在长尾效应下进行准确的相似性测量。综合起来,这些方法现在已经完全实现并部署在小红书App的生产推荐系统中,为每天数千万用户提供主要的探索feeds产品。我们通过理论分析、离线实验和在线A/B测试展示了该方法的有效性和效率。

1 引言

内容feeds流,或在本文中简称为feeds,是一种非常流行的社交媒体产品,它为用户推荐了一系列浏览和参与的item序列。Instagram的探索feeds和TikTok的为你feeds是这类产品的典型例子。在本文中,我们报告了我们在小红书探索feeds产品中的工作。小红书1(中文意思是小红书)是一个拥有超过1亿月活跃用户的社交媒体平台。用户在平台上分享他们关于时尚、美食、旅行、阅读、健身等日常生活体验,以获得乐趣和灵感。每篇帖子都包含文本和视觉内容。在推荐系统(RecSys)的术语中,每篇帖子都是一个item。平台通过其探索feeds产品向用户推荐这些item,如图1所示

图片名称

图1 小红书探索供给产品的截图。左侧:用户可以滑动选择的两列推荐item列表。右侧:用户点击某个item后进入的item详情页面。

我们确定了这些feeds产品的两个常见特征,这些特征与推荐中的多样性问题密切相关。首先,它们允许用户通过手机当前的视窗持续下滑item列表。尽管当前视窗中的item pair对用户对多样性的感知有最直接的影响,但我们认为,由于用户的记忆,用户已经查看过的视窗外的item仍然对用户的感知有持久的影响。通过类比,我们发现许多现有的多样性方法[8, 9, 37]使用基于滑动窗口的实现忽略了视窗外的item,因此没有完全捕捉到用户的多样性感知。尽管扩大滑动窗口可能可以解决这个问题,但它增加了计算时间,并且在实践中阻碍了其在具有非常严格的延迟要求的生产系统中的部署。在feeds场景中,这个问题更加严重,因为用户倾向于在feeds应用程序上查看许多item。图2(左)显示,在过去1.5年中,小红书探索feeds的用户查看item序列的平均长度增加了约50%。具有滑动窗口实现的现有多样化推荐算法将在这个长item序列场景中忽略许多item。为了解决这个问题,我们提出从item序列的角度使用时间序列分析技术来研究多样化推荐问题。

图片名称

图2 关于小红书探索供给的统计数据。左侧:过去1.5年中用户平均项目序列长度的增长。右侧:项目数量相对于用户点击次数的分布,这清楚地展示了长尾效应。

我们推导出了一个称为滑动频谱分解(SSD)的方法。它将多个滑动窗口堆叠到轨迹张量中。分解张量可以得到一个考虑了视窗外item和整个item序列的多样性的广义定义。设计了一个贪婪推理过程来计算多样性项,并且被证明比现有最先进方法[9]更有效率。

第二,正如许多推荐系统中所出现的,长尾效应在这些feeds产品中也显现出来。少数item获得了大多数用户参与,而大量item几乎没有或很少有用户互动。图2(右)显示了小红书探索feeds中的效果。多样性算法中的一个关键组成部分是item相似性的测量。长尾效应使得基于协同过滤(CF)[20, 22, 27]的相似性测量由于许多item上用户参与的稀疏性而变得不够有效。一种替代方案是依赖基于内容的方法(CB)。然而,纯粹基于内容的相似性测量也有一些缺点。为基于内容的相似性模型收集大量训练数据非常耗时,而且训练数据往往会偏向于注释者对item相似性的看法,而不是最终用户的看法[11]。受到CB2CF工作[5]的启发,我们设计了一种类似的策略,迫使模型从item内容中泛化,学习用户在其item参与中隐含表达的对item相似性的看法。我们也称这种策略为CB2CF,尽管实际方法与[5]不同。遵循这一策略,我们设计并训练了一个并联网络[6]来学习item embedding。然后将这些嵌入适应并用于SSD方法中的相似性计算。

我们的贡献如下:

  • 与许多先前的方法[8, 9, 37]不同,我们从item序列的角度使用时间序列分析技术研究推荐多样性问题。我们认为这种视角更符合feeds场景,即向用户推荐一系列item。
  • 沿着这个方向,我们推导出了一种称为滑动频谱分解(SSD)的方法。它将视窗外的item和整个item序列纳入对多样性的考虑。此外,与现有最先进方法[9]相比,它在计算上更有效率。
  • 我们分享了使用CB2CF策略获得能在长尾效应下准确测量item相似性的item embedding的经验。我们描述了如何适配嵌入向量以与SSD方法一起工作,以及嵌入向量在我们的生产数据中的表现。
  • 我们通过理论分析、离线实验和在线A/B测试展示了所提方法的有效性和效率。

2 相关工作

2.1 多样化推荐

在推荐系统中,多样性主要有两个视角:聚合(aggregation)和个体(individual)。聚合考虑所有用户之间的多样性,其目标通常是提高推荐系统的覆盖率[14, 15]。另一方面,个体,也是我们在这项工作中研究的视角,侧重于给定用户的多样性,通常我们希望在质量和多样性之间实现最佳权衡[1, 2, 8, 37]。

在个体视角下,多样化推荐通常通过一个优化问题来表述,目标是同时考虑质量和多样性。一些研究讨论了如何构建和解决这个优化问题。

  • 在[8]中的工作提供了一种基于边际的贪婪算法,也称为最大边际相关性(MMR),其中一项的分数是检索质量项减去表示其与先前选定item相似性的惩罚项。
  • [26]提出最大化相关性加上一个类似熵的多样性项。
  • 最近,许多工作将行列式点过程(DPP)应用于多样化推荐。DPP是一个概率框架,最初用于描述热平衡中的分布,特征是某些函数的行列式[24]。在推荐上的应用通常使用L-集合DPP,其中函数是一个对称矩阵,也称为核矩阵,代表质量和成对相似性。在本文中,DPP总是指L-集合DPP。
    • 在[9]中,作者提供了一个快速贪婪算法来解决DPP的计算复杂性问题。
    • 在[37]中的工作提出了一种实用的方法,从过去的交互中学习核矩阵,并与近似贪婪推理相结合

为了在实践中提高效率,滑动窗口是这些方法中的一个关键组件[17, 37]。 在使用滑动窗口的贪婪推理过程中,所有这些工作完全忽略了视窗外的item。然而,保持这些item的信息更符合用户的感知。这项工作将推荐序列建模为用户观察到的时间序列。通过利用时间序列分析技术,我们的方法能够考虑多个窗口来模拟整个序列的多样性。

2.2 item相似性

在推荐系统中,item到item的推荐是一个关键组件,其中展示了用户喜欢item的最相似item。旨在为此计算item相似性的技术通常被归类为协同过滤(CF)或基于内容(CB)

  • 基于协同过滤(CF)的算法,它根据用户的隐式反馈构建相似item表,在各种个性化任务中常用[22, 30]。
  • 基于内容(CB)的方法,忽略了用户的历史行为,基于内容信息(如item描述、图像等)计算item相似性。

在多样化推荐方面的现有工作中,已经探索了CB和CF技术来测量item相似性。例如:

  • 在[37]中的工作建议使用item标记之间的jaccard距离作为距离函数。
  • 在[9]中,作者从用户反馈中使用矩阵分解(MF)技术创建item表示。
  • 一般来说,CF方法比CB方法提供更准确的相似性测量[29]。然而,当对item没有或很少有反馈时,即长尾或新item时,CF算法受到限制,这构成了社交媒体平台item的主要部分。因此,许多人尝试使用基于内容的功能来解决这个问题。
  • 在[5]中,作者提出了一种CB2CF方法,从内容特征学习映射到协同过滤嵌入,以解决冷启动item推荐。
  • 在[4]中,作者通过使用多视图神经注意力机制改进了模型。然而,注意力模型不适合用于多样化推荐任务中的item相似性测量,因为它是成对模型,并且在需要评估大量配对item时计算上非常昂贵。

在本文中,受到[5]中工作的启发,我们提出了一种适合与SSD配合使用的CB2CFitem embedding。我们的方法与之前的方法不同,我们没有将item内容映射到CF向量。相反,我们迫使模型从item内容中学习,推断出由ItemCF方法[22]产生的加强相似性信号。

3 问题设置

图3展示了工业推荐系统的典型结构[36, 37]。系统首先从item数据库中检索候选item,然后通过排序(ranking)模块来衡量点质量,即预测特定item将为用户提供的效用有多少,对每个item进行预测。最后,高质量的item将被发送到策略模块进行进一步选择和重新排序,以构建最终的推荐。

图片名称

图3 工业推荐系统的典型结构

在本文中,我们考虑多样化feeds推荐问题,其中:策略模块需要从排序模块生成的候选item集合 $ Z =\lbrace 1, 2, …, N \rbrace $ 中选择一个item序列 $\lbrace i_1, …, i_T \rbrace $。选择过程应考虑item之间的多样性以及它们的质量。在我们的设置中,对于每个item $ i $,排序模块提供了对其质量的估计 $ r_i $,策略模块可以访问其 $ d $ 维嵌入 $ \mathbf{v}_i \in \mathbb{R}^d $。我们要求两个item embedding的内积代表它们的相似性。此外,如今,检索和排序模块通常使用复杂的深度神经网络,对我们策略模块的解决方案提出了严格的延迟要求。

4 SSD

在这一部分,我们首先为我们提出的多样化feeds推荐方法——滑动频谱分解(SSD:Sliding Spectrum Decomposition)——进行公式化。然后我们为SSD引入了一种高效的贪婪推理方法,以满足生产系统中策略模块的低延迟要求。最后,我们对SSD进行了深入分析,并展示了它与DPP方法[9]的深刻联系。

4.1 公式化

在feeds推荐中,用户浏览一长串item并与它们互动。我们的目标是在这种情况下,在RecSys的策略模块中构建一个高质量和多样化的item序列。我们通过回答两个问题来解决问题:

  • 1)如何在这样长的序列中测量多样性;
  • 2)如何构建一个考虑整体质量和多样性的目标。

图片名称

图4 从用户观察到轨迹张量的过程

对于第一个问题,为了与用户的感知保持一致,让我们从用户的角度分析item序列。由于feeds推荐器通常提供一长串item,用户的当前视窗只能占据整个序列的一部分。随着用户连续浏览item,很自然地将feeds视为用户观察到的时间序列。在时间序列分析中,通常涉及一个滑动窗口来表示时间分辨率。同样,在推荐系统中,用户的滑动窗口出现在手机的当前屏幕上或用户心中的一个缓存区域。假设这个窗口有一个固定的大小,标记为$w$,我们可以通过图4中的三个步骤处理用户的观察:

  • 首先,一个窗口在整个原始item序列上滑动(slide)
  • 然后,多个窗口的item以item矩阵的形式堆叠(stack)在一起。
  • 最后,我们将每个item映射到其d维item embedding,获得以下轨迹张量 $ X \in \mathbb{R}^{L \times w \times d} $:
\[X = \begin{bmatrix} \mathbf{v}_{i_1} & \mathbf{v}_{i_2} & \cdots & \mathbf{v}_{i_w} \\ \mathbf{v}_{i_2} & \mathbf{v}_{i_3} & \cdots & \mathbf{v}_{i_{w+1}} \\ \vdots & \vdots & \ddots & \vdots \\ \mathbf{v}_{i_L} & \mathbf{v}_{i_{L+1}} & \cdots & \mathbf{v}_{i_T} \end{bmatrix}, \quad (1)\]

其中:

  • $ L = \max(1, T - w + 1) $。

当 $ d = 1 $ 时,X 刚好是单变量时间序列的奇异谱分析(SSA)中的轨迹矩阵[7]。在时间序列分析中,SSA是一种强大的技术,已经广泛应用于各个领域,例如,多变量统计、非线性动力学系统和信号处理[35]

在传统时间序列分析中,一个复杂的时间序列通常由几个规律性组成部分构成。例如,随着农业的持续发展,粮食生产呈现上升趋势,但也受到季节的影响,即粮食生产的时间序列是趋势和季节性的总和。SSA就是这样一种技术,它可以将时间序列分解为各种正交分量,其中这些分量的权重通过轨迹矩阵的奇异值分解来表示

在推荐场景中,通过将d维item embedding视为多变量观测(multivariate observations),我们将轨迹矩阵(trajectory matrix)推广到三阶情况。按照SSA,我们对X执行奇异值分解[19, 34]:

\[X = \sum_{\sigma_{ijk} > 0} \sigma_{ij}^k \mathbf{u}^{(1)}_i \otimes \mathbf{u}^{(2)}_j \otimes \mathbf{u}^{(3)}_k, \quad (2)\]

其中:

  • $ \mathbf{u}^{(1)}_i \in \mathbb{R}^L $,$ \mathbf{u}^{(2)}_j \in \mathbb{R}^w $,$ \mathbf{u}^{(3)}_k \in \mathbb{R}^d $ 是X的正交分解矩阵的列,
  • $ \otimes $ 表示外积。

在RecSys中,用户观察到的正交分量可以被视为item内容呈现的正交方向,而奇异值因此指这些方向在用户对多样性感知中的权重

经过上述处理后,剩下的问题是如何从这种分解中定义多样性。让我们首先考虑一个简单的情况,即没有任何一对窗口之间有重叠,也就是说,在计算多样性时,窗口彼此独立。因此,我们可以只关注X的单行,将轨迹张量退化为矩阵。假设item embedding在内积空间中,即一对item之间的内积可以代表它们的相似性。很自然地,我们可以通过这些item所跨越的超平行六面体的体积来定义多样性(diversity),其中多样化的item跨越更大的体积,因为它们的嵌入更正交。注意,计算矩阵体积的一种方法是使用奇异值的累积乘积[33]。因此,我们推广这种方法来定义三阶张量X的体积如下:

\[\prod_{\sigma_{ijk} > 0} \sigma_{ijk} \quad (3)\]

注意,在三阶张量X中,SSD从用户浏览整个序列的感知中组合了多个窗口。X的体积因此代表了基于整个序列以及滑动窗口的多样性。因此,我们通过公式(3)定义了整个序列的多样性。

一个剩下的问题是如何在优化中组织多样性和质量,我们提议直接将它们相加:

\[\max_{\{i_1,...,i_T \rbrace \subset Z} \left( \sum_{t=1}^{T} r_{i_t} + \gamma \prod_{\sigma_{ijk} > 0} \sigma_{ijk} \right), \quad (4)\]

其中:

  • $ \gamma $ 是一个超参数,用于调整质量和多样性之间的权衡。

我们将从推荐器的角度展示公式(4)的合理性和洞察力。

  • 一方面,工业推荐器通常计算质量分数以代表用户的预期效用,如视频观看时间或参与度
  • 另一方面,多样性有时被视为探索,以更多地了解用户[28, 32]。

因此,质量和多样性之间的权衡对于推荐器来说是一种利用-探索(EE)权衡。特别是,考虑将item序列视为具有以下高斯参数化的多臂老虎机:

\[N \left( \sum_{i=1}^{T} r_i, \prod_{\sigma_{ijk} > 0} \sigma_{ijk}^2 \right), \quad (5)\]

其中:更好的多样性提供了item序列中更高的方差[13, 18]。这也与多样性体积定义一致,更大的体积直观上代表更大的方差。注意,高斯变量的上置信界与其标准差成正比。本着面对不确定性时的乐观原则,公式(4)是一种UCB类型的臂选择策略[3, 21]。

SSD将整个item序列视为用户观察到的时间序列,并通过频谱分析分解其滑动表示。因此,我们称我们提出的方法为滑动频谱分解。

4.2 贪婪推理

我们已经将多样化feeds推荐问题表述为公式(4)中的最大优化问题。优化多样性项是一个组合张量分解问题,被证明是NP-hard[16]。在这一部分,我们提供了一个快速的贪婪推理算法来解决实践中的高效推理问题。

在贪婪推理的第t步中:

  • 前t-1个item已经被选中,我们需要从候选集 $ Z \setminus I_{1:t} $ 中选择一个item,
  • 其中 $ I_{p:q} $ 指的是 $\lbrace i_p, i_{p+1}, …, i_{q-1} \rbrace $。

让我们从时间步骤 $ t \leq w $ 开始。

当 $ t = 1 $ 时,选择质量最高的item是直接的。在其他情况下,我们不需要知道每个奇异值的实际值,即我们只关心累积乘积。回想一下,累积乘积在几何上等于体积。

当 $ t = 2 $ 并且我们考虑候选item j 时,体积是由 $ i_1 $ 和 j 跨越的平行四边形的面积

\[\| \mathbf{v}_{i_1} \| \| \mathbf{v}_j \sin(\mathbf{v}_{i_1}, \mathbf{v}_j) \|\]
  • 其中 $ | \cdot | $ 表示 L2-范数。

注意 $ v_j \sin(v_{i_1}, v_j) $ 实际上是正交化的 $v_j $,标记为 $ v_j^{\perp} $,相对于 $v_{i_1} $:

\[\mathbf{v}_j^{\perp } = \mathbf{v}_j - \frac{\langle \mathbf{v}_j, \mathbf{v}_{i_1} \rangle}{\langle \mathbf{v}_{i_1}, \mathbf{v}_{i_1} \rangle} \mathbf{v}_{i_1}, \quad (6)\]

其中:

  • $ j $ 在 $ i_1 $ 上的投影已从 $ \mathbf{v}_j $ 中移除。

当 $ t = 3 $ 时,相应的平行六面体的体积也可以通过对 $v_{i_1} $ 和 $v_{\perp i2} $ 的正交化候选项来计算。一般来说,这种正交化是格拉姆-施密特过程[33],公式化为:

\[\mathbf{v}_{ik}^{\perp} = \begin{cases} \mathbf{v}_{ik}, & \text{if } k = 1 \\ T_{I_{1:k}}(\mathbf{v}_{ik}), & \text{otherwise} \end{cases}, \quad (7)\]

其中:

\[T_{I_{1:k}}(\mathbf{v}_{i_k}) = \mathbf{v}_{i_k} - \sum_{i \in I_{1:k}} \frac{\langle \mathbf{v}_{i_k}, \mathbf{v}_{i}^{\perp} \rangle}{\langle \mathbf{v}_{i}^{\perp}, \mathbf{v}_{i}^{\perp} \rangle} \mathbf{v}_{i}^{\perp}. \quad (8)\]

特别是,当没有滑动窗口时,我们可以重用候选item的正交化结果,这相当于one-step修改版的格拉姆-施密特(MGS)正交化[33]。有了这个技巧,我们的贪婪推理算法只有 $ O(NdT) $ 的时间复杂度,外加 $ O(1) $ 的空间复杂度。$ t \leq w $ 也相当于没有滑动窗口的情况。算法总结在算法1中。

图片名称

算法1

让我们继续考虑 $ t > w $ 的时间步骤,我们需要考虑多个窗口。为了简化,让我们首先考虑 $ t = w + 1 $。遵循之前策略的一个可能方法是从 $ i_2 $ 开始正交化 $ I_{2:w+1} $。然而,这种方法完全忽略了item $ i_1 $ 以及第一个窗口,这与通过组合多个窗口来测量整体多样性的SSD相悖。因此,我们在当前窗口执行MGS,同时保留所有选定item的正交化结果,允许当前窗口继承有关先前窗口的信息。因此,在时间步骤 $ t $ 中,贪婪推理考虑以下目标:

\[\max_{j \in Z\setminus I_{1:t}} r_j + \gamma \| T_{I_{l:t}} (\mathbf{v}_j) \| \prod_{i \in I_{1:t}} \|\mathbf{v}_{i}^{\perp} \|, \quad (9)\]

其中:

  • $ l = \max(1, t - w + 1) $。

注意上述目标保持了X的一阶正交化。由于X在前两阶上是对称的,公式(9)确保了正交化之后,在相同的列中任意一组连续的 $ w $ 个元素在第一阶和第二阶上是正交的。

与没有滑动窗口的情况相比,我们需要额外的还原操作。例如,在时间步骤 $ w + 1 $ 中,我们需要对 $ Z \setminus I_{1:w+1} $ 中所有剩余的候选项在 $ i_1 $ 上的投影进行还原。这些还原操作需要 $ O(NdT) $ 的时间复杂度,外加 $ O(wN) $ 的空间来存储这些投影。因此,总的时间复杂度仍然是 $ O(NdT) $。为了进一步加速实际实现,我们进一步提出应用循环队列技巧来减少内存复制[10]。算法总结在算法2中。

图片名称

算法2

4.3 分析

之前我们已经介绍了用于多样化feeds推荐的SSD(滑动频谱分解)和相应的贪婪推理算法。SSD将item序列视为用户观察到的时间序列,通过在整个序列中组合多个滑动窗口来与用户浏览feeds时的感知对齐。这种观点是我们与其他多样化推荐工作的主要区别之一。 SSD使用由多个窗口组成的三阶张量的体积来定义多样性。与之最相关的想法是DPP(行列式点过程)[9]。在本节中,我们首先证明在没有滑动窗口的情况下,SSD中的多样性项与DPP中的相同。然后我们分析这两种方法之间的区别。最后,我们比较了SSD和DPP在有无滑动窗口情况下贪婪推理的复杂性。

当多样性仅在单个窗口内需要时,考虑对 $P_t = U \sigma V^T \in R^{t \times d} $ 进行奇异值分解,其中 $\mathbf{P}t$ 的第i行是 $ \mathbf{v}{i_t} $。然后我们可以得到:

\[\det(\mathbf{P}_t \mathbf{P}_t^T) = \det(\mathbf{U} \Sigma \mathbf{V}^T \mathbf{V} \Sigma^T \mathbf{U}^T) = (\det(\Sigma))^2. \quad (10)\]

注意:

  • $ \mathbf{P}_t \mathbf{P}_t^T $ 是DPP中的核心矩阵,当忽略质量时,右侧是SSD目标中的平方多样性项。矩阵的行列式表示几何中的体积,即DPP也使用由 $ I_1:t+1 $ 跨越的 $ t $ 维超平行六面体的体积来表示多样性。因此,没有滑动窗口的情况下,SSD和DPP对多样性的定义是相同的。在滑动窗口的情况下,SSD将这种体积推广到三阶张量,以组合多个窗口,我们认为这更符合用户在feeds推荐中的感知。

DPP和SSD之间的主要区别有两个方面。

  • 1.DPP是来自物理学的强大概率技术,用于测量多样性,其中一组item的选择概率与核矩阵相对于的行列式成正比。DPP的假设中没有顺序概念。换句话说,是贪婪推理过程为DPP的推荐提供了序列。对于长序列,必须考虑滑动窗口以满足用户的感知。然而,DPP没有提供组合多个窗口的方法,完全忽略视窗外的信息过于严格。SSD反而将feeds视为时间序列,将顺序和滑动窗口都包含在轨迹张量中。
  • 2.在DPP的框架中,选择概率与体积成正比,其中质量作为相应item embedding的乘数。这种组合在几何上是可解释的,体积随质量的增加而单调增加。换句话说,在DPP中,质量是自然嵌入的一种增强器。对于feeds推荐,推荐器大多数时间利用用户的过去互动,同时探索他们的兴趣。受到这种行为的启发,SSD反而认为多样性在质量下扮演着探索者的角色,采用利用-探索策略。

回想一下,[9]为DPP提出了一个快速的贪婪推理算法,其中需要一个核矩阵 $ \mathbf{K} $。对于大规模推荐器,预先计算具有密集item embedding的 $ \mathbf{K} $ 在离线时是不切实际的。在在线服务期间,$ \mathbf{K} $ 需要 $ O(N^2d) $ 的时间复杂度和额外的 $ O(N^2) $ 空间。回想一下,没有滑动窗口的情况下,SSD与DPP返回相同的结果,但在我们的提议的贪婪推理算法中,不需要 $ \mathbf{K} $。此外,在滑动窗口情况下,我们只与最后选择的item进行正交化,使时间复杂度与窗口大小 $ w $ 无关。复杂性比较总结在表1中。在贪婪推理下,SSD比DPP更高效。

图片名称

表1

5 item embedding

在上一节中介绍的SSD方法要求item embedding在内积空间中。任何item $ i $ 由embedding向量 $ \mathbf{v}_i $ 表示,它与任何其他item $ j $ 的相似度计算为 $ \langle \mathbf{v}_i, \mathbf{v}_j \rangle $。这里,我们描述了如何在长尾效应下计算准确的item相似度的embedding向量。尽管与[5]有所不同,我们称我们的策略为CB2CF。

5.1 模型架构

嵌入模型的网络结构如图5所示。我们采用了并联网络(siamese)架构[6],在视觉和自然语言应用[25]中广泛用于相似度计算。并联网络能够自然地从item pair对中学习item embedding,无需在训练期间决定item的顺序,或在推理时选择模型的分支。给定一个item,我们以item描述和封面图像为输入,并在预训练模型的帮助下分别为它们创建文本表示和图像表示。对于文本描述,我们采用BERT[12]作为基础模型,并遵循标准流程,将对应第一个标记的隐藏状态作为嵌入。对于封面图像,使用Inception-V3[31]模型获得图像表示。然后,我们通过连接它们相应的表示,然后通过一个全连接输出层到目标嵌入 $ \mathbf{v} $。最后,我们计算成对item embedding之间的余弦距离。我们将在5.3节中解释采用余弦距离的原因。我们将这个问题视为二元分类任务,并使用交叉熵损失作为目标。

图片名称

图5

5.2 训练数据

接下来,我们讨论如何为嵌入模型收集训练样本。

首先,只有item内容,如文本描述、封面图像和视频封面图像被用作嵌入模型中的特征。用户参与度不作为特征使用。这样做,模型被迫纯粹从item内容中推断相似度。这防止了模型至少在特征级别上受到长尾效应的影响,因为:即使用户参与度很少(或没有)的item,也可以通过模型以足够的内容特征可靠地计算其embedding向量

其次,对于任何有用户参与的item $i$,如果item $j$ 通过ItemCF方法[22]以item $i$ 作为种子item被检索出来,并且item $j$ 在最终推荐结果中获得了足够的曝光,我们有很高的信心认为从用户的角度来看,item i和j是非常相似的。ItemCF基于用户参与度确保了i和j之间基本的用户感知相似度。如果j多次在推荐系统中存活下来,为许多用户获得曝光,那么j对许多用户来说很可能与i相似。我们将这些item pair对 $ < i, j > $ 视为正样本

这个样本集受长尾效应的影响不大,因为即使用户参与度很少的item也可以作为种子item i。然而,item j更可能是头部item,因为我们的策略要求它有一些最小的曝光。这也是我们不对j需要任何用户参与度的原因,因为这将进一步增加j成为头部item的概率。

设计的一个优点是:它使得长尾item和头部item之间建立相似关系成为可能。这可以帮助嵌入模型从item内容中泛化,推断出相似度,即使是长尾item。

最后,对于任何有用户参与的item $ i $,我们随机采样一个通过ItemCF方法检索的item $ j’ $,并使用这些item pair对 $ < i, j’ > $ 作为负样本。如果我们允许 $ j’ $ 是任何随机item,我们发现在实践中负样本对嵌入模型来说太容易了,它停止过早地学习。所有上述训练样本都可以从现有的推荐系统中轻松自动收集。我们的方法与原始的CB2CF工作[5]不同,因为我们不将item内容映射到CF向量[27]。相反,我们迫使模型从item内容中学习,推断出由ItemCF方法产生的加强相似性信号。

5.3 归一化

如前所述,SSD将选定item embedding跨越的平行四边形体积推广到滑动窗口情况,以匹配用户在feeds推荐中的感知。在使用CB2CF训练中的内积作为距离时,item的L2范数是无界的。这种无界性可能导致item之间严重的不公平,因为它为体积提供了不可控的贡献。因此,我们特别指定余弦相似度作为CB2CF训练中的距离,使所有嵌入具有相同的L2范数,即位于高维单位球表面。

另一个问题是余弦距离和体积之间的不匹配。体积通常在内积空间中定义,如果两个向量的内积为0,则它们完全不同。使用余弦距离时,完全不同的对的值变为-1。我们通过在归一化后添加一个额外的维度元素1来解决这个问题:

\[\mathbf{v} = \left[ \frac{\mathbf{v}^{\prime}}{\|\mathbf{v}^{\prime}\|}, 1 \right], \quad (11)\]

其中:

  • $ \mathbf{v}^{\prime} $ 是CB2CF的输出。

这种转换保持了由余弦描述的相似度,并在SSD中实现了公平性和几何属性。

实验

kuaishou在《POSO: Personalized Cold Start Modules for Large-scale Recommender Systems》中提出了POSO的方法:

1.介绍

大规模推荐系统每天面临着大量新用户。一个重要挑战是:如何为这些未见过的用户做出精准推荐。一方面,这些用户很难具有历史描述或初始数据。另一方面,他们要比常规用户更加敏感、不耐烦。对他们来说,不够精准的推荐可能会失去吸引力,从而不会再返回平台。从而,我们可能会失掉这些新用户的潜在价值

该问题被称为“user cold-start问题”。不同于item cold start问题(我们可以利用内容features),user cold start很难提供可选描述,需要系统去快速捕获用户兴趣。基于【10,12】的meta-learning可以通过产生良好泛化的initialization来缓解该问题。另外,其它工作【14,26】尝试其余features来生成ID embedding,从而提供缺失线索(missing cues)。

然而,我们会讨论:存在另一个被忽略的问题:个性化淹没(submergence of personalization)。该问题描述了一个现象:尽管个性化features被用来对不同的user groups(它们的分布非常不同)进行balance,但由于存在非常严重的不均衡样本(imbalanced samples),这些features会被淹没

图片名称

图1 a) 新用户后验行为的可视化(基于来自常规用户的动作 数/率的相对差异)。它展示了新用户会与常规用户具有非常不同的差异。 b) imbalanced和well-balanced features的敏感度,通过两个size=128的向量进行可视化。在每个vector中的Bins表示了当对imbalanced/balanced features进行mask时的activation差异。颜色越深表示差异越大

如图1(a)所示,我们会以常规用户的后验行为(观看时长/VV数/点赞率/完播率)作为原始点,来展示新用户的分布差异。该图展示了新用户会遵循非常不同的分布。理论上,我们期望:个性化features是为了区分user groups。但在实际中,这样的features真的能帮助模型对不同分布进行平衡吗?该回答是NO。我们发现:个性化input是被淹没的,如图1(b)所示。在两种case中,我们使用相同的well-trained模型,当一些features会mask为0,并将activation差异进行可视化(近网络end,跨多个batches进行平均)。前者我们会将新用户indicator进行mask(0表示常规则用户、1表示新用户)。令人吃惊的是,activation几乎是保持不变。原因是:这样的features会非常不均衡:在所有样本中,新用户样本量少于5%。在训练过程中,该indicator在大多数时候几乎不会变更,因此该feature变得可有可无。作为对比,我们会对一个well-balanced feature(user country)进行mask。不同于前者,activation会有大变化。以上的观察建议:一个普通模型结构对于维持个性化来说是不充分的。

图片名称

图2 Kwai中的大规模推荐系统。有三个stages:embedding generation,序列型特征建模(MHA)、多任务优化(MMoE)

在本paper中,我们提出了一个有效的模型来解决上述问题:Personalized COld Start MOdules (POSO)。

  • 首先,POSO会通过分配独立的modules组合来让不均衡样本相等,每个module只会关注于它分配的user groups。
  • 接着,POSO会生成个性化gates,区别于原始个性化features。
  • 最后,gate和module outputs会组合来形成综合表示

它的有效性有两部分:

  • 1) 不管样本是占大多数还是占少数,样本实际上都会被分配给特定的子模块(sub-modules),
  • 2) Gating network被选中的个性化features完全决定(称为:”个性化码:Personalization Code”),它会避免它的“淹没”。POSO会强制个性化,对不同分布进行balance,并缓和冷启问题。POSO不会为作一个单独方法进行服务。它会集成到许多已经存在的modules中,比如:MLP、Multi-head Attention(MHA)、MMoE。通过进行合理近似和详细分析,我们会派生出它的个性化版本,它会带来引人注目的增长,同时计算开销很小。

POSO的一个优点是:它对大规模系统很有利:

  • 1)它遵循标准的训练过程,不同于meta-learning-based方法(它会将训练数据split成support/query set,并可能减慢训练速度)
  • 2)计算开销是可忽略的
  • 3)它可以被用到其它数据不均衡问题,它可以广泛存在于users/items/countries/regions。

我们在大规模推荐系统Kwai上开展实验。在真实场景中,POSO(MLP)/POSO(MHA)/POSO(MMoE) 一致性提升该效果,并效果好于已存在方法。当部署到我们的在线系统,它对于新用户带来+7.75% Watch Time和+1.52% Retention Rate。除了user cold-start场景,提出的架构提升了item cold start(对于新视频带来+3.8% Watch Time),效果好于在MovieLens 20M dataset上的已存在方法。

该paper的贡献总结如下:

  • 1) 展示了个性化淹没问题
  • 2) 提出了一个称为POSO的新方法
  • 3) 提出详细推导并展示了POSO可以被集成到许多modules中

4.个性化冷启模块(POSO)

众所周知,推荐系统缺乏新用户的初始数据。然而,我们认为一个问题被忽视了:个性化的“淹没”,这意味着由于数据不平衡,,尽管提供了个性化特征,推荐系统未能做到对各种分布的平衡。

首先,我们展示了新用户的行为分布与常规用户非常不同。在图1(a)中,我们会对新/常规用户的后验行为进行可视化。我们展示了新用户指标的相对差异。我们观察到:

  • 1)新用户会生成更低的VV(Video View)
  • 2)新用户具有更高的Finish-View Rate,但具有更低的单次观看时间(per-play Watch Time)。他们会喜欢短视频,但在长视频上具有更少的耐性
  • 3)新用户趋向于使用更高频的“like”,看起来对广泛的视频感兴趣。

所有观察暗示着:新用户的行为会与常规用户具有非常不同的分布。

有人可能认为,现有模型通过使用个性化特征来隐式地平衡各种分布,例如使用一个indicator来区分新/常规用户。然而,由于数据不平衡,这些特征被淹没了。在图1(b)中,我们利用一个经过良好训练的模型,屏蔽个性化特征并可视化激活(activation)差异。令人惊讶的是,屏蔽严重不平衡的新用户指标几乎没有影响激活。相反,当屏蔽平衡良好的用户国家特征时,激活(activation)显著改变。由于新用户仅占5%的样本,大多数情况下,该indicator保持不变。模型很容易关注其他特征来寻找解决方案,并“忘记”新用户指标,这对于冷启动问题至关重要。我们将这种问题称为个性化的“淹没”。

在本文中,我们从模型结构的角度来增强个性化特征。我们会通过分配单独的模型组合来对不平衡的个性化特征进行平衡,以解决“淹没”问题。理想情况下,你可以为一个指定用户构建一个独立模型(exclusive model):

\[y^u = f^u (x^u)\]

…(4)

其中:

  • x, y, f分别表示inputs、outputs、以及模型
  • 上标u表示一个指定用户

在这样的scheme中,个性化在相应的模型中完全保留。不幸的是,由于用户数量庞大,上述提议是不可行的。一个可能的解决方案是:为每种类型的用户群组(比如:新用户、回流用户)建立相应的独立模型。一个具体的用户可以被视为各种用户群组的组合(例如,一个用户可以是一半不活跃用户和一半常规用户)。随后,我们可以将特定用户的预测分解为用户组预测的组合:

\[y^u = \sum\limits_{i=1}^N w_i f^{(i)}(x)\]

…(5)

其中:

  • i表示模型index
  • 我们有N个模型

实验上,很难生成\(w_i\)。作为替代,我们使用门控网络(gating networks)来从个性化特征中生成\(w_i\):

\[w_i = [g(x^{pc})]_i\]

其中:

  • pc表示个性化编码(Personalization Code),例如:标识用户群组的关键特征。

因此,我们仍然需要准备𝑁个独立模型来捕捉用户群组的兴趣,它是计算密集型的。我们方法的一个关键点是:我们会在中间模块(intermediate modules)上进行分解,并保持其余模块不变:

\[\widehat{x} = C \sum\limits_{i}^N [g(x^{pc})]_i f^{(i)}(x)\]

…(6)

其中:

  • f表示当前modules
  • $\widehat{x}$和 $x$是两相邻接layers的activations

注意,在g(x)的求和上没有限制,为了避免整体尺度漂移,我们使用了一个修正因子C

等式6展示了提出方法的原型。由于它将个性化引入了中间模块中,我们将它命名为““个性化冷启动模块(POSO)”。

POSO的设计会以下原则标记:Personalization。POSO会从两方面来解决淹没问题:

  • 1)通过分配多个模块(modules)和门控(gates)来均衡特征。尽管常规用户数据占主导地位,由于POSO会利用另一个集合的modules和gates来做出预估,因而新用户不会被忽略。
  • 2)当应用任何一层layer时,POSO都会通过原始特征来进行个性化(而非second-hand activations),这是很难通过self-learning(比如:MoE)技术达到的。

灵活性(Flexibilit)

请注意,POSO不是一个独立的模块,而是个性化现有模块的一种通用方法。POSO可以集成到许多现有方法中,并为它们提供个性化。接下来,我们将推导MLP、MHA和MMoE的个性化版本。我们也相信,当应用于其他未开发的模块时,它具有良好的前景。

无后效性(Non-aftereffect)

POSO的子模块共享相同的输入,它们的输出会被最终融合成单一的综合结果。这确保了结构上的独立性。上游模块和下游模块之间没有引入依赖关系。

4.1 线性变换的POSO

我们从最基础的module开始:线性转换;它被公式化成:\(f(x) = Wx\),其中:\(x \in R^{d^{in}}\)和\(\widehat{x} \in R^{d^{output}}\)。将公式替换成等式(6)给出:

\[\widehat{x} = C \sum\limits_{i=1}^N [g(x^{pc})]_i W^{(x)} x\]

…(7)

特别的,\(\widehat{x}\)的第p个entry为:

\[\widehat{x}_p = C \sum\limits_{i=1}^N \sum\limits_{q=1}^{d^{in}} [g(x^{pc})]_i W_{p,q}^{(i)} x_q\]

…(8)

其中:\(W_{p,q}^{(i)}\)指的是\(W^{(i)}\)在位置(p,q)的元素。尽管等式(8)引入了N倍的复杂度,足够自由的参数允许我们在灵活方法下进行简化。这里我们展示了一种简单但有效的方法。假设:\(N = d^{output}, W_{p,q}^{(i)} = W_{p,q} \forall p, q\)。。。我们有:

\[\widehat{x}_p = C \cdot [g(x^{pc})]_p \sum\limits_{q=1}^{d^{in}} W_{p,q} x_q\]

…(9)

或等价的:

\[\widehat{x} = C \cdot g(x^{pc}) \odot Wx\]

…(10)

其中:

\(\odot\)表示element-wise乘法。这种简单导致一个计算效率操作:通过个性化gates只在原始output上应用element-wise乘法。

4.2 MLP的POSO版

根据第4.1节中的相似派生,带activation funciton的个性化版本的FC设计如下:

\[\widehat{x} = C \cdot g(x^{pc}) \odot \sigma(Wx)\]

…(11)

其中,\(\gisma\)表示activation function。它表示了与LHUC的一个相似形式,它的hidden unit贡献被通过个性化gates(personalized gates)替代。

天然的,MLPs的个性化版本,称为:POSO(MLP),通过将personlized FCs进行stack来得到。它的框架如图3(a)所示。在表1中,我们描述了每个module的参数和FLOPs,并指出提出的modules是计算上高效的。

图片名称

图3 使用POSO的个性化模块:(a) POSO(MLP),会分别mask在每个layer中的每个activation (b) 在POSO(MHA)中,Q不是个性化的,K是轻量级个性化,V是完全个性化 (c) 在POSO(MMoE),个性化首先会被采纳,接着该output会feed特定的任务。POSO的所有modules通过黄色表示。

4.3 MHA的POSO版

在本部分,我们会生成Multi-Head Attention(MHA) module的POSO版本。我们首先考虑single head的公式:

\[\widehat{x} = softmax(\frac{QK^T}{\sqrt{d^h}})V\]

…(12)

通过将等式(12)代入等式(6)作为\(f^{(i)}\),我们有:

\[\widehat{x} = C \sum\limits_{i=1}^N [g(x^{pc})]_i (softmax(\frac{QK^T}{\sqrt{d^h}}) V^{(i)})\]

…(13)

该naive实现引入了multi-fold Q, K, V。尽管提升了该效果,它的计算开销很大。为了减少开销,我们会重新考虑Q, K, V的角色。

首先,Q包含了除历史行为的所有user features,因此它已经是高度个性化的。因此,我们只设置:\(Q^{(i)} = Q, \forall i.\)。另一方面,\(V^{i}\)涉及很少用户信息。考虑到V直接决定了output,我们会在multi-fold \(V^{(i)}\)上不作任何简化。我们注意到,使用multi-fold K会引入冗余的自由参数,因为由K和Q生成的attention weight要比K本身具有更低维。可选的,对于element-wise乘法的一个个性化gate \(G^k\)对于调整attention weight来说是足够的,例如:\(K^{(i)} = G^k (x^{pc}) \odot K\)。

至今,Q、K同时变得与i不相关,因而可以从求和中移除。等式(13)接着被简化为:

\[\widehat{x} = C \cdot softmax( )\]

…(14)

总之,我们会分别在三个levels上个性化components:对Q没有个性化,对K做轻量级个性化,对V做完全个性化。在三个tensors上的个性化也会遵循在 MHA中的角色。最终,对于multi-head的cases,每个head的outputs会concatenated一起来形成该representations。

提出的module被称为“POSO(MHA)”,它的framework如图3(b)所示。在我们的场景中,对比起原始版本的MHA,POSO(MHA)具有相当的复杂度(见表1),但有极好的效果。

4.4 MMoE的POSO版本

在本部分,我们描述了MMoE的POSO版本。将等式2代入等式6到:

\[\widehat{x}^t = C \sum\limits_{i=1}^N [g(x^{pc})]_i (\sum\limits_{j}^{N^e}[g^t(x)]_j e^{(j)}(x))\]

…(15)

其中:

  • i,j,t 分别索引了personalized gates、experts和tasks。

在等式15中,存在两个隐式约束:每个group的experts会共享个性化gate \(g^{(i)}\),每个group的\(g^t\)会通过softmax进行归一化。我们将该约束进行放松来简化该实现。首先,我们允许每个expert具有它自己的personalized gate。接着,我们实现了在所有task gates上的normalization。我们有:

\[\widehat{x}^t = C \sum\limits_{i=1}^N \sum\limits_{j=1}^{N^e} [g(x^{pc})]_{ij} [g^t(x)]_{ij} e^{(ij)}(x)\]

…(16)

其中:

  • \(g^t\)会通过(i, j)的所有pair进行归一化。

注意在等式(16)中,索引i和索引j会联合索引 experts。假设:\(\widehat{N} = N N^e\),我们可以对modules进行re-index,并重写上述的等式:

\[\widehat{x}^t = C \sum_{i=1}^{\widehat{N}} [g(x^{pc})]_i [g^t(x)]_i e^{(i)}(x) \\ g^t(x) = softmax(W^t x)\]

…(17)(18)

整体unit count \(\widehat{N}\)实际上是一个超参数,它可以被人工调节。在我们的实验中,我们设置成\(\widehat{N} = N\)来节约计算复杂度。

在等式(17)中,我们获得最终版本的personalized MMoE,称为:POSO(MMoE)。该实现相当轻量级(见表1):你可以保持MMoE的所有结构,并只要通过它的personlized gate来将每个expert进行mask,如图3(c)所示。

POSO(MMoE)如何提升experts的效果呢?在MMoE中,experts是task-aware的,但在样本上具有模糊知识。在POSO(MMoE)中,experts是个性化激活的(personlized activated):如果属于新用户的样本在\(g[\cdot]_i\)中生成更高的weight,相应的第i个expert会获得更高的学习权重,并变得对新用户更敏感,反之亦然。在这样的方式下,experts会变得specialized。我们可以说:experts不仅是task-aware,在user groups上也是field-aware的。在第5.6节中,我们会在MHA中对value矩阵的gating network outputs进行可视化。他们会被相似地进行larly speci

4.5 POSO对Cold start作用

现在,我们展示了如何POSO的知识,来缓解cold start问题。

User Cold Start

新用户被定义成:首个launch会发生在\(T_{du}\)个小时内的用户。对于user cold start,我们会利用一个细粒度feature来展示:对该用户有多少items会被曝光,例如: bucketized Accumulated View Count。该feature被feed到gating network g中作为PC。在每个module中,我们会为gating network保持相同的input,并增强个性化。

Item Cold Start

新item(video)的定义有两方面:

  • 1) 在\(T_{dv}\)天内上传的
  • 2)整体曝光数小于\(T_s\)

相似的,我们可以利用(exploit)video age来区分常规/新 视频。它仍能生成个性化,但从videos的视角。

在本paper中, gating network会由two-layer MLP组成,它的outputs会由sigmoid functions激活。

实验

阿里在《Revisit Recommender System in the Permutation Prospective》中提出了PRS:

1.介绍

。。。

不同于在matching和ranking stages中采用的point-wise方法,通常在reranking阶段会采用许多list-wise的方法。广泛使用的listwise方法的pipeline通常具有三个关键组件:

  • 1)Ranking:会根据基础的ranking model的scores生成initial list
  • 2) Refining:initial list的list-wise feature分布通常会通过一个设计良好的模型(LSTM&self-attention等)来refine它的rating scores
  • 3) Re-ranking:通过refined list-wise rating scores以贪婪方式对候选items进行rerank

总之,已经存在的list-wise方法在推荐中达到效果提升,主要是通过建模list-wise feature分布来聚焦对item rating scores进行refining。

然而,以排列(permutation)的视角看,流行的reranking pipeline不能帮助当前的RS来达到排列最优(permutation-optimal),因为会忽略推荐结果内的排列变化影响(permutation-variant influence)。如图1(1)所示,这里是从真实数据集中收集到的两个推荐结果。它们由相同的items组成并且展示给相同的用户,令人吃惊的是,用户会对排列2做出响应而非1。一个可能的原因是:将更昂贵的item B放置在前,可以促进用户希望去购买更便宜的item A。我们将这种由排列变化造成用户决策的影响称为:在推荐结果内的“排列变化影响(permutation-variant influence)”。通过解决这样的排列变化影响,理想的方法会推荐排列2给用户,它从排列角度上来说是更优的结果。而在排列2中的item A的监督训练,图1(2)所使用的list-wise模型只能获得当遇到共享initial list(比如:item B,A,C)时的item A的优先级。毕竟,list-wise模型会以贪婪的方式通过refined rating scores(例如:排列1)对items进行rerank,从而忽略掉更好的排列2。理想的,图1(3)中permutation-wise方法,通过将item B放置在A之前(从排列1变为排列2),item A的预测的交互概率会获得极大提升,这主要有助于更好地对排列2做出正确判断。相应的,这样包含在lists中的排列变化影响的完整考虑和使用,扮演着重要的角色来近似permutation-optimal推荐结果、以及更好的用户体验。

图片名称

图1 (1)真实case (2) 和(3)表示在该case下list-wise和permutation-wise方法的对比

实验上,这样的排列会对当前RS潜在带来新挑战,它可以归纳为两个部分:

  • 1) 指数级解。假设从size m=100的initial list中需要推荐n=10个items。当前RS会将它看成是一个检索任务,在re-ranking阶段部署list-wise模型会搜索在O(m)的解空间。然而,以排列的角度,解空间会从O(m)膨胀\(O(A_m^n)\)(接近\(O(100^{10})\))。考虑到在最终item lists中的排列变化影响,用户会对每个list做出不同的响应。实际上,只有一个list会最终推荐给用户,因而如何有效且高效地达到permutation-optimal list会给当前RS带来新挑战。
  • 2) permutation-wise evaluation。当前RS使用的大多数方法,会尝试point-wise的方式预测user-item交互概率(例如:CTR和转化率)。如上所述,它需要提供一个统一的permutation-wise ranking准则,来从大量合规的lists中选取permutation-optimal的list,在当前的许多工作中均没有涉及到。

图片名称

图2

在本工作中,如图2所示,我们进一步将list-wise方法发展到一个新的permutation-wise框架,称为PRS(Permutation Retrieve System)。特别的,PRS会包含:PMatch(permutation-Matching)和PRank(Permutation-Ranking):

  • PMatch阶段会关注于以高效并行方式生成多个候选列表(candidate lists),目标是考虑上排列变化影响以及减轻指数解空间问题。这里我们提出了FPSA(Fast Permutation Searching Algrithm),一个permutation-wise和面向目标(goal-oriented)的beam search算法,来以一种高效方式生成candidate lists。
  • PRank stage会提供一个统一的ranking criterion来解决permutation-wise evaluation的挑战。我们会在提出的模型DPWN(Deep Permutation-Wise Network)上使用Bi-LSTM,有了它,排列变化影响可以完全解决。另外,我们提出LR(List Reward)metric来对candidate lists进行排序,它可以通过添加在candidate list中每个item的DPWN的rating scores来进行计算。最后,具有最高LR score的list会被推荐给用户。

为了演示PRS的效果,我们在alimama数据集和taobao数据集上执行一系列实验。实验结果表明它可以胜过SOTA的方法。另外,PRS成功部署到taobao应用场景上,并获得了11%的PV(Page)效果提升、在IPV(Item Page View)获得8.7%的提升。

2.相关工作

。。。

3.准备工作

通常,一个web-scale推荐系统(例如:电商和新闻)由三个stages组成:matching、ranking、reranking。在本paper中,我们关注最终的re-ranking阶段,它的input为由前两stage生成的ranking list(例如:matching和ranking)。reranking的任务是:会精心选择来自input ranking list的候选,并将它们进行重新安排(rearrange)到final item list中,接着展示给用户。数学上,有了user set U和item set I后,我们将list交互记录(list interaction records)标记成:

\[R = \lbrace (u, C, V, y^{CTR}, y^{NEXT} | u \in U, V \subset C \subset I) \rbrace\]

这里:

  • C:表示的是记录的具有m个items的input ranking list,用于reranking stage,
  • V:表示的是具有n个items的final item list,它会最终展示给user u,通常:\(n <= m\)
  • \(y_t^{CTR} \in y^{CTR}\):是user u 对于第t个item \(v_t \in V\)的implicit feedback,其中:当交互(例如:click)被观察到后\(y_t^{CTR} = 1\),否则:\(y_t^{CTR}=0\)。
  • \(y_t^{NEXT}=1\):表示用户在该item之后的持续浏览,否则\(y_t^{NEXT}=0\)。

在真实工业推荐系统中:

  • 每个user u会与一个user profile \(x_u\)相关,它包含了sparse features \(x_s^u\)(例如:user id和gender)和dense features \(x_d^u\)(例如:age)
  • 每个item i也会与一个item profile \(x_i\)相关,它包含了sparse features \(x_i^s\)(例如:item id和brand)和dense features \(x_i^d\)(例如:price)

给定上述定义,我们现在将reranking任务公式化为:

定义1: 任务描述

通常的,工业RS的目标是:使得用户消费更多浏览(PV: page view)和interactions(IPV: item page view),对于reranking任务也相同。给定一个特定用户u,以及他的input ranking list C,该任务是学习一个reranking strategy \(\pi: C \xrightarrow{\pi} P\),它的目标是:从C中对items进行选择和重安排,接着推荐一个final item list P。

4.提出的框架

在本节中,我们介绍permutation-wise框架PRS,它的目标是有效和高效地利用排列变化影响(permutation-variant influence)以便更好地在RS的reranking环节进行item重安排(rearrangements)。为了解决指数解空间,以及permutation-wise evaluation挑战,我们将reranking任务转换成两个后继stages:Permutation-Matching(PMatch)和Permutation-Ranking(PRank)。在PMatch阶段,多个有效算法可以并行方式部署以便考虑上排列变化影响,并从指数解空间中有效搜索candidate item lists。接着,PRank阶段提出了LR metric作为一个统一的permutation-wise ranking规则来进行评估candidate item list set,其中具有最高的LR score的list会被最终推荐。关键概念会归纳在表1中。

图片名称

表1

首先,我们从users和items的representations开始,它是我们提出的框架的基础inputs。从之前的工作中,我们会为users和items将可提供的profiles参数化成vector representations。给定一个user u,它相关的sparse features \(x_u^s\)和dense features \(x_u^d\),我们将每个sparse feature value嵌入到d维空间中。接着,每个user可以表示成:

\[x_u \in R^{\mid x_u^s \mid \times d + \mid x_u^d \mid}\]

其中:

  • \(\mid x_u^s \mid\)和\(\mid x_u^d \mid\)分别表示user u的sparse和dense feature space的size。

相似的,我们将每个item i表示成:

\[x_i \in R^{\mid x_i^s \mid \times d + \mid x_i^d \mid}\]

天然的,我们将input ranking list C记录成:

\[C = [x_c^1, \cdots, x_c^m]\]

以及将final item list V标记成:

\[V = [x_v^1, \cdots, x_v^n]\]

其中:

  • m和n:分别是在input ranking list和final item list中的items数目。

在下面章节中,我们会放大到PMatch。对于每个stage,我们将介绍划分成两部分:一个是offline training(preparation),另一个是online serving(inference)。这两部分的主要不同是:R中的\(V, y^{CTR}, y^{NEXT}\)是在offline training给出,而不是在online serving中

4.1 PMatch阶段

PMatch stage提出是为了以一个更高效方式获得多个有效的candidate lists。如图3所示,有许多算法【1,25,26,35】可以并行部署来生成item lists,接着通过list merge操作合并成candidate list set。尽管有管,当前努力会忽略在最终item list中的排列变化影响,我们提出了一个permutation-wise和goal-oriented beam search算法,称为FPSA(Fast Permutation Searching Algorithm)。

图片名称

图3 PRS框架的整体架构

4.1.1 offline training

为了使得用户进行更多的浏览和交互,除了常规使用的CTR score外,我们首先设计NEXT score,它会预测:用户在这个item之后是否持续浏览的概率。具有更高NEXT scores的items可以增加用户持续浏览的动力,它会提升后续items被浏览和点击的概率。

特别的,有了labeled interaction记录R,我们会详细说明两个point-wise models:

  • CTR预估模型:\(M^{CTR}(v \mid u; \theta^{CTR})\)
  • NEXT预估模型:\(M^{NEXT}(v \mid u; \theta^{NEXT})\)

它们的计算如下:

\[\begin{align} \hat{y}_t^{CTR} & = M^{CTR}(v | u; \theta^{CTR}) \\ & = \sigma(f(f(f(x_v \oplus x_u)))) \\ \hat{y}_t^{NEXT} & = M^{NEXT}(v | u; \theta^{NEXT}) \\ & = \sigma(f(f(f(x_v \oplus x_u)))) \end{align}\]

…(1)

其中:\(f(x) = ReLU(Wx+b)\),\(\sigma(\dot)\)是logistic function。两个模型可以通过binary cross-entropy loss function进行优化,定义如下:

\[\begin{align} L^{CTR} & = - \frac{1}{N} \sum\limits_{(u,V) \in R} \sum\limits_{x_0^t \in V} (y_t^{CTR} log \hat{y}_t^{CTR} + (1 - y_t^{CTR}) log(1 - \hat{y}_t^{CTR})) \\ L^{NEXT} & = - \frac{1}{N} \sum\limits_{(u,V) \in R} \sum\limits_{x_0^t \in V} (y_t^{NEXT} log \hat{y}_t^{NEXT} + (1 - y_t^{NEXT}) log(1 - \hat{y}_t^{NEXT})) \end{align}\]

…(2)

我们会训练\(\theta^{CTR}\)和\(\theta^{NEXT}\),直到根据等式(2)收敛。

4.1.2 Online serving

在本工作中,我们将reranking task看成是:从input ranking list中顺序的选择items,直接达到预定义长度。Beam search【21,30】是一种常用的技术,它通过在一个有限集合中探索和扩展最可能的candidates,来生成多个有效lists。在FPSA算法中,我们以一种goal-oriented方式实现了beam search算法,也就是说:我们会在每个step选择具有最高estimated reward的lists

图片名称

图4 FPSA算法说明

我们会在图4和算法1中清楚展示和说明提出的FPSA算法。

  • 首先,我们会在input ranking list C中,通过收敛的CTR预估模型\(M^{CTR}(v \mid u; \theta^{CTR})\)和NEXT prediction 模型\(M^{NEXT}(v \mid u;\theta^{NEXT})\)分别得到:点击概率为\(P_{c_i}^{CTR}\)和持续浏览概率\(P_{c_i}^{NEXT}\),并将两个predicted scores绑定到每个item \(c_i\)上。
  • 接着,在每一步我们会为在set S中的每个list穷举扩展剩余candidates,并根据它们 calculated estimated reward(第1-17行)保留top k的candidate lists

    在第18-28行,在每个step中,当迭代经过在list中的每个item时,我们会计算:transitive expose probability \(p^{Expose}\)乘以前面items的NEXT scores。受\(p^{Expose}\)的影响,我们会计算PV reward \(r^{PV}\)以及IPV reward \(r^{IPV}\),并在迭代的终点将它们的求和表示为reward \(r^{sum}\)。这里:\(r^{PV}, r^{IPV}, r^{sum}\)分别表示estimated PV、IPV以及该list的混合收益。

图片名称

算法1

在算法的结尾,我们会获得candidate list set \(S= \lbrace O_1, \cdots, O_t \rbrace_{size=k}\),它可以根据reward \(r^{sum}\)来直接选择top list。另外,从其它方法生成(例如:DLCM和PRM)的final item lists也可以合并到S中,并进一步通过后续的PRank stage来进行排序。

4.1.3 有效性研究

我们尝试改善FPSA算法的效率。特别的,我们会在ranking stage以并行方式部署CTR和NEXT prediction模型来对每个item的 CTR和NEXT scores进行打分(rate),它的算法复杂度是O(1)。对于算法1中的算法,我们会以并行方式执行6-15行的循环,并采用最小最大堆(min-max heaps)的排序算法来选择第16行的top-k结果。总之,当是算法1时,我们会将算法复杂度减小为\(O(n(n+k logk))\)

总之,FPSA的算法复杂度是\(a O(1) + b O(n(n+ k logk))\)。它要比已存在的list-wise方法(比如:DLCM【1】和PRM【26】)更高效,它们的复杂度为\(a O(n) + b O(n log n)\)。这里\(a >> b\)表示在深度模型中的矩阵计算开销要比数值型计算开销要多很多。(注:这里的n是final item list的size)

4.2 PRank stage

PRank stage为由PMatch stage生成的candidate list set提供了一个统一的permutation-wise ranking规则。当前RS的大多数方法,主要遵循基于rating scores的greedy strategy。尽管有效,但策略本身忽略了在final item list中的排列变化影响,因而不能评估排列。出于该目的,如图3的右边所示,我们提出了LR(List Reward)指标来从由PMatch stage中提供的candidate list set中选择permutation-optimal list,它通过对精心设计的permutation-wise模型DPWN(Deep Permutation-Wise Network)的rating scores计算得到。

4.2.1 Offline training

图片名称

图5 DPWN模型的技术架构

DPWN的总架构如图5所示。DPWN是为了捕获和建模由final item list包含的排列变化影响。通过考虑这样的动机,DPWN \(M(x_v^t \mid u, V; \theta^D)\),通过\(\theta^D\)进行参数化,来预测user u和第t个item \(x_v^t\)在final item list V中的permutation-wise交互概率。Bi_LSTM可以非常好地捕获这样的时间依赖(time-dependent)和在排列中的long-short term信息。数学上,对于第t个item \(x_v^t\)的forward output state可以如下进行计算:

\[i_t = \sigma(W_{xi} x_v^t + W_{hi} h_{t-1} + W_{ci}c_{t-1} + b_i) \\ f_t = \sigma(W_{xf} x_v^t + W_{hf} h_{t-1} + W_{cf}c_{t-1} + b_f) \\ c_t = f_t x_v^t + i_t tanh(W_{xc}x_v^t + W_{hc} h_{t-1} + b_c) \\ o_t = \sigma(W_{xo} x_v^t + W_{ho} h_{t-1} + W_{co} c_t + b_o) \\ \overrightarrow{h_t} = o_t tanh(c_t)\]

…(3)

其中:

  • \(\sigma(\cdot)\)是logistic function
  • i, f, o和c是input gate、forget gate、output gage以及cell vectors,它们具有相同的size为\(x_v^t\)。权重矩阵的shapes可以通过下标进行表示。相似的,我们可以得到backward output state \(\leftarrow{h_t}\)。接着,我们会将两个output states \(h_t = \rightarrow{h_t} \odot \leftarrow{h_t}\)进行拼接,并将\(h_t\)表示为序列表示\(x_v^t\)。

由于在CTR预估领域,建模复杂交互的强大能力,我们将MLP集成到DPWN中以获得更好的特征交叉。这里,我们将Bi-LSTM公式化为:

\[M(x_v^t | u, V; \theta^D) = \sigma(f(f(f(x_u \oplus x_v^t h_t))))\]

…(4)

其中:

  • \[f(x) = ReLU(Wx+b)\]
  • \(\sigma(\cdot)\)是logistic function

DPWN的参数集合是\(\theta^D = \lbrace W_*, b_* \rbrace\),例如:是Bi-LSTM和MLP的参数的union。

很明显,DPWN可以通过binary cross-entropy loss function来进一步优化,它的定义如下:

\[L^D = - \frac{1}{N} \sum\limits_{(u,V) \in R} \sum\limits_{x_v^t \in V} (y_{uv}^t log \hat{y}_{uv}^t + (1 - y_{uv}^t) log(1 - \hat{y}_{uv}^t))\]

…(5)

其中,D是训练dataset。出于便利性,我们将\(\hat{y}_{uv}^t\)看成是\(M(x_v^t \mid u, V; \theta^D)\),\(y_{uv}^t \in \lbrace 0, 1 \rbrace\)是ground truth。我们可以通过最小化\(L^D\)来对参数\(\theta^D\)最优化。

注意,DPWN与当前list-wise方法的主要不同点是:DPWN会建模final item list,而非input ranking list。实际上,用户会更受展示的final item list的排列信息的影响。

4.2.2 Online serving

如上所述,我们基于DPWN模型提出了一个统一的permutation-wise LR metric,它被应用于:在PMatch stage生成的candidate list set达到最优的permutation-optimal list解。特别的,我们会计算:在candidate list set S中的每个list \(O_t\)的LR(list reward)score

\[LR(O_t) = \sum\limits_{x_o^i \in O_t} M (x_o^i | u, O_t)\]

…(6)

之后,具有最高LR score的list P会被最终选中并推荐给该user,获得permutation-optimal list的希望,最可能满足用户的需求。

最终,我们将PRS framework中的PMatch和PRank的online serving部分称为学到的reranking startegy \(\pi\),来从input ranking list C中生成permutation-optimal list P。

5.实验

在本节中,会开展许多在线和离线实验来验证PRS的有效性,目标是回答以下问题:

  • RQ1: 在PRank stage中提出的LR metric是如何准备评估permutations的收益(profits)的?
  • RQ2: 在PMatch stage中的FPSA算法,是如何以有效方式从指数级解空间中生成candidate list set的?
  • RQ3: 在真实推荐系统中PRS的效果如何?

5.1 实验设置

5.1.1 Datasets

。。。

5.2 效果对比(RQ1)

5.3 FPSA算法研究(RQ2)

5.4 在线AB测试(RQ3)

6.结论

huawei在2021《Cross-Batch Negative Sampling for Training Two-Tower Recommenders》中提出了一种cross-batch negative sampling的方法:

摘要

双塔结构被广泛用于学习item和user representations,它对于大规模推荐系统来说是很重要的。许多two-tower models会使用多样的in-batch negative sampling的策略,这些策略的效果天然依赖于mini-batch的size。然而,使用大batch size的双塔模型训练是低效的,它需要为item和user contents准备一个大内存容量,并且在feature encoding上消耗大量时间。有意思的是,我们发现,neural encoders在训练过程中在热启(warm up)之后对于相同的input可以输出相对稳定的features。基于该事实,我们提出了一个有效的sampling策略:称为“Cross-Batch Negative Sampling (CBNS)”,它可以利用来自最近mini-batches的encoded item embeddings来增强模型训练。理论分析和实际评估演示了CBNS的有效性。

3.模型框架

3.1 问题公式

我们考虑对于large-scale和content-aware推荐系统的公共设定。我们具有两个集合:

  • \[U = \lbrace U_i \rbrace_i^{N_U}\]
  • \[I = \lbrace I_j \rbrace_i^{N_I}\]

其中:

  • \(U_i \in U\)和\(I_j \in I\)是features(例如:IDs, logs和types)的预处理vectors集合

在用户为中心的场景,给定一个带features的user,目标是:检索一个感兴趣items的子集。通常,我们通过设置两个encoders(例如:“tower”):

\[f_u: U \rightarrow R^d, g_v: I \rightarrow R^d\]

之后我们会通过一个scoring function估计user-item pairs的相关度:

\[s(U,I) = f_u(U)^T g_v(I) \triangleq u^T v\]

其中:

  • u,v分别表示来自\(f_u, g_v\)的user、item的encoded embeddings

3.2 基础方法

通常,大规模检索被看成是一个带一个(uniformly)sampled softmax的极端分类问题(extreme classification):

\[p(I | U; \theta) = \frac{e^{u^T v}}{e^{U^T v} + \sum\limits_{I^- \in N} e^{U^T v^-}}\]

…(1)

其中:

  • \(\theta\)表示模型参数
  • N是sampled negative set
  • 上标“-”表示负样本

该模型会使用cross-entropy loss(等价为log-likelihood)进行训练:

\[L_{CE} = - \frac{1}{|B|} \sum\limits_{i \in [|B|]} log p(I_i | U_i; \theta)\]

…(2)

图片名称

图1 双塔模型的采样策略

为了提升双塔模型的训练效率,一个常用的抽样策略是in-batch negative sampling,如图1(a)所示。具体的,它会将相同batch中的其它items看成是负样本(negatives),负样本分布q遵循基于item frequency的unigram分布。根据sampled softmax机制,我们修改等式为:

\[P_{In-batch} (I | U; \theta) = \frac{e^{s'(U,I;q)}}{e^{s'(U,I;q)} + \sum_{I^- \in B \ \lbrace I \rbrace} e^{s'(U, I^-;q)}} \\ s'(U, I;q) = s(U,I) - log q(I) = u^T v - log q(I)\]

…(3)(4)

其中:

  • logq(I) 是对sampling bias的一个correction。

In-batch negative sampling会避免额外additional negative samples到item tower中,从而节约计算开销。不幸的是,in-batch items的数目batch size线性有界的,因而,在GPU上的受限batch size会限制模型表现

3.3 Cross Batch Negative Sampling

3.3.1 Nueral model的embedding稳定性(embedding stability of neural model)

由于encoder会在训练中持续更新,来自过往mini-batches的item embeddings通常会被认为是过期并且丢弃。然而,因为embedding stability of neural model,我们会识别这样的信息,并且被复用成一个在当前mini-batch的valid negatives。我们会通过估计item encoder \(g_v\)的feature drift【26】来研究该现象,feature drift定义如下:

\[D(I, t; \Delta t) \triangleq \sum\limits_{I \in I} \| g_v(I; \theta_g^t) - g_v(I; \theta_g^{t - \Delta t}) \|_2\]

…(5)

其中:

  • \(\theta_g\)是\(g_v\)的参数
  • \(t, \Delta_t\)分别表示训练迭代数和训练迭代间隔(例如:mini-batch)

我们会从头到尾使用in-batch negative softmax loss来训练一个Youtube DNN,并计算具有不同间隔\(\lbrace 1,5,10 \rbrace\)的feature drift。

图片名称

图2 YoutubeDNN的Feature drift w.r.t. Δts, 数据集:Amazon-Books dataset

如图2所示,features会在早期激烈变化。随着learning rate的减小,在\(4 \times 10^4\)次迭代时features会变得相对稳定,使得它可以合理复用它们作为合法负样本(valid negatives)。我们将这样的现象称为“embedding stability”。我们进一步以公理3.1方式展示:embedding stability会提供一个关于scoring function的gradients error上界,因此, stable embeddings可以提供合法信息进行训练。

引理3.1 假设:\(\| \hat{v}_j - v_j \|_2^2 < \epsilon\),scoring function的output logit是\(\hat{o}_{ij} \triangleq u_i^T \hat{v}_j\)并且user encoder \(f_u\)满足Lipschitz continuous condition,接着:gradient w.r.t user \(u_i\)的偏差为:

\[|| \frac{\partial \hat{o}_{ij}}{\partial \theta} - \frac{\partial o_{ij}}{\partial \theta} ||_2^2 < C \epsilon\]

…(6)

其中:C是Lipschitz常数。

证明:近似梯度error可以被计算为:

\[\| \frac{\partial \hat{o}_{ij}}{\partial \theta} - \frac{\partial o_{ij}}{\partial \theta} \|_2^2 = \| \frac{\partial \hat{o}_{ij}}{\partial \theta} - \frac{\partial o_{ij}}{\partial \theta} ) \frac{\partial u_i}{\partial \theta} \|_2^2 = \| (\hat{v}_j - v_j) \frac{\partial u_i}{\partial \theta} \|_2^2 \\ \leq \| \hat{v}_j - v_j \|_2^2 \|\frac{\partial u_i}{\partial \theta} \|_2^2 \leq \| \frac{\partial f_u(U_i;\theta^t)}{\partial \theta} \|_2^2 \epsilon \leq C \epsilon\]

…(7)(8)

经验上,线上的模型会保持\(C \leq 1\)。因而,gradient error可以通过embedding stability被控制。

3.3.2 对于Cross Batch Features使用FIFO Memory Bank

首先,由于embeddings在早期变化相对剧烈,我们会使用naive in-batch negative sampling对item encoder进行warm up到\(4 \times 10^4\)次迭代,它会帮助模型逼近一个局部最优解,并生成stable embeddings。

接着,我们开始使用一个FIFO memory bank \(M = \lbrace (v_i, q(I_i)) \rbrace_{i=1}^M\)训练推荐系统,其中:

  • \(q(I_i)\):表示在unigram分布q下item \(I_i\)的抽样概率,其中M是memory size。

cross-batch negative sampling(CBNS)配合FIFO memory bank如图1(b)所示,CBNS的softmax的output被公式化为:

\[p_{CBNS}(I | U; \Theta) = \frac{e^{s'(U,I;q)}}{e^{s'(U,I;q)} + \sum\limits_{I^- \in M U B \backslash \lbrace I \rbrace} e^{s'(U,I^-;q)}}\]

…(9)

在每次迭代的结尾,我们会enqueue该embeddings 以及 对应当前mini-batch的抽样概率,并将早期的数据进行dequeue。注意,我们的memory bank会随embeddings更新,无需任何额外计算。另外,memory bank的size相对较大,因为它对于这些embeddings不需要更多memory开销。

4.实验与结果

https://dl.acm.org/doi/pdf/10.1145/3404835.3463032

google在2021《Self-supervised Learning for Large-scale Item Recommendations》中在双塔模型中使用了SSL:

介绍

在本paper中关注的推荐任务是:给定一个query,从一个很大的item catalog中找出与该query最相关的items。large-scale item推荐的问题已经被多个应用广泛使用。一个推荐任务可以根据query类型划分为:

  • i) 个性化推荐: 此时query是一个用户
  • ii) item to item推荐:此时query是一个item
  • iii) 搜索(search):此时query是一个自由文本片段

为了建模一个query和一个item间的交叉,广告使用的方法是:embedding-based neural networks。推荐任务通常被公式化为一个极端分类问题(extreme classification problem):其中每个item被表示成在output space中的一个dense vector

图片名称

图1 模型结构:使用 query和 item representations的Two-tower DNN

该paper主要关注于two-tower DNNs(见图1),它在许多真实推荐系统中很常见。在该结构中,一个neural network会将一个item features的集合编码成一个embedding,使得它甚至适用于检索cold-start items。另外,two-tower DNN结构使得可以实时serving大量的items,将一个top-k NN搜索问题转成一个NIPS(Maximum-Inner-Product Search),可以在sublinear的复杂度中求解。

Embedding-based deep models通常具有大量参数,因为他们会使用高维embeddings进行构建,可以表示高维稀疏features,比如:topics或item IDs。在许多已经存在的文献中,训练这些模型的loss functions会被公式化为一个监督学习问题。监督学习需求收集labels(比如:clicks)。现代推荐系统会从用户侧收集数十亿的footprints,并提供大量的训练数据来构建deep models。然而,当它建模一个大量items问题时,数据仍会非常稀疏,因为:

  • 高度倾斜的数据分布:queries和items通常会以一个二八分布(power-law)方式高度倾斜。因此,只有一小部分流行的items会获得大量的交互。这使得长尾items的训练数据非常稀疏
  • 缺乏显式用户反馈:用户经常提供许多隐式正向反馈,比如:点击或点赞。然而,像显式反馈(item评分、用户喜好度反馈、相关得分)等非常少。

自监督学习(SSL:Self-supervised learning)会提供一个不同的视角来通过unlabeled data来提升deep表征学习。基本思想是:使用不同的数据增强(data augmentations)来增强训练数据,监督任务会预测或重新设置原始样本作为辅助任务(auxiliary tasks)。自监督学习(SSL)已经被广泛用在视觉、NLP领域。

  • CV中的一个示例是:图片随机旋转,训练一个模型来预估每个增强的输入图片是如何被旋转的。
  • 在NLU中,masked language任务会在BERT模型中被引入,来帮助提升语言模型的预训练。
  • 相似的,其它预训练任务(比如:预估周围句子、将wikipedia文章中的句子进行链接)已经被用于提升dual-encoder type models.

对比起常规则的监督学习,SSL提供互补目标(complementary objectives),来消除人工收集labels的前提。另外,SSL可以利用input features的内部关系来自主发现好的语义表示。

SSL在CV和NLP中的广泛使用,但在推荐系统领域还没有被研究过。最近的研究[17,23,41],会研究一些正则技术,它用来设计强制学到的表示(例如:一个multi-layer perception的output layer),不同样本会相互远离,在整个latent embedding space中分散开来。尽管SSL中共享相似的精神,这些技术不会显式构建SSL任务。对比起CV和NLU应用中的建模,推荐模型会使用极度稀疏的input,其中高维categorical featurers是one-hot()编码的,比如:item IDs或item categories。这些features通常被表示为在深度模型中的可学习embedding vectors。由于在CV和NLU中大多数模型会处理dense input,创建SSL任务的已存在方法不会直接应用于在推荐系统中的稀疏模型。最近,一些研究研究SSL来改进在推荐系统中的sequential user modeling。。。。

2.相关工作

。。。

3.方法

我们使用自监督学习框架来进行DNN建模,它会使用大词汇表的categorical features。特别的,一个常见的SSL框架会在第3.1中引入。在第3.2节中,我们提出一个数据增强方式,用来构建SSL任务,并详述 spread-out regularization的connections。最后,在第3.3节中,我们通过一个multitask learning框架,描述了如何使用SSL来改进factorized models(图1中的 two-tower DNNs)。

3.1 框架

受SimCLR框架的启发,对于visual representation learning,我们采用相似的对比学习算法来学习categorical features的表示。基本思想是两部分:

  • 首先,对于相似的训练样本,我们使用不同的数据增强来进行学习表示;
  • 接着使用contrastive loss函数来鼓励从相同训练样本中学习的representations是相似的。contrastive loss会被用于训练two-tower DNNs(见:[23, 39]),尽管这里的目标是:使得正样本(postive item)会与它相应的queries一致。

我们会考虑关于N个item样本的一个batch:\(x_1, \cdots, x_N\),

  • 其中:\(x_i \in X\)表示了样本i的一个特征集合,

在推荐系统场景中,一个样本由一个query、一个item或一个query-item pair构成。假设:存在一个关于转换函数对(transform function pair):\(h, g: X \rightarrow X\),它会将\(x_i\)分别增强为\(y_i, y_i'\)

\[y_i \leftarrow h(x_i), y_i' \leftarrow g(x_i)\]

…(1)

给定关于样本i的相同输入,我们希望学习在增强后(augmentation)不同的表示\(y_i, y_i'\),确认模型仍能识别\(y_i\)和\(y_i'\)代表相同的input i。

  • 换句话说,contrastive loss会学习最小化在\(y_i, y_i'\)间的不同之处
  • 同时,对于不同的样本i和j,contrastive loss会最大化在数据进行不同增强后在学到的\(y_i, y_i'\)间的representations的不同之处

假设:\(z_i, z_i'\)表示通过两个nueral networks \(H, G: \rightarrow R^d\)对\(y_i, y_i'\)进行编码后的embeddings,也就是说:

\[z_i \rightarrow H(y_i), z_i' \leftarrow G(y_i')\]

…(2)

我们将:

  • \(z_i, z_i'\)看成是postive pairs
  • \((z_i, z_j')\)看成是negative pairs,其中:\(i \neq j\)

假设:\(s(z_i, z_j') = \frac{<z_i,z_j'>}{\| z_i \| \cdot \|z_j'\|}\)(即余弦相似度)。为了鼓励上述的属性,我们将一个关于N个样本\(\lbrace x_i \rbrace\)的batch的SSL loss定义为:

\[L_{self} ( \lbrace x_i \rbrace; H, G) := -\frac{1}{N} \sum\limits_{i \in [N]} log \frac{exp(s(z_i, z_i')) / \tau}{\sum\limits_{i \in [N]} exp(s(z_i, z_j'))/ \tau}\]

…(3)

其中:

  • \(\tau\)是一个对于softmax temperature可调的超参数。

上述的loss function学习了一个健壮的embedding space,使得:在数据增强后相似items会相互更近些,随机样本则会被push更远。整个框架如图2所示:

图片名称

图2 self-suprevised learning框架说明。两个数据增强h和g会被应用到input上;encoders H和G会被应用到增强样本\(y_i\)和\(y_i'\)来生成embeddings \(z_i\)和\(z_i'\)。SSL loss \(L_{self} w.r.t. z_i\)会朝着最大化与\(z_i'\)的相似度、以及最小化\(z_j\)和\(z_j'\)的相似度的方式进行

Encoder结构

对于categorical features的输入样本,通常在其上使用一个input layer和一个multi-layer perceptron(MLP)来构建H, G

  • input layer:通常是一个关于normalized dense features和多个sparse feature embeddings的concatenation,其中,sparse feature embeddings是学到的representations,会存储在embedding tables中(作为对比,CV和语言模型的input layers,会直接作用于raw inputs中)。

为了使用SSL对监督学习更容易,对于network H和G,我们会共享sparse features的embedding table。这取决于数据增强(h, g)的技术,H和G的MLPs可以被完全或部分共享。

Connection with Spread-out Regularization

如果是这样的特征:(h,g)是相同的map, H,G是相同的neural network,在等式(3)中的loss function退化为:

\[-\frac{1}{N} \sum_i log \frac{exp(1/\tau)}{ exp(1 / \tau) + \sum_{j \neq i} exp(s(z_i, z_j) / \tau)}\]

它会鼓励不同样本的representations具有很小的cosine相似度。该loss与[41]中引入的e spread-out regularization相近,除了:原文建议使用square loss,例如:\(\frac{1}{N} \sum\limits_i \sum\limits_{j \neq i} \langle z_i, z_j \rangle^2\),而非softmax。spread-out regularization已经被证明是会改进大规模检索模型的泛化性。在第4节中,我们展示了,引入特定的数据增强,使用SSL-based regularization可以进一步提升模型效果。

3.2 two-stage data augmentation

我们引入了数据增强,例如:在图2中的h和g。给定一个item features的集合,关键思想是:通过将部分信息进行masking,创建两个augmented examples。一个好的transformation和data augmentation应在该数据上做出最少的假设,以便它可以被应用于大量任务和模型上。masking的思想受BERT中的Masked Language Modeling的启发。不同于sequential tokens,features的集合不会有顺序,使得masking方式是一个开放问题, 我们会通过探索特征相关性(feature corelation)来找到masking模式。我们提出了相关特征masking(Correlated Feature Masking (CFM)),通过知道feature correlations,对于categorical features进行裁剪。

在详究masking细节前,我们首先提出一种two-stage augmentation算法。注意,无需augmentation,input layer会通过将所有categorical features embeddings进行concatenating的方式来创建。该two-stage augmentation包含:

  • Masking:通过在item features集合上使用一个masking pattern。我们会在input layer上使用一个缺省embedding来表示被masked的features
  • Dropout:对于multi-value的categorical features,我们会:对于每个值都一定概率来丢弃掉。它会进一步减少input信息,并增加SSL任务的hardness

masking step可以被解释成一个关于dropout 100%的特例,我们的策略是互补masking模式(complementary masking pattern),我们会将feature set分割成两个互斥的feature sets到两个增强样本上。特别的,我们可以随机将feature set进行split到两个不相交的subsets上。我们将这样的方法为Random Feature Masking(RFM),它会使用作为我们的baselines。我们接着介绍Correlated Feature Masking(CFM) ,其中,当创建masking patterns时,我们会进一步探索feature相关性。

Categorical Feature的互信息

如果整个feature set具有k个feature, 一旦masked features集合以随机方式选择,(h, g)必须从\(2^k\)个不同的masking patterns上抽样得到,这对于SSL任务会天然地导致不同效果。例如,SSL contrastive learning任务必须利用在两个增强样本间高度相关features的shortcut,这样可以使SSL任务太easy

为了解决该问题,我们提出将features根据feature相关性进行分割,通过互信息进行measure。两个类别型features的互信息如下:

\[MI(V_i, V_j) = \sum\limits_{v_i \in V_i, v_j \in V_j} P(v_i, v_j) log \frac{P(v_i, v_j)}{P(v_i)p(v_j)}\]

…(4)

其中:

\(V_i, V_j\)表示它们的vocab sets。所有features的pairs的互信息可以被预计算好

相关特征掩码(Correlated Feature Masking)

有了预计算好的互信息,我们提出Correlated Feature Masking (CFM),对于更有意义的SSL任务,它会利用feature-dependency patterns。对于masked features的集合\(F_m\),我们会寻找将高度相关的features一起进行mask。我们会:

  • 首先从所有可能的features \(F=\lbrace f_1, \cdots, f_k \rbrace\)中,均匀抽样一个seed feature \(f_{feed}\);
  • 接着根据与\(f_{seed}\)的互信息,选择top-n个最相关的features \(F_c = \lbrace f_{c,1}, \cdots, f_{c,n} \rbrace\)。我们会选择\(n = \lfloor k / 2 \rfloor\),以便关于features的masked set和retained set,会具有完全相同的size。我们会变更每个batch的seed feature,以便SSL任务可以学习多种masking patterns。

3.3 Multi-task训练

为了确保SSL学到的representations可以帮助提升主要监督任务(比如:回归或分类)的学习,我们会利用一个 multi-task training策略,其中:主要(main)监督任务和辅助(auxiliary) SSL任务会进行联合优化(jointly optimized)。准确的,

  • \(\lbrace (q_i, x_i)\rbrace\)是一个关于query-item pairs的batch,它从训练数据分布\(D_{train}\)抽样得到;
  • \(\lbrace x_i \rbrace\)是一个从item分布\(D_{item}\)抽样得到的items的batch;

那么,joint loss为:

\[L = L_{main} (\lbrace q_i, x_i) \rbrace) + \alpha \cdot L_{self} (\lbrace x_i \rbrace)\]

…(5)

其中:

  • \(L_{main}\):是main task的loss function,它可以捕获在query和item间的交叉
  • \(\alpha\):是regularization strength

不同样本分布(Heterogeneous Sample Distribution)

来自\(D_{train}\)的边缘item分布(The marginal item distribution)通常会遵循二八定律(power-law)。因此,对于\(L_{self}\)使用training item分布会造成学到的feature关系会偏向于head items。作为替代,对于\(L_{self}\)我们会从corpus中均匀抽样items。换句话说,\(D_{item}\)是均匀item分布。实际上,我们发现:对于main task和ssl tasks使用不同分布(Heterogeneous Distribution)对于SSL能达到更优效果来说非常重要

图片名称

图3 模型结构:带SSL的two-tower model。在SSL任务中,我们会在item features上使用feature masking和dropout来学习item embeddings。整个item tower(红色)会与supervised task共享

Main task的loss

对于依赖objectives的main loss来说有多个选择。在本paper中,对于优化top-k accuracy,我们考虑batch softmax loss。详细的,如果:

  • \(q_i, x_i\)是关于query和item样本\((q_i, x_i)\)的embeddings(它会通过两个neural networks编码得到),

那么对于一个关于pairs \(\lbrace (q_i, x_i) \rbrace_{i=1}^N\)的batch和temperature \(\tau\),batch softmax cross entropy loss为:

\[L_{main} = - \frac{1}{N} \sum\limits_{i \in [N]} log \frac{exp(s(q_i, x_i)/\tau)}{\sum\limits_{j \in [N]} exp(s(q_i, x_j) / \tau)}\]

…(6)

其它Baselines。如第2节所示,对于main task,我们使用two-tower DNNs作为baseline模型。对比起经典的MF和分类模型,two-tower模型对于编码item features具有独特性。前两种方法可以被用于大规模item检索,但他们只基于IDs学到item embeddings,不符合使用SSL来利用item feature relations。

4.离线实验

4.1

表1展示了wikipedia和AAI datasets的一些基础状态。图4展示了两个datasets的最高频items的CDF,它表示了一个高度倾斜的数据分布。例如,在AAI dataset中top 50 items会在训练数据中占据10%。

评估

https://dl.acm.org/doi/pdf/10.1145/3459637.3481952