技术 | 混合维嵌入及其在内存高效推荐系统中的应用

大家好,我是Lucy@FinTech 社区。

今天分享的这个文章真的是神来之笔Facebook和斯坦福联合在研究的项目,ctr预估中如何根据特征流行度缩小embedding向量节约机器成本。这个应用在Recommender Systems 中的金融预测问题很接近,在金融交易中,数据有很多噪音,周期性,不可预测事件,都需要处理多种数据类型去训练模型。

 

 

1 介绍

 


 

在许多实际应用程序(如推荐系统)中,某些项的出现频率远远高于其他项。然而,构成许多ML算法基础的标准嵌入方法将相同的维度分配给所有项,这会导致统计和记忆效率低下。在这项工作中,我们提出了混合维度嵌入层,其中特定嵌入向量的维度可以依赖于项目的频率。这种方法大大减少了嵌入所需的内存,同时保持并有时提高了ML性能。结果表明,所提出的混合维层在使用8个较少参数的情况下,对MovieLens数据集的协同过滤具有较高的精度。因此,在Criteo-Kaggle数据集上,它们使用一半的参数将准确度提高了0.1%,或者使用16个较少的参数将点击率预测任务保持基线准确度。


 

嵌入表示的维数与基于嵌入的模型对特定学习任务的统计性能(即准确性或损失)之间似乎存在着根本的权衡。众所周知,当嵌入维数太低时,统计性能会受到影响。因此,我们感兴趣的是一个基本问题:是否可以重新构建嵌入表示,以便在参数数量和统计性能之间进行更有利的权衡?


 

这一挑战在推荐系统任务中尤其突出,例如协作过滤(CF)和点击率(CTR)预测问题:推荐模式为互联网上一些最常见的数据驱动服务提供动力,这些服务通过每天的个性化体验惠及全球用户。目前,在这些推荐系统中,标准嵌入层的超大内存消耗是内存层次结构的一个主要负担——单个推荐引擎的嵌入层可以占用几十亿字节的空间,这使得与大规模推荐嵌入相关的工程挑战变得尤为重要。


 

在许多模型中,嵌入层用于将输入的分类值映射到向量空间。该特征映射为每个值输出一个d维向量,并在监督训练过程中与模型同时学习。然而,数据分布、嵌入表示、模型结构和优化算法之间的关系非常复杂。这使得根据信息论原理设计有效的量化和压缩算法以嵌入表示变得困难。


 

本文提出了一种新的嵌入表示体系结构混合维嵌入层。混合维嵌入层背后的中心论点是,特定嵌入向量的维数不应保持一致,而应随着该特征的流行而缩放。特别是,我们发现流行的嵌入特性通常没有分配足够的参数,而很少的嵌入会浪费这些参数。通过构造混合维嵌入层,使得嵌入向量的维数随其流行程度而变化,可以显著提高小参数预算下的统计性能。


 

为了说明所提出的混合维嵌入层极大地提高了参数效率,本文证明,与Movielens数据集上的均匀维嵌入相比,混合维嵌入层在使用8×更少参数的同时,获得了稍低的损失。此外,在Criteo-Kaggle数据集上,表明混合维度嵌入使用一半的参数可以将精度提高0.1%,并且使用16倍的参数可以保持基线精度。


 

尽管本文主要关注推荐和事件概率预测问题,但方法可以推广适用于一般的表示学习。此篇文章的主要贡献:


 

提出了混合维嵌入层,其中特定嵌入向量的维数与所述向量的流行程度成比例。


 

在给定先验分布或训练样本的情况下,提供了一个简单的启发式方案来确定嵌入向量的大小。方案所规定的维数与均匀维数相比是有利的。


 

发现了两种不同的机制,通过这两种机制,混合维度层可以提高参数效率,并在给定的参数预算下获得优异的统计性能。


 

 

2 背景及相关工作

 


 

本文的重点放在显式CF和CTR预测上。在显式的CF中,用户对特定项目的评分是直接观察到的,因此它可以被正式地定义为矩阵完成问题。基于嵌入的方法,如矩阵分解(MF)或神经协作滤波(NCF)是最流行和最有效的矩阵完成方法之一。

   
 

在现代机器学习中,嵌入常常被用来表示类别特征。嵌入向量是从数据中挖掘出来的,目的是通过向量的空间或几何关系和属性来编码向量所表示的范畴概念之间的某些语义关系。因此,大型嵌入是推荐系统的自然选择,它需要模型来理解用户和项目之间的关系。


 

