推荐系统--n--模型NeuralCF

NeuralCF是对协同过滤的改进。
在深度学习之前,协同过滤在推荐算法大放异彩,但是协同过滤的弊端也很明显,它直接利用非常稀疏的共现矩阵进行预测,所以模型的泛化能力非常弱,遇到历史行为非常少的用户,就没法产生准确的推荐结果。

虽然可以利用矩阵分解算法 增强它的泛化能力,但是因为矩阵分解是利用非常简单的内积方式来处理用户向量和物品向量的交叉问题的,所以它的拟合能力也比较弱。我们知道深度学习模型的拟合能力都很强,那能不能利用深度学习来改进协同过滤算法呢?

当然可以了,2017年,新加坡国立的研究者就使用深度学习网络来改进传统的协同过滤算法,取名NeuralCF(神经网络协同过滤),大大提高了协同过滤算法的泛化能力和拟合能力。

NeuralCF模型的结构

在NeuralCF之前,我们先简单回顾一下协同过滤和矩阵分解的原理。协同过滤是利用用户和物品之间的交互行为历史,构建出一个共现矩阵,在共现矩阵的基础上,利用每一行的用户向量相似性,找到相似用户,再利用相似用户喜欢的物品进行推荐。
在这里插入图片描述
矩阵分解则进一步加强了协同过滤的泛化能力,它把协同过滤中的共现矩阵分解成了用户矩阵和物品矩阵,从用户矩阵中提取出用户隐向量,从物品矩阵中提取出物品隐向量,再利用他们之间的内积相似性,进行推荐排序,如果神经网络的思路来理解矩阵分解,它的结构图是这样的:
在这里插入图片描述
上图的输入层是由用户ID 和物品ID生成的One-hot向量,Embedding层是One-hot向量转化成稠密的Embedding向量表达,这部分就是矩阵分解中的用户隐向量和物品隐向量。输出层使用了用户隐向量和物品隐向量的内积作为最终预测得分,之后通过跟目标得分对比,进行反向梯度传播,更新整个网络。

把矩阵分解神经网络化后,把它跟Embedding+MLP以及Wide&Deep模型做对比,我们可以看出网络的薄弱环节:矩阵分解在Embedding层之上的操作过于简单,就是直接利用内积得出score,这会导致特征之间还没有充分交叉就直接给出结果,模型会有欠拟合的风险。针对这一点,NeuralCF对矩阵分解进行了改进,它的结构图如下:
在这里插入图片描述
NeuralCF相比矩阵分解,用了一个多层的神经网络替代了原来的简单的点积操作,这样就可以让用户和物品隐向量之间进行充分的交叉,提高模型的整体拟合能力。

NeuralCF模型的扩展,双塔模型

有了之前矩阵分解和深度学习模型的经验,理解NeuralCF肯定比较容易,事实上,NeuralCF的模型结构中,蕴含了一个非常有价值的思想,就是我们可以把模型分成用户侧和物品侧模型两部分,然后用互操作层把这两部分联合起来,产生最后的预测得分。

这里的用户侧模型结构和物品侧模型结构,可以是简单的Embedding层,也可以是复杂的神经网络结构,最后的互操作层可以是简单的点积操作,也可以是比较复杂的MLP结构。但只要是这种物品侧模型+用户侧模型+互操作层的模型结构,我们统称为“双塔模型”结构。

下图就是一个经典的“双塔模型”的抽象结构,它的名字形象地解释了它说的结构组成,两侧的模型结构就像两个高塔一样,而最上面的互操作层则像两个塔尖建起的空中走廊,负责两侧信息沟通。
在这里插入图片描述
对于NeuralCF来说,它只是利用了用户ID作为“用户塔”的输入特征,用物品ID作为“物品塔”的输入特征。事实上,我们完全可以把其他用户和物品相关的特征也分别放入用户塔和物品塔,让模型能够学到的信息更全面,比如说, YouTube在构建召回层的双塔模型时,就分别在用户侧和物品侧输入了多种不同特征。
在这里插入图片描述
我们可以看到,YouTube召回双塔模型的用户侧特征包括了用户正在观看的视频ID、频道ID、该视频的观看数、被喜欢的次数、以及用户历史观看过的视频ID等等。物品侧的特征包括了候选视频ID、频道ID、被观看次数、被喜欢次数等等。在经过了多层ReLU神经网络的学习后,双塔模型最终通过softmax输出层连接两部分,输出最终预测分数。

那这个双塔模型相比之前的Embedding+MLP和Wide&Deep有什么优势呢?在实际工作中,双塔模型最重要的优势在于它易上线、易服务。为什么这么说呢?

物品塔和用户塔最顶端的那层神经元的输出其实就是全新的物品Embedding和用户Embedding。物品塔的输入特征向量是x, 经过物品塔的一系列变换,生成了向量u(x),那么这个u(x)就是这个物品的Embedding向量。同理,v(y)是用户y的Embedding向量,这时,我们就可以把u(x)和v(y)存入特征数据库,线上服务时,我们只要把u(x)和v(y)取出来再对他们做简单的互操作层运算就可以得到最后的模型预估结果了。

所以使用双塔模型,我们不用把整个模型部署上线,只需要预存物品塔和用户塔的输出,以及在线上实现互操作层就可以了。如果这个互操作层是点积操作,这个实现很容易,也是双塔模型在工业界的巨大优势所在。

正因为这个优势,双塔模型被广泛应用在YouTube、FaceBook、百度等各大公司的推荐场景中。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值