论文地址:https://chenchongthu.github.io/files/TOIS_ENMF.pdf
代码地址:https://github.com/chenchongthu/ENMF
文章目录
前言
负采样 ; 非采样 ; ENMF
随着科技进步与技术的变革,推荐系统逐渐变得热门,从传统的显式数据(如购买,评级,点赞)推荐,到现在的极为热门隐式数据(如点击,浏览,加购)推荐,系统不再仅从单一方面获取大众偏好,推荐的准确率大幅度提高。但由于用户量逐年提升,商品不断更替,采用所有用户数据来进行模型学习变得不再现实。现如今有许多现进模型正采用负采样方法对负样例数据进行部分采样来训练模型,这种方法减少数据量来加快训练速度,减少了不必要的计算。但也存在很严重的缺点:(1)具有复杂网络结构的方法有大量的参数,即使采用基于抽样的学习策略,也需要昂贵的计算;(2)负采样策略不稳健,使得基于采样的方法在实际应用中难以达到最佳性能 。
为了解决这一问题,作者提出了三种新的优化方法,它们能够以较低的时间复杂度从整个数据(包括所有缺失数据)中有效地学习模型参数,并提出了一种新的框架ENMF,简称为高效神经矩阵分解。(这篇论文最核心的是非采样的目标损失函数的提出,以此为基础,作者后续提出了一些模型该进)
一、介绍
本篇文章篇幅过长,此处有许多背景介绍与现状分析略过不提
根据用户过去的交互(如评分和点击),将用户对商品的偏好建模,这被称为协同过滤。MF矩阵分解是其中最流行的一种,它将用户和物品映射到共享的潜在因素空间,因此用户-物品关系可以通过潜在因素的点积来捕获。早期研究主要针对显式数据,实验证明,使用这种数据性能会普遍较差,而且许多平台都没有这种显式的评价手段,而更常见的是用户的浏览和点击。
与显式相比,隐式反馈更容易收集。但利用起来会更麻烦,它是二元的,只有正面例子,为了解决抽样的问题,提出了两种策略:(1)负采样策略,即从缺失数据中随机抽取负实例; (2)非采样策略,将所有缺失数据均视为负数据。两种策略各有优缺点,负采样采样部分负实例可能会受采样质量低或者收敛速度慢影响,而采取所有数据会代价高,但会更有效。
深度学习已成为推荐的热门关注点,但深度学习中涉及到大量的参数计算,本文认为:(1)即使采用负采样策略选取数据也会面临参数庞大计算昂贵的代价(2)负采样性能不稳健,本身存在偏差,无论采取了多少更新步骤,对于所有的训练样本,都很难收敛到相同的损失。
二、准备
这里会给出本篇文章用的符号
如Table1所示,关键符号在表中可查看。
在隐式数据中,用户-项目交互被定义为:
在交互矩阵中,1代表用户-项目间存在交互,0代表无交互,未观察到的项目可能只是缺少数据,0、1也并不代表用户是否喜欢物品。
矩阵分解(Matrix Factorization, MF)将用户和商品映射到一个d维的联合潜在特征空间,使得交互作用被建模为该空间中的内积。数学上,R的每一项估计值Ruv表示为
TopK推荐既是将Ruv进行从高到底排序取下标输出
对于隐式数据,观测到的交互作用是相当有限的,而未观测到的例子的规模要大得多。为了学习模型参数,Hu et al.引入了一个加权回归函数,将隐式反馈矩阵R中每个预测的置信度关联起来:
可以看出,式(3) O(|U||V|d) 计算损失的时间复杂度。显然,计算梯度的直接方法通常是不可行的,因为在现实生活中,|U||V|d很容易达到十亿级甚至更高。
Cuv代表置信度,此处C0是一个远比C1小的数
三 、ENMF
1 模型分析
这里先给出模型总体框架,user_based与Items_based方法相似,仅嵌入层有点不同(提前说下NCF输入是单个用户和单个物品进行输入,而此处是单个用户和其对应的所有物品作为输入,下面图2即为输入的格式,B代表一批用户,V代表他们对应的物品)
整个神经网络架构遵循神经协同过滤(NCF)的设计,但有两个主要区别。首先,在输入层,不同于输入用户-项目对(u,v)的NCF,作者使用一个用户和他/她的所有项目交互(基于用户)或一个项目及其所有用户交互(基于项目)作为输入。这种设置允许神经网络从整个训练数据中学习。其次,作者没有采用基于抽样的策略来优化用户与物品之间的交互,而是采用本篇文章提出的高效优化方法,在不进行抽样的情况下,从整个训练数据中学习模型。
在设计的框架中,首先通过嵌入将用户和物品转换为密集向量表示。然后对于每个用户项实例(u,v),应用一个映射函数为
其中pu∈Rd和qv∈Rd是用户u和商品v的潜向量,d是潜因子的个数。然后我们将向量投影到预测层:
其中h为预测层。总体框架简单,但通过作者提出的基于全数据的高效学习方法的优化,它显著优于现有的复杂和最先进的推荐方法。
2 损失函数构造
对于隐式数据,观测到的交互作用是相当有限的,而未观测到的例子的规模要大得多。为了学习模型参数,Hu et al.引入了加权回归损失,将隐式数据矩阵中每个预测的置信度关联起来(式(3))。为了使损失适合学习神经模型,我们首先将其调整为一个小批处理形式,其中训练批是根据用户生成的。图2显示了输入的示例。根据此设置,我们有一批用户的损失如下:
明显可以看出此公式的时间复杂度过高 ,在数据量庞大的情况下无法在预计时间内执行完成。
下面看看优化的公式。
先将9式展开得到3项,在隐式数据中,由于Ruv∈{0,1}表示u是否购买或点击了商品v,第一项因此将替换为一个常数,第二项里的负数据为0,只保留了正数据,简化方程为:
其中const表示可以消除的Θ-invariant常量值。那么,缺失数据的损失可以用所有数据的损失与正数据的损失之间的差值来表示。这是该方法的关键设计,是实现高效计算的前提。具体推导如下:
如下式,第一步将第三项拆分为正数据加负数据的形式,第二步缺失数据的损失可以用所有数据的损失与正数据的损失之间的差值来表示,第三步合并正数据。得到下式:
Lp代表正数据损失,LA代表所有数据损失,可以看出Lp只关注交互数据,时间复杂度较低,相对而言,LA拥有极高的复杂度,如何处理这一项是重中之重。
回想式(8),内积的重新排列运算可以简化LA的计算,如下式:
关键pU,qv的重新排列使得我们在计算时可以预先单独计算它们中的每一项,再做乘积。这让计算得到显著加速。
式(13)中嵌套和的重新排列是实现快速优化的关键转换。LA(Θ)的计算复杂度由O (|B||V|d)降低到O ((|B| + |V|)d2)。
将式(13)代入式(11)中,去掉const部分,得到最终的基于用户的效率损失为:
此公式为原公式推导而来,没有做任何近似计算。
下面给出此算法流程图:
四、实验
实验使用了3个数据集,下面是数据集的简要介绍:分别为用户数,项目数,交互数以及交互密度
这里给出了数据集的链接地址:
实验使用了8个基线作对比实验,下图分别对应了这些基线属于哪种类型,这些类型都是与本模型息息相关的。(ENMF适合做top-n推荐,它是神经网路模型,采样非采样全数据策略)
评价指标采用国际通用推荐标准HR和NDCG,下面给出二者公式:
实验结果:因篇幅问题这里只给出Moivelens数据集的结果
ENMF-U,ENMF-I,ENMF-A 的效果与基线相比普遍较好,与MP等负采样模型相比可知非采样的性能更好,(控制变量法去比较出模型的好处,此处便是对比试验得到的优点,便不一一列出了)
下图给出了不同维度下不同模型迭代一次的时间:
可以看出不管是那个数据集,在这四种维度下,ENMF(U,I,A)模型在极小的时间里都保持着极低的波动,而使用原损失函数的ENMF-Original的迭代时间明显高于改善版本,另外GMF拥有更高的执行时间,这充分说明模型的优势以及非采样优化的效率之高。
五、总结
仅适用于线性模型:
在这项工作中,我们提出从整个训练数据学习神经推荐模型不采样。通过用严格的数学推理重新构造一个常用的平方损失函数,我们成功地在一个可管理的时间复杂度下更新每个参数,而不需要采样。我们也设计了一个有效的神经矩阵分解(ENMF)框架,并提出了三个实例化方法ENMF-U, ENMF- I和ENMF-A的新衍生优化方法。在三个实词数据集上进行了广泛的实验。所提出的ENMF方法在推荐性能和训练效率方面均显著优于目前最先进的推荐模型。