神经网络交互+协同过滤

    科技2024-06-09  80

    论文题目:WWW2017-Neural Collaborative Filtering

    概述:

        我们主要解决的问题是:基于隐式反馈的推荐,我们之前解决推荐问题时,主要都是用MF来解决,但是MF有他自身的局限性,所以本文提出了一种神经网络框架NCF用来解决推荐问题。

    我们在之前的研究中可以很明显的发现用户与项目间的交互可以很好的提高MF的预测效果,只是简单的将潜在特征内积可能无法做到很好的效果。而这个交互函数,也是本文的关键,

    NCF框架介绍:

    从上面图中我们可以看出我们采用多层网络来构建用户与项目的交互函数,而这些网络我们可以定制,以达到我们想要的结果。

    首先我们输入的为一个one-hot编码的向量来指代usr和item,输入层便是一个嵌入层,我们可以将其转化为稠密向量,从而解决了冷启动问题(这个问题是因为新用户或新项目的产生,而无法做出推荐与预测),中间的每一层都是用户与项目的交互过程。

    模型的公式为:

        损失函数为:

    因为本文的数据主要是基于隐式反馈,而这个损失函数的前提是假设数据为高斯分布,与隐式反馈的特点并不符,所以我们改用概率形式的损失函数:

    GMF:

        用pu 表示用户的隐向量,用qi表示物品的隐向量,可以定义GMF的函数为:

    ⊙表示内积计算。将结果传到输出层,对应的计算公式为:

    其中a为一个激活函数,而h是需要学习的。

    我们通过简单分析就可以发现,当h为1,a为恒等函数时,这就是MF,所以说,MF只是NCF的一个特殊情况。

    MLP:

        我们如何建立用户与项目之间的交互,文章提出了MLP层来解决,MLP具有很大的灵活性,可以比较好的捕捉用户与项目间的交互。我们定义MLP层为:

        激活函数主要采用Relu

    NeuMF:

       

    整体的模型图如上图所示:

        他主要就是将GMF与MLP相结合,整体的表达式为:

        然而这个表达式有一些问题,因为这个表达式体现的是GMF与MLP共享用户与项目的嵌入向量,也就是说这就限制了各自的嵌入维数,反而达不到很好的集成效果。因此我们采用分开训练并在最后链接的方式:

    预训练:

        因为NeuMF的目标函数为非凸函数,所以以梯度下降的方式进行训练会找不到最优解,因此我们采用的方法是分开对两个模型进行训练,并将训练好的参数进行合并,从而作为NeuMF的参数:

    对两个模型的训练方法为Adama,对频繁更新的参数进行较小的更新,对不频繁更新的参数进行较大的更新,并以此随时调整学习率。

    Processed: 0.014, SQL: 8