面对千万级推荐,如何压缩模型最高效?这是腾讯看点新框架

      最后更新:2020-05-07 10:55:25 手机定位技术交流文章

      机器之心释放

      机器编辑部之心

      推荐领域的模型压缩一直是一个极具挑战性的问题。面对实际部署中的数千万或数亿条建议,压缩如何才能实现最佳性能?由SIAT自然语言处理团队和腾讯手表推荐团队共同完成的论文《序列推荐系统的通用网络压缩框架》提出了一个具有更高压缩率、更快训练和推理速度的序列推荐模型框架CpRec。目前,该论文已被SIGIR 2020收到。

      原始链接:https://arxiv.org/pdf/2004.13139.pdf

      许多人都非常熟悉模型压缩。在实际的应用部署中,推荐领域的模型压缩问题比自然语言处理和变异操作更具挑战性。像YouTube和chattering这样的行业推荐系统比大型自然语言处理和简历模型(如BERT-Large、ResNet-101)的参数多几百倍,因为在行业推荐系统中有数千万甚至上亿个推荐项目。然而,目前的最优序列推荐系统模型通常是基于三明治结构的深层神经网络。通常这些模型需要大量的参数(例如使用大的嵌入维度或深层网络架构)来获得最佳的推荐性能。

      本文提出了一个序列推荐模型框架“CpRec”,它使用了两种常见的模型压缩技术。具体来说,本文首先提出了一种分块自适应分解方法,该方法利用SRS中推荐项目服从长尾分布的事实来逼近输入矩阵和软最大矩阵。为了减少中间层的参数,引入了三层参数共享方案。通过大量的烧蚀研究,证明了所提出的CpRec在真实世界的SRS数据集上可以达到8倍的压缩比。同时,CpRec在训练和推理过程中速度更快,在大多数情况下都优于其未压缩模型。相关工作也将很快开放源代码。

      块自适应分解

      如上图所示,在本文中,首先根据推荐系统的频率对所有推荐项目进行排序。

      ,其中x_1和x_k分别是最高和最低频率建议。推荐项目集S被分成N个聚类:

      其间

      。每个群集中推荐的项目数量为

      ,k是所有推荐项目的数量。因此,输入可以嵌入到矩阵中

      (一)以上分为n个区块

      (b)以上,其中d是嵌入尺寸。使用类似的策略,输出softmax矩阵

      分成n个块

      。接下来,分别描述输入嵌入矩阵和输出软最大矩阵的块自适应分解。

      基于块自适应分解的输入嵌入层

      在输入层中,块

      它被分解成两个低阶矩阵。

      ,其中

      D_j是第j个块的因子分解维数(也称为秩)。由于高频推荐应该具有更高的表达能力,相应的d_j随着聚类指数的增加而减少。因此,通过原始查找操作,每个推荐项目的嵌入表示不同于嵌入表示。给定推荐标签ID x,嵌入向量由以下等式表示:

      其间

      表示第J个块的第G行的嵌入向量,

      。通过这种分解,输入嵌入层的参数可以从

      减少到

      。当...的时候

      ,输入嵌入层参数的数量将显著减少。上面的图(c)说明了这个分解过程。

      基于块自适应分解的输出软最大层

      在输出软最大层,指出在输出软最大层直接应用与输入层相同的策略将导致模型性能下降的问题。为了解决这些问题,这些块由两级树结构构成,其中每个树节点代表一个簇。上图(d)显示了输出softmax层的块嵌入示例。本文在输出软最大层中使用了类似于输入嵌入层的块嵌入聚类配置。一个主要区别是输出层的第一块矩阵被扩展到

      ,其中n-1表示叶节点所属的父类的数量。第一个集群的标签集被扩展为

      2

      ,其中k_1+1至

      对应于聚类2到聚类n的父类标签。输出软最大值层中的其他块矩阵有

      ,其中

      。与原始的软最大层相比,该方法可以从

      减少到

      文中提到,在训练过程中,对于给定的上下文向量

      (即,序列推荐模型的最终隐藏向量)为了预测下一个用户可能感兴趣的推荐项目,有必要首先基于下一个推荐的标签(例如,x)确定搜索空。如果它属于第一个集群,则只计算该集群中的逻辑。如果x属于另一个集群,则在它的父类所属的集群(即第一个集群)和当前集群中计算它。

      用于:

      因此,本文的训练过程分为两个步骤:第一步是计算第一个聚类,这需要

      时间。在第二步中,如果推荐标签x属于叶节点上的一个集群,则计算集群的逻辑,这需要

      时间。与使用原始软件相比,训练时间从0(K)减少到

      此外,不需要在推理阶段计算所有推荐项目的软最大概率,可以提前停止搜索以加快生成过程。具体地,如果前N个概率得分位于第一个聚类中,则不需要计算其他聚类中推荐项目的概率得分。

      分级参数共享

      为了充分利用深度模型叠加层的优势,提高参数的效率,本研究采用了多种参数共享策略。例如,上图(a)是ALBERT的跨层参数共享方法,但在这种情况下,分析表明,在减少大量冗余参数的同时,神经网络模型的表达也在一定程度上受到限制,因此提出了“跨块参数共享”的高级版本,如上图(b)所示。

      此外,本研究还提出了另外两种分层参数共享方法:相邻层和相邻块参数共享,分别是上图(C)和上图(D)。具体而言,相邻层参数共享意味着每个剩余块中的两个独立层共享相同的参数集。相邻块参数共享意味着每两个相邻剩余块之间共享参数。

      这些参数共享策略被认为有两个主要优点:(1)作为一种正则化方法,它们可以稳定训练过程并提高模型的泛化能力;(2)它们可以显著减少参数数量,而不会降低跨层参数共享等性能。

      由下一代互联网模型实例化的CpRec架构图如下:

      实验结果

      这一部分主要用NextItNet框架实例化CpRec,并在微视、movielen、tiktok和ColdRec 4个数据集上进行实验。此外,因为序列推荐系统在具有不同序列长度的数据集中执行不同的操作,所以使用4个序列长度(例如10、20、50和100)来预处理数据集合,以证明其可靠性。本文采用多种评价指标,包括MRR、人力资源、NDCC等三个前N名评价指标来评价模型的准确性。参数、训练时间和推理加速比用于评估模型的压缩性能。

      结果表明,在4个数据集的模型性能和压缩效果评价指标中,CpRec在推荐准确率和压缩效果方面表现较好。

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/6021.html

          热门文章

          文章分类