NCF在推荐领域应用背景
CF,也就是协同过滤,在推荐领域有极其广泛的应用,应该没有谁的智能推荐系统是没用到过CF的。CF其实就是挖掘user和item的交互关系,然后生成I2I或者U2I表示向量。传统的CF从数学角度上还是偏行为统计计算的,没有用到很复杂的网络。因为深度学习很火,也是有一些关于Neural Collaborative Filtering的工作。今天介绍一下最近看的叫《Neural Collaborative Filtering》这篇论文。也有一个对应的开源项目,地址:
https://github.com/hexiangnan/neural_collaborative_filtering
有兴趣的做推荐相关工作的同学,可以在自己的工作中用用。
隐式反馈vs显式反馈
其实把任何算法前面加个N,改成neural某某都是比较好发paper或者取得效果的。这篇文章比较有意思的一个点我觉得不在于将GMF或者MLP加在CF中,而是为CF构建了一套针对隐式反馈的建模理论。
说到这里先要提下隐式反馈和显式反馈。首先推荐业务一般都是按照有监督学习方式建模,也就是说要构建特征和目标列。在目标列的选择上一般会认为购买、点击、收藏这种行为是正样本,标记成label=1,其它行为全都是0。
但是这其中有一些问题,有的时候点击了的不一定是用户真正喜欢的,没点击的不一定是用户不喜欢的。
在虎扑上经常看到这样的问题:
以上9个女生哪个最好看,大部分人会给出最好看的那个选择,但是并不表明他觉得剩下8个不好看。如果只以他觉得最好看的那个女生作为正样本去构建他的审美模型,肯定是不能完全覆盖用户的兴趣,这是显式反馈的建模机制。
对应以上的问题,隐式反馈是另一种建模方案,在隐式反馈中只要用户去看了某个女生,就把这个女生当成正样本,不看的当成负样本,这样就减少了构建样本时的误差(毕竟不感兴趣的也不会去看)。也就是说隐式反馈更多地是算一个概率,user和item是否会发生交互。
NCF网络结构
网络结构如上,底层输入是user和item的one-hot编码结果。在网络训练层使用了两种网络结构,一种是GMF(Geberakuzed Matrix Factorization),另一种是MLP(Multi-Layer perceptron)。通过将GMF和MLP的输出特征结合,最终通过NeuMF Layer去产出user和item交互的概率。就不展开解释了,具体推导见论文。
总之,通过NCF可以比较快速的user和item的潜在交互概率,可以作为推荐系统中的一个重要的召回链路输入。
参考文献:
[1]https://blog.csdn.net/xxiaobaib/article/details/99116755