推荐系统5--NeuralCF与PNN模型(改变特征交叉方式)

一,前言——推荐系统传统机器学习方法和深度方法的一些理解

深度学习时代,推荐模型主要有下面两个进展:
1,与传统的机器学习模型相比,深度学习模型的表达能力更强,能够挖掘更多数据中隐藏的模式
2,深度学习模型结构非常灵活,能够根据业务场景和数据特点,灵活调整模型结构,使模型与应用场景完美结合。
推荐系统算法两个根本性思路是:
1,用户和物品的表征,也就是如何更好的把用户特征和物品特征信息表示出来,比如矩阵分解(MF)模型就是属于这个思路上的,使用了embeding的思路来表示用户和物品,从而用向量的乘积来表示用户对物品的喜好程度。
2,特征交叉,也就是考虑特征之间的交互信息以丰富数据的表达能力,因子分解机(FM)家族就是致力于解决这个问题的。
在深度学习模型中,依然是上面这两个根本性的思路。只不过深度学习模型的学习能力比较强大,有的模型专门走用户和物品表征的思路,有的专门走特征交叉的思路,还有的是两种思路兼有。上一篇文章整理的AutoRec和DeepCrossing 一方面是在神经网络的复杂度和层数方面进行了进化,另一方面,这两个模型也是使用深度学习从用户和物品表征的角度来解决推荐问题的解决方案(Autorec,分为I-Autorec 和U-Autorec)。这两个模型并没有刻意去研究特定特征之间两两或者三三的交互能力,而是用全连接隐层把所有的特征进行了统一的交叉学习,这种统一的交叉学习没有什么针对性,因此会使得模型的学习能力受到限制。这篇文章整理的两个模型(NeuralCF 和PNN),更注重研究特征交叉的方式,当然同时也考虑了用户和物品表征的问题。

二,MF存在的问题

矩阵分解(MF)算法的原理:
矩阵分解试图在协同过滤算法(userCF 和itemCF)的基础上,使用更稠密的隐向量表示用户和物品,挖掘用户和物品的隐含兴趣和隐含特征,在一定程度上弥补协同过滤算法处理稀疏矩阵能力不足等问题。具体做法:将共现矩阵(用户对物品的评分矩阵)分解层用户矩阵P和物品矩阵Q相乘的形式,此时如果预测某个用户u对某个物品i的打分,直接 p u T q i p_{u}^{T} q^{i} puTqi就可以得到,其中 p u p_{u} pu q i q_{i} qi是用户u和物品i的隐向量。学习隐向量的过程,我们是先随机初始化两个参数矩阵Q和P,然后根据已有的评分矩阵的值求损失,通过梯度下降一步一步的更新参数得到的。

上面这个隐向量的学习过程,在深度学习中,可以看成是一个简单的神经网络表示。用户向量和物品向量可以看成是embeding的方法,而最终的评分值(预测值),就是用户向量和物品向量内积后的“相似度”。这步内积运算,就可以看成是一个神经单元里面的计算。
在这里插入图片描述
但这个模型由于结构太简单,计算也太简单,使得输出层无法对目标进行有效的拟合。在实际问题中,会发现往往模型会出现欠拟合状态。NeuralCF的作者说,内积运算其实不足以可靠的预测评分。
在这里插入图片描述
上图中,左图是共现矩阵,通过这个矩阵,可以计算出u1,u2,u3和u4之间的相似度。在共现矩阵中,u4与u1最相似,其次是u3,最后是u2。但是如果我们把u1,u2,u3用隐向量的方式表现出来,如右图所示,其中pi是ui的隐向量。会发现p4无论放在虚线中的哪一个位置,p4与p2的相似度都要大于p2与p3的相似度(用夹角来衡量相似度)。这在左图共现矩阵中是不成立的。**造成这种现象的原因是:隐向量之间的相似度关系(对两个隐向量进行内积计算来得到相似度)不能准确的表现共现矩阵中对应向量之间的相似关系。更深层的原因是,共现矩阵中对应向量之间的相似关系是高维的,但是隐向量之间通过内积计算的相似度是低维的,高维的相似关系映射到低维之后,表达能力不足。**所以为了更好的表示共现矩阵中向量之间的关系,基于深度学习网络,作者想出了用一个多层的神经网络来代替简单的内积运算,来增强模型的学习能力,这个就是NeuralCF的基本思想。
在这里插入图片描述

三,Neural CF模型的原理(NCF框架以及两个实例GMF和MLP的原理)

Neural CF 是2017年新加坡国立大学的研究人员提出的一个模型,提出的动机就是MF的内积操作比较简单,因此作者用一个“多层的神经网络+输出层”替换了矩阵分解里面的内积操作。这样做一是让用户向量和物品向量做更充分的交叉,得到更多有价值的特征组合信息。二是引入更多的非线性特征,让模型的表达能力更强。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值