☝个知识点:点击上方蓝字可以关注我们
简 介
过去的十几年时间里, 有许多研究都调研过矩阵分解技术, 它已经成为个性化推荐中最受欢迎的技术之一。 从偏好矩阵中学习低秩的潜在特征是许多推荐系统研究的基础,矩阵分解已经成为了推荐中最受欢迎的技术之一。由于内积的的简易性和高效性, 这一类技术实现了合理的成功,而随着在一系列著名比赛(例如,Netflix Prize)中取得不错的效果,该技术得到了越来越广泛的应用。
另一方面,一个有竞争力的分支 – 依赖于度量向量空间的计算和学习同时展现了简洁性和高效性。分解模型的一个关键争议点在于内积违背了三角不等式,而内积又是获取用户和物品之间细粒度相似性的核心所在。最后,度量学习方法大部分基于欧氏距离作为相似度度量,一直被认为更适用并且更具有表达性。
本篇文章主要关注将两种范例连接起来。首先,作者探究了拆开度量向量空间的概念,例如:通过分解学习度量空间中的低秩结构。最后,他们提出的方法– FML(Factorized Metric Learning, 分解度量学习) 可以被看做是分解由距离而不是评分组成的矩阵。这就是与传统矩阵分解方法不同的地方,传统的矩阵分解通常使用评分对用户物品之间的相似性进行编码。
方法最原始的动机在于:将两种方法的优势结合起来,从而缓解各自方法的本质缺点。更具体地,关于矩阵分解:它的性能可能会因为交互方法–内积的简单选择而有所降低(原因见延伸探究1和2)。众所周知,点积无法满足三角不等式,限制了矩阵分解的可表达性,从而带来次佳的结果。 此外,学术研究也已经表明:当潜在因子数目过大的情况下,矩阵分解方法很有可能会造成过拟合的后果,极大地限制了模型的灵活性和性能。
三角不等式的性质:两点之间的距离不能大于它们两点分别到第三点的距离之和。
度量学习(从近期的工作Collaborative Metric Learning推广开来)已经展现了解决这个问题的能力。然而,也存在一些问题:向量空间的过度拥塞。尽管该算法会学习相似的集群,我们假设学到的集群也可能会遇到过度拥塞的问题,从而导致次佳的结果。
为了缓解上面提到的各种问题,有作者提出了一种新颖的技术:FML(Factorized Metric Learning, 分解度量学习),主要动机是:将偏好转化为距离,将点乘替换为欧氏距离。FML从位置和距离的角度考虑推荐问题,然后直接将距离矩阵分解为用户和物品的紧密表示。这样不仅仅可以避免上面提到的问题,还可以同时适用于点击预测和物品排序任务,基于估计的距离生成推荐。因此,推荐可以看做是使用分解来拆开距离。在大型数据集上的拓展性试验表明:FML在评分预测和物品排序任务中均极大地优于已有的先进方法。这就意味着这个概念上非常简单的模型非常有效。
本篇博客的主要内容包括:
-
分别介绍推荐中的矩阵分解/神经模型以及度量学习等方面的背景知识
-
度量分解学习(FML)方法的详细介绍,并且实例化两种FML的变种模型用于评估估计和物品排序,并且介绍了模型的正则化/优化和推荐以及模型的复杂度
-
以物品排序为例, 解析了tensorflow版本FML的具体实现
背 景
推荐中的矩阵分解
矩阵分解是物品推荐中最有效的技术之一。矩阵分解用于推荐系统的第一个版本是Simon Funk等人(http://sifter.org/simon/journal/20061211.html)在Netflix比赛的评分任务。 之后的研究改进了矩阵分解,并且提供了很多变种。例如,Koren等人引入了用户和物品偏置来对针对用户和物品特定的特征进行建模(详情见参考资料4)。Salakhutdinov等人将矩阵分解解析为一个概率图形模型来缓解真实数据集中的稀疏和不平衡问题(详情见参考资料5和6)。矩阵分解也可以被泛化到解决个性化物品推荐问题。基于矩阵分解的两个典型top-N推荐模型为:BPR(Bayesian Personalized Ranking,贝叶斯个性化排序)以及WRMF(Weighted Regularized matrix factorization,加权正则化矩阵分解,详情见资料8)。BRP从贝叶斯的角度解决排序问题,其目标是尽量拉开已经观察到的用户-物品对和未观察到的用户-物品对之间的距离( 详情见资料7)。WRMF是另一个物品排序的高效算法。 WRMF使用隐式的二进制反馈作为二进制实例,然后考虑用户-物品交互矩阵中的所有条目(包括未观察到的条目)。WRMF有一个置信值来控制正负例条目的权重。
推荐中的神经模型
正如之前提到的,尽管MF取得了一定的效果,它的能力被点积限制。而作者们也尝试了一些方法来克服这个问题,方法之一是在矩阵分解中引入非线性。Dziugaite等人提出了矩阵分解的神经网络泛化,使用非线性神经网络对用户-物品关系进行建模。其基本思想是:在用户和物品潜在因子元素级别的点积上使用非线性的激活函数(详情见资料9)。He等人沿着这个思路,提出了NeuMF(Neural collaborative filtering,神经协同过滤)模型用于个性化排序任务。NeuMF由一个泛化的MF和一个多层感知机组成。它将one-class的协同过滤问题转化为一个分类任务,然后使用交叉熵损失来优化网络(详情见资料3)。
Wu 等人提出了在交互模型中使用降噪自动编码机引入非线性的方法(详情见资料10)。当然,也有一些其他研究通过使用神经网络融合辅助信息。然而,这些研究主要关注克服点乘的局限性,作者将额外信息建模作为未来的一项工作。可以通过查阅资料11了解更多关于这个主题的信息。
推荐中的度量学习
另一个有希望的尝试是直接采用一个满足三角不等式定理的度量。CML(Collaborative metric learning) 是一个将度量学习推广到协同过滤的方法(详情可查阅资料12)。CML遵循了LMNN(largest margin nearest neighbor,最大边缘最近邻)算法的思想。LMNN希望估计一个线性转化来定义一个距离度量,最小化期望的kNN分类错误。LMNN由两个严格的操作组成:pull和push。pull操作主要用于将相同类中的实例拉得更近,而push操作则希望将不同类中的实例推得更远(详情可查阅资料13)。严格说来,CML不学习转化函数,而希望学习到用户和物品的向量。它只有一个push的术语,这就意味着CML值能将用户不喜欢的数据推开,但是没有提供一个策略将用户和喜欢的物品拉得更近。Hsieh等人提到:CML的损失函数在遇到欺诈实例时也会将正向的物品拉近。然而,这种非直接的pull力与LMNN中的相比弱了很多,可能会造成过度拥塞的问题,可能会造将可能的推荐候选集推得太远,从而只能得到次佳的效果。
度量分解学习(FML)
在本章节中,将会介绍FML(Factorized metric learning,分解度量学习)方法。图1中展示了FML的简要高层概述,假设有M个用户和N个物品,偏好(评分或隐式交互)矩阵表示为:表示用户u对物品i的偏好。R的值可以是显式的评分(例如评分)也可以是隐式返回。显式评分可以用于针对未知条目的评分估计,而隐式反馈一般用于个性化排序。这两个问题都是推荐领域非常常见的问题,在这里不做过多解释。
图1 FML的简单表示。
其主要有两个步骤:1. 将偏好矩阵(评分或交互)通过公式1转化为距离矩阵;2. 将距离矩阵分解为一个度量向量空间中的用户和物品坐标。
偏好转化为距离
FML希望将度量向量空间拆开,通过分解学习物品和用户的位置。矩阵分解通过将评分矩阵(显式/隐式反馈)分解成点积来学习用户和物品的潜在因子。偏好矩阵也可以被看作是相似性矩阵,由于相似性和距离是相反的概念, 首先, 需要把用户偏好转化为距离。
在论文中,FML提供了一个简单但是高效的等式。通过下面的公式得到距离矩阵:
公式1
Max Similarity可能是评分的最大值(例如,5)或者隐式反馈的最大值(例如,1)。通过这样的翻转操作,可以在保持其分布的同时,将偏好(相似性)转化为距离。这个转化可以同时应用于显式和隐式的反馈。距离是两个对象之间分开多远的数值度量。距离函数应该满足四个严格的条件:1、非负性,2、不可分的同一性,3、对称性,4、三角不等式。在不同的应用领域有着很多不同的距离函数,例如:离散距离,欧式距离以及图距离等。在欧式空间 中,两点之间的距离通常是通过欧式距离(或范式距离)进行度量的。由于其简单的形式和有用的属性,欧式距离经常被用于机器学习/传感器网络/几何学/面部识别等。在实践中,经常采用平方欧式距离以避免计算平方根的问题。
假设用户和物品在度量向量空间的位置表示为和 我们使用平方欧式距离来度量用户和物品之间的距离:
公式2
图1简单展示了FML的流程。首先,基于公式1基于偏好矩阵获得距离矩阵,然后将距离矩阵进行分解。然后学习到用户和物品的位置。在此之后,在必要的情况下,我们可以非常容易地恢复偏好矩阵并且生成推荐。
物品排序中的距离分解
在只有隐式反馈的情况下,个性化排序是推荐系统中非常重要的一个任务。在许多现实的应用中,隐式数据(例如,购买记录/收听记录/点击)比显式反馈更容易获取,这就导致对隐式反馈进行建模成为一个主要的关注点。与之前的研究一样,本文将隐式反馈定义为二级制数据。1表示喜欢,而0表示其它情况。首先,使用下面的转化公式将隐式反馈转换成距离:
公式3
由于要么等于1,要么等于0,那么在 的情况下, 距离,在 的情况下, 距离,使得控制用户和物品之间的距离变得非常灵活。
对于排序任务,将未观察到的交互(负面示例)考虑进去也是非常有益的。例如,BPR和CML通过对每个观察到的交互采样一个负向物品使用成对的方式进行训练。WRMF和NeuMF采用逐点的学习,但是也考虑了负向物品。在本文中,由于作者希望直接将距离分解为用户和物品的嵌入,在这里,采用了逐点的损失:
公式4
在这里,考虑了所有的未观察到的交互。是一个置信值,定义为 ,其中, 表示隐式反馈的观察。将显式反馈发生的频率作为观察,例如,如果一个用户浏览了某个物品两次,那么 。对于较大的数字,也可以将其转化为log形式。由于这个信息在公开可用的数据集上经常缺失,可以将w设置为 (0或者1)。具体的正则化策略将会在3、4部分进行介绍。尽管采用的是逐点的训练模式,FML的模型不仅可以将用户和他们偏好的物品更接近,还可以将不喜欢的物品推远。不像大部分基于度量学习的模型,通过一些明确的界限来将用户兴趣领域之外的虚假操作,本方法中的置信机制提供了负向物品入侵用户领域的可能性,由于它可以作为一个过滤器从推荐的负面候选集中挑选物品。模型的另一个重要特征是:可以间接地将有大量相同物品集合的用户聚在一起。这个属性使得获取邻居用户之间的关系变得可能,而这对物品推荐来说也非常重要。
评分预测中的距离分解
正如上面提到的,FML也可以使用于评分估计。对于评分估计,只考虑观察到的交互数据已经足够并且更加高效。假设表示观察到的评分数据。首先,使用下面的公式将评分矩阵R转化到距离:
公式5
其中,为最大的评分。如果 ,当评分为3时,距离 。
与矩阵分解想用,用户或者物品的单个属性也会有影响。例如,一些物品倾向于会受到更高的评分,而一些用户可能会给更低的评分。因此,FML将全局的用户和物品偏好信息集成到了方法中用于评分估计。最终的评分函数形式化如下:
公式6
其中,表示预测的距离, 和 分别为用户和物品的偏好项, 为全局偏好,等于训练集数据的平均距离。一般说来,可以加一个超参 来将 缩放到一个合适的值。
另一个重要的方面是:作者希望考虑评分数据的可靠性和稳定性。大部分评分预测算法忽略了评分的噪音,并且假设所有的评分都是置信的。然而,并不是所有的评分都应该获得相同的权重。例如,一些用户在不同时间在对相同的物品进行评分时可能会给出两个不同的分数。之前的研究表明:极端的评分(例如, 1或者5)比中间的评分(2、3、4)更加可靠。为了缓解这种情形,FML提出对每个评分提供以这个置信值,然后获得损失函数:
公式7
注意:置信可以表示很多因素。根据参考资料15的结论,作者设计了一个新颖的置信机制将更高的置信值分类给更可靠的评分。
公式8
其中, 可以是绝对值,平方甚至是对数函数。 (置信级别)是一个超参,来控制置信的幅度。这个置信机制保证了极端的分数获得更高的置信。也可以使用别的方式来替换这个置信策略。
正则化
传统的矩阵分解一般对潜在因子和偏置项使用正则以避免过于复杂的解决方案。在这里,FML引入了另外两个正则选项:norm clipping和dropout。
Norm Clipping:对于P、Q,正则是不适用的,因为它会将用户和物品都推向远点。在这里,作者没有最小化正则,FML将对欧式球的限制进行了放松,然后在每次更新之后执行 norm clipping。
公式9
使用l来控制欧式球的大小。这两个限制作为正则式来讲和 的值限制在了 正则单位的球中,使得数据点不会发散太宽,有助于克服维度问题的诅咒。这个操作一般在每次迭代更新参数之后执行。
dropout:在神经网络中,dropout是一个解决过拟合问题简单但是有效的方法。主要思想是在训练阶段丢掉一些神经元以避免神经元单位之间的共同适应。在文章中,作者提出了一个新颖的/针对欧氏距离的dropout策略。最终的欧氏距离是每个维度距离之和。为了避免不同纬度之间的共同适应,FML提议随意删除一些维度,然后使用下面的公式计算整体的距离:
在上面的示例中,删除了第二个,第三个一级第k个维度,因此,这些维度不会在特定的轮中用于距离的计算。dropout的维度在每一轮中均会变化。注意:dropout只会在训练阶段执行。
在评分预测模型中,FML依然使用正则率为的 正则对用户和物品偏置进行正则化。
优化和推荐
对于评分估计和排序学习模型,作者使用了Adagrad进行优化。Adagrad基于更新的频率来调整参数的步数大小。这样的做法可以减少调整学习率的需求。在推荐部分,首先计算用户和物品之间的距离,对于评分预测,FML使用下面的规则重构评分: ,例如,如果, 那么预测的评分将是1。对于物品排序,直接使用降序对距离进行排序即可,离目标用户较近的物品将会被推荐。FML的学习过程如下:
模型复杂度
FML在评分预测任务中的复杂性与评分数成线性正比。可以在的时间复杂度内训练完成,其中k是潜在因子的维度, 为观察到的评分数。对于物品排序,由于会包含所有交互矩阵的条目,因此其模型复杂度为: 。具体地,它会花大概50s来获得一个在Movielen 100K数据集中比较好的评分预测推荐效果(在一个VIDIA TITAN XPascal GPU上)。对于FilmTrust中的物品排序,每次迭代的计算时间大约是15s。一般迭代30次左右就能实现一个令人比较满意的结果。
代码解读
以下为模型作者的tensorflow版的实现。(特别注意:务必使用Python 3.5及以上版本运行代码,否则无法获得比较好的效果)。
接下来我们以排序模型为例,稍微解释下核心代码(我们在代码中添加了注释方便阅读):
总 结
总的说来,FML可以在度量向量空间探究寻找低秩结构的概念。 在FML中,用户和物品都表示为多维坐标系统(例如:度量向量空间)中的点。基于度量空间中用户和物品之间的距离进行推荐。但是,与其它度量学习方法不同,该模型的关键创新之处在于:它分解了距离空间。
图3 用户和商品的初始位置,经过训练后用户和其感兴趣的物品的距离位置
针对FML推荐算法,我们在一些可验证的数据集上进行验证,实验结果和基线方法相比确实有了很不错的提升(准确率和召回率均提升了10%以上)。
延伸探究
1、为什么点积不满足三角不等式?
根据资料2, 举出反例: A=(1,0),B=(0,1),C=(1,1):
显然 , 不满足三角不等式
2、为什么点积可能会限制矩阵分解的可表达性?
参考论文3中的示例,需要先了解两个背景知识:
-
由于矩阵分解将用户和物品映射到相同的潜在空间,两个用户之间的相似性也应该可以通过内积(或者等价地,余弦相似度)进行度量
-
常理说来,也可以使用Jaccard相关系数作为矩阵分解需要满足的用户相似性的度量标准
以下图为例进行解释:
图2 矩阵分解限制的示例
让我们一起来看图(a),不难发现:。 因此,可以得到p1、p2、p3在几何上的位置关系如图(b)所示。考虑新用户u4,评分如图(a)中虚线框内的数据所示。可以得到: ,这意味着用户u4与用户u1最相似,其次是u3和u2。但是,在(b)中的潜在空间中,如果将p4靠近p1,会使得p4更靠近p2而不是p3,带来排序的损失。
上面的示例体现了:在低维潜在空间中使用简单/固定的内积估计复杂的用户-物品交互而带来的限制。解决该问题的一个方案之一是:增大潜在因子数目K的值。但是,可能会损害模型的泛化能力(造成过拟合),特别是在数据稀疏的背景下。
3、距离满足的四个条件分别是什么意思?
-
非负性:
-
不可分的同一性:,当且仅当
-
对称性:
-
三角不等式:
4、离散距离/欧式距离/图距离分别如何度量?
-
离散距离:如果x=y,那么d(x,y)=0,否则d(x,y)=1
-
曼哈顿距离:,也成为 范数, 正则化可以产生稀疏权值矩阵,即产生一个稀疏模型,可以用于特征选择
-
欧式距离: 平移和旋转不变的距离,,也成为 范数, 正则化可以防止模型过拟合;一定程度上, 也可以防止过拟合,其原理可以查阅资料14
-
图距离: 依特定图内的距离定义出度量
参考资料
1、机器学习中的数学基础:向量篇
(http://www.hahack.com/math/math-vector/)
2、Hulu机器学习问题与解答系列 | 第五弹:余弦距离(https://zhuanlan.zhihu.com/p/31602125)
3、Neural Collaborative Filtering
(https://www.comp.nus.edu.sg/~xiangnan/papers/ncf.pdf)
4、Matrix Factorization Techniques for Recommender Systems
(https://datajobs.com/data-science-repo/Recommender-Systems-[Netflix].pdf)
5、Probabilistic Matrix Factorization
(https://papers.nips.cc/paper/3208-probabilistic-matrix-factorization.pdf)
6、Bayesian probabilistic matrix factorization using Markov chain Monte Carlo
(https://www.cs.toronto.edu/~amnih/papers/bpmf.pdf)
7、Bayesian Personalized Ranking from Implicit Feedback
(https://arxiv.org/pdf/1205.2618.pdf)
8、Collaborative Filtering for Implicit Feedback Datasets
(http://yifanhu.net/PUB/cf.pdf)
9、Neural Network Matrix Factorization
(https://arxiv.org/pdf/1511.06443.pdf)
10、Collaborative Denoising Auto-Encoders for Top-N Recommender Systems
(http://alicezheng.org/papers/wsdm16-cdae.pdf)
11、Deep Learning based Recommender System: A Survey and New Perspectives
(https://arxiv.org/pdf/1707.07435.pdf)
12、Collaborative Metric Learning
(http://www.cs.cornell.edu/~ylongqi/paper/HsiehYCLBE17.pdf)
13、Distance Metric Learning for Large Margin Nearest Neighbor Classification
(http://jmlr.csail.mit.edu/papers/volume10/weinberger09a/weinberger09a.pdf)
14、机器学习中正则化项L1和L2的直观理解
(https://blog.csdn.net/jinping_shi/article/details/52433975)
15、Comparisons Instead of Ratings: Towards More Stable Preferences
(https://ieeexplore.ieee.org/document/6040711)
16、Evaluating Recommendation Systems
(http://www.bgu.ac.il/~shanigu/Publications/EvaluationMetrics.17.pdf)
17、Metric Factorization: Recommendation beyond Matrix Factorization
(https://www.researchgate.net/publication/325570047_Metric_Factorization_Recommendation_beyond_Matrix_Factorization)
转发抽奖啦!!
又到了可爱的抽奖环节!!!
转发本篇文章到朋友圈,无分组保留三小时以上
将截图通过对话框发送给公众号
即可有机会获得我们送出的日历噢!
【出浅入深聊聊推荐系统算法】系列文章共有10篇,本文为该系列的第二篇。请保持关注我们的公众号,后续会继续推送该系列的文章。本系列文章第一篇请戳↓↓↓