推荐系统之NeuralCF模型

前言

今天开始整理讲解NeuralCF模型,这个模型相比较AutoRec和DeepCrossing添加了更多特征交叉的想法,前面讲解的AutoRec和Deep Crossing模型是在神经网络的复杂度和层数方面进行的进化,而这两个模型也是使用深度学习从用户和物品相似度的角度来进行系统推荐的, 但是这两个模型在特征交叉这个方面并没有进行很合理的设计,更多的是使用了全连接层来增加了模型的复杂度和使得所有特征进行了一个统一的交叉。这样存在着很大的问题,即两个毫不相关的特征也较交叉在了一起,这就使得对模型权重有所影响。所以为了更好地使两两特征更好的交叉,于是新加披国立大学在2017年提出了基于深度学习的协同过滤模型NeuralCF。其中对AutoRec和DeepCrossing这两个模型有些遗忘的小伙伴可以看看我这篇文章。推荐算法之AutoRec与Deep Crossing模型

一、关于MF的小知识

NeuralCF这个模型是基于矩阵分解进化而来的,它更多的是解决了矩阵分解中对特征进行简单交叉的方式,用深度学习来进行更深度的特征融合,对矩阵分解也有所遗忘的朋友可以看看我这篇文章–推荐算法之矩阵分解,在这里我就不多做回顾了。在这里多说一句总结的话,对于矩阵分解来说其实就是类似于一个简单的神经网络,其中的隐向量Q和P也就是用户和物品向量的embedding,而隐向量相乘也可以看作是一个神经网络中的一层,进而计算相似度,如下图所示:

 但是这个模型太简单了,并不能对所有的向量进行充分的拟合,所以在进行训练的时候往往会出现欠拟合的情况,在NeuralCF的论文中,作者也进一步证明了这种情况的劣势。这里举了一个例子

上图中, 左边的就是我们说的共现矩阵(user-item)矩阵, 观察这个矩阵,可以计算出u_1,u_2,u_3,u_4之间的相似度。 会发现共线矩阵里面u_4u_1最相似, 其次是u_3

二、NeuralCF模型原理

此模型提出的动机是改变MF(矩阵分解)的劣势,将比较简单, 表达能力不强的内积操作使用多层的神经网络来进行替代, 这样就可以是的用户向量和物品向量做更充分的交叉, 得到更多有价值的特征组合信息,并且可以引入更多的非线性特征。变换如下图所示:

 从上图中可以看到和MF的唯一区别就是将embedding内积操作换成了多层MLP,这样就可以对特征进行更有效地交叉,并且引入了更多的非线性关系,来进行拟合交叉函数,并且后面的很多模型都是从特征交叉这一点出发的。其中这个框架的计算公式如下所示:

 如果大家做过深度学习有关的工作,上述公式应该不会陌生,简单解释一下就是每一层都是一个MLP层,前面的P和Q矩阵就是将特征向量进行embedding。然后根据预测评分或者分类问题设计不同的损失函数继续训练即可。

对于矩阵分解来说,是使用线性的方式进行了特征交叉,那么将两者融合效果是不是更好呢,NeuralCF的作者就是这样的思路,这也就是完成的NeuralCF模型了,如下图所示:

 相信大家也能够很轻易的看懂这个模型了,具体的计算公式如下所示:

这两个模型的embedding向量是单独学习的, 并不是共享的,作者认为这样会更加的灵活,可以根据模型的复杂程度确定不同的隐向量的维度, 然后单独去各自的模型计算, 计算的结果进行合并, 再过一层全连接得到最后的输出。这就是这个模型的基本内容了,也是比较简单的,

参考:AI上推荐 之 NeuralCF与PNN模型(改变特征交叉方式)

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
心中带点小风骚的头像心中带点小风骚普通用户
上一篇 2022年5月26日
下一篇 2022年5月26日

相关推荐