【0】深度学习推荐系统

        推荐系统已经在各行各业发挥了很大的作用,帮助数以亿计的用户快速发现有用的信息。和其他机器学习方法一样,推荐系统分为线上服务和线下训练两个过程。线上服务一般分为召回和精排两个阶段,召回阶段挑选出用户可能喜欢的一部分物品,精排阶段则是从召回物品中挑选几十个物品向用户推荐。

        推荐算法通常基于正类和未标记(positive andunlabeled)的行为数据进行训练。未标记物品的数量通常很多,往往需从未标记(即未交互)物品中采样一部分作为负样本,来实现正负样本平衡。但是简单的采样方法使得优化收敛慢,更多地利用推荐分值较高的未标记物品作为负样本通常可以加快收敛。随着深度推荐模型的发展,推荐系统训练面临的正负样本不平衡问题更加严峻。下面介绍的高效率推荐算法能快速地返回高分的未交互物品,但返回结果往往是确定性的,如果总是用这些高分的物品作为负样本,会导致训练目标的估计严重偏差。因此,我们开展了高效负样本采样的研究,实现了,训练目标的(渐进)无偏估计。这不仅实现了正负样本的平衡,而且加快了训练速度,提升了推荐精度。

        召回阶段中的召回效率是关键。然而,随着推荐在众多场景中的应用,推荐算法需要同时为大量用户从大量物品中选择最重要的部分。例如淘宝等网站日活用户和在线商品数量都过亿,为了快速响应用户的需求,线上推荐中关于商品数的时间复杂度必须要降低。精排阶段中弄过的目标是高推荐精度,经常需要更大、更复杂的推荐模型。然而,部署推荐算法服务的计算服务器,除了对召回阶段的推荐算法的响应时间具有高要求外,对精排阶段的推荐算法占用的存储开销也有较多约束,特别是当前推荐模型经常在GPU上运行。下面将围绕基于高效负样本采样的快速训练、高效率物品推荐、推荐模型压缩这三个方面来介绍重要的研究进展,并探讨一些尚未解决的技术挑战和可能的思路。

1、基于高效负样本采样的快速训练

        推荐算法训练常常使用正类和未标记的数据,这就要求推荐算法从未交互过(未标记)的物品中采样出高质量的负样本。负样本的质量不仅体现在与正样本区分的难度上,也体现在随机性上。难度大的样本数量非常有限,如果总是用这些难度大的负样本来训练,会造成很大的偏差,使得模型难以收敛或者收敛到很差的解上。因为有时甚至不清楚真正要采样的分布,所以要在负样本的随机性和难度间权衡是一件很难的事情。

        为了在负样本的难度和随机性间做好权衡,现有的工作采取了很多重要的策略,代表性的有DNS、WARP、AOBPR等。这几种方式不做介绍,最后文章中提出,为了更好地在负样本难度和随机性之间权衡,我们从重要性采样和ANN近似采样两个路径进行探索和设计,形成了两个重要的技术贡献。第一个是为已有的部分动态采样方法建立了一个理论框架,相关工作发表NeurIPS2020和WWW2020上。该理论框架建立在一个新的损失函数上,为所有未交互物品引入了一个难性概率,使得难性概率更高的物品对损失的贡献更大。从信息检索领域的生成对抗网络(IRGAN)框架入手,我们推导出了难性概率的精确表示形式。在引入难性概率之后,虽然损失函数的计算复杂度高,但可以通过重要性采样等方法进行高效近似,而且还可以通过重要性采样的提议分布来适配任意采样分布。我们发现,重要性采样的提议分布为均分分布时,该损失退化到 DNS的采样损失,使得DNS方法成为该框架的特例。另外一个贡献是基于ANN常用的索引结构,开发出亚线性时间复杂度的采样算法。

2、高效率物品推荐

        虽然推荐算法是多样化的,但是大部分推荐算法均利用内积计算用户偏好,给用户推荐高偏好的物品。例如,矩阵分解模型…通过用户向量和物品向量的内积来估计偏好,并用估计偏好与真实偏好对比形成的分类损失或者回归损失进行优化。在变分自编码器[6]中,虽然编码器和解码器都是非线性神经网络,但最后一层仍然通过内积的方式计算用户对物品的偏好。序列推荐模型在用Transformer或循环神经网络(Recurrent NeuralNetworkRNN)对历史建模得到情境表征后,通常用物品向量计算内积来估计用户在特定情境下的偏好。图神经网络推荐算法[]对用户节点的邻居聚合得到用户表征,对物品节点的邻居聚合得到物品表征,之后通过内积方式计算用户对物品的偏好。由此可见,内积在多类推荐算法中都被广泛应用。然而,内积不是度量(metric),不满足三角不等式、非负等性质,因此基于欧式距离的ANN搜索技术难以直接应用内积。

        要实现针对内积的快速搜索(也称为最大内积搜索),有三条技术路径。第一条路径是将最大内积搜索通过等价变换转换为最近邻损失,其核心思想是为物品向量增广一维,使得物品向量变成等长向量,而查询(即用户或情境)向量则增加一维全1向量。然而这条技术路径的主要问题在于改变了物品向量的拓扑空间关系,近似搜索的精度可能会大打折扣。第二条路径是设计针对内积的索引结构,包括图结构、多倒排表、树哈希表等。其核心思想是处理向量的范数差异性,因为向量范数大的物品内积偏好可能也较高;也可以设计针对最大内积搜索的损失函数,比如 SCANN中提出的各向异性损失[]和我们提出的多重对比损失[9]核心想法都是内积值大的数据或者查询应该获得更

【0】深度学习推荐系统_第1张图片

【0】深度学习推荐系统_第2张图片

参考:

BPR算法_@刹那芳华逝的博客-CSDN博客

一文读懂推荐系统负采样 | 一起大数据-技术文章心得

你可能感兴趣的:(推荐系统,算法,深度学习)