已经开发了许多技术来减少嵌入层所消耗的内存量。它们大致可以分为两个高级类:压缩算法通常需要在标准训练之外对模型进行某种形式的附加处理。当它们只涉及训练后处理时,就可以离线执行;当压缩处理与训练过程交织或以其他方式实质性地改变训练过程时,它们可以在线执行。简单的离线压缩算法包括训练后量化、剪枝或低阶SVD模型蒸馏技术,如组合编码和神经二值化也是一种复杂的离线压缩形式,其中自动编码器被训练成模拟未压缩的、预先训练好的嵌入层。在线压缩算法包括量化感知训练、渐进剪枝和周期正则化。


 

本文的方法基于嵌入的普及性,关注嵌入向量维数的非均匀降维。原则上,该技术可以和大多数其他压缩算法或压缩架构的复合使用。这也是今后调查的一个有趣方向。


 

 

3 问题与模型制定

 


 

3.1 协同过滤问题


 

设∈,对于n≥m,为未知目标矩阵。设Ω⊂[n]×[m]表示指数样本。观察结果,表示为Ω',是3元组的集合:


 


 

我们将Ω视为集值随机变量。假设概率矩阵Q秩为1, 即有=,对于一些n维和m维概率向量π和ρ。原则上,如果π和ρ已知,它们可以直接使用。但在本文的应用中,我们分别使用用户访问f和项目访问g的经验频率从训练数据中估计它们。


 

我们将协作滤波器A称为一种算法,该算法输入观测值Ω′,并输出M*的估计值,表示为(Ω′)。滤波器的目标是最小化Q加权Frobenius norm损失:


 


 

3.1.1矩阵分解


 

在MF中,我们将A定义为解决以下优化问题:


 


 

3.1.2神经协同过滤


 

尽管NCF缺乏MF提供的良好理论保证,但它在实际数据集上的表现稍好一些。采用最简单的NCF模型,其中用户和项目嵌入连接起来,形成对以下多层感知器(MLP)的输入。


 

在NCF中,我们将A定义为解决以下优化问题:


 


 

3.2点击率预测问题


 

CTR预测任务可以解释为事件概率预测问题,也可以解释为基于上下文的二值CF。与标准CF相比,这些任务还包含大量的上下文,可以用来更好地预测用户和项目交互事件。因此,这个问题可以看作是限制目标∈{0,1},同时允许用户和项目由多个特征表示,通常通过索引集(分类)和浮点值(连续)来表示。


 

深度学习推荐模型Facebook最新的深度学习推荐模型(DLRM)允许k+1分类特性,这些特性可以表示关于点击或个性化事件上下文的任意细节。第i个范畴特征可以用指数 { 0,…,-1 },其中 i=0,…,κ。除了k+1分类特征外,我们还有s个标量特征,共同产生一个稠密的特征向量∈。我们希望预测y∈{0,1},它表示针对特定上下文(,…,,)的点击事件。


 

在DLRM中,我们将A定义为解决以下优化问题:


 


 

 

4. 混合维嵌入层

 


 

设混合维嵌入层E′由k+1块组成,并由2k+1矩阵定义:


 


 

假设其中每个元素的维数是一定的 。可以根据算法1中正向传播算法得到嵌入向量。


 


 

图2说明了具有两个块的混合维嵌入层的矩阵结构,其中统一维矩阵和混合维矩阵消耗的参数预算(总面积)相同,但分配不同。


 


 

4.1用于混合维矩阵中的格挡方法


 

在统一维嵌入层到混合维层的重构过程中,存在一定的可展性和可选择性。通过适当的重新索引,多个嵌入矩阵可以被堆叠成单个块矩阵,或者单个嵌入矩阵可以被行划分成多个块矩阵。分区块方案的关键是将n个总嵌入行映射到块中,块级行数由(,…,)给定,偏移向量t∈,ti:=。算法2为具体实现:


 


 

4.2 基于流行度的混合维度


 

现在假设混合维嵌入层E′的每个块中的向量的数量已经固定。因此,只需要用维数d:=(,…,)来完全指定它。


 

算法3中诠释了形式化基于流行度的方案:


 

 


 

 

5. 实验

 


 


 

我们探讨了由变化α参数化的混合维度嵌入的内存和统计性能之间的权衡。对于给定的α,我们通过改变基维来改变预算。根据算法3中提出的α参数化规则,将参数分配给嵌入层。对于具有均匀维度嵌入层(α=0)的模型,参数的数量直接控制嵌入维度,因为每次嵌入的向量数量是固定的。对于混合维度层(α>0),固定参数会导致维度倾斜。事实上,alpha越大,基于流行度的维度分配就越偏斜。图3中说明了α的不同选择如何分配嵌入维度:


 


 

5.1 矩阵分解

 

MF是一种典型的CF算法。它提供了最精练、最简单的设置,因此可以更好地研究混合维嵌入的效果。在实验中,采用MovieLens数据集,使用Amsgrad优化器。


 

在图4a中,展示了三个不同嵌入层的MF的学习曲线,根据每个嵌入层的验证损失绘制了训练阶段的数量。同时,绘制了d=16均匀维度嵌入的学习曲线,它具有最低的验证损失(在提前终止的情况下)。还绘制了d=4的学习曲线作为基线。第三,绘制了α=0.6时混合维嵌入层的学习曲线。


 

这证明了在d=4维时,常用的嵌入向量是欠拟合的,而在d=16维时,不常用的嵌入向量是超拟合的。在d=4参数预算下,α=0.6处的混合维度嵌入使用基线维度=32,并产生一个嵌入层架构,该架构可以更充分地适应流行和不流行的嵌入向量。


 

在图4b中,使用最优提前终止来展示不同α在不同总参数预算下的测试损失。通过观察可以看出,在每个参数预算下,使用混合维度嵌入层通常会改善内存性能边界。其中有一个简单的趋势,用均匀维度(蓝线)来说明:性能随着参数的数量而提高,直到达到临界点,然后性能随着参数的增加而降低。


 

最后,最优α依赖于总的内存预算。因此,在任何给定的预算下,都应该将α作为一个超参数来调整。最终,能够实现约0.02的较低的MSE,而使用约4×更少的参数,通过使用混合维数嵌入。


 


 

5.2 神经协同过滤


 

NCF模型代表了CF的更现代的方法。NCF模型添加了适度的真实感,并且显示了神经层中非线性的存在如何影响结果。


 

在图5a中,是基于三个不同嵌入层的NCF模型的学习曲线。同时,绘制了d=32均匀维度嵌入的学习曲线,它具有最低的验证损失(在提前终止的情况下)。该图中还有d=4的学习曲线作为基线。它还包括了α=0.6时混合维嵌入层的学习曲线,该曲线使用了相当于d=4时均匀维嵌入层的多个参数。


 

在图5b中,我们使用最优提前终止来报告不同α在不同总参数预算下的测试损失。总体而言,NCF模型的测试损失比MF模型的测试损失略低。有趣的是,在参数较多的情况下,最优终止的NCF模型实际上比MF模型承受的过适性更小。对于每个α,与最优总参数相对应的临界点也增加。然而,α=0.6仍然表现最好,尽管预算较高。


 


 

5.3 深度学习推荐模式


 

CTR预测任务可以解释为事件概率预测问题。将混合维嵌入层应用于真实的CTR预测数据,并结合最新的深度推荐模型,是一个重要的实验,展示了混合维嵌入层如何扩展到真实的推荐引擎。


 

在图6a中,基于三个不同的嵌入层绘制DLRM模型的学习曲线。证明了α=0.3(橙色线)的混合维嵌入生成的学习曲线等价于d=32均匀维嵌入(蓝色线)的学习曲线,其总参数计数等价于d=4均匀维嵌入(绿色线)。


 

在图6b中,展示了在具有不同参数预算的各种α下使用混合维度嵌入层的DLRM的测试精度。显然,混合维嵌入层提高了存储性能。最终,使用大约一半的参数可以实现了大约0.01%的高精度,并且通过使用混合维数嵌入实现了16×更少参数的PAR精度。


 


 

综上所述,在实验中,通过两种机制混合维嵌入层改进均匀维层:


 

i)泛化——在训练时,嵌入学习表示类别特征,如用户或产品。在一个统一的维度上,频繁访问的向量往往是欠拟合的,而不频繁访问的向量往往是过拟合的。因此,混合维度嵌入实际上以更有效的参数方式学习。


 

ii)分配——撇开学习不谈,在推断时,对于一个充分约束的参数预算,面临着资源分配的权衡。即使使用目标矩阵的oracle分解,在给定参数预算的预期失真度量下,将更多参数分配给频繁访问的向量比分配给不频繁访问的向量更有效。