美文网首页
推荐系统排序算法--NFM模型

推荐系统排序算法--NFM模型

作者: 算法手记 | 来源:发表于2020-01-12 22:11 被阅读0次

    1、引言

    在CTR预估中,为了解决稀疏特征的问题,学者们提出了FM模型来建模特征之间的交互关系。但是FM模型只能表达特征之间两两组合之间的关系,无法建模两个特征之间深层次的关系或者说多个特征之间的交互关系,因此学者们通过Deep Network来建模更高阶的特征之间的关系。因此 FM和深度网络DNN的结合也就成为了CTR预估问题中主流的方法。有关FM和DNN的结合有两种主流的方法,并行结构和串行结构。两种结构的理解以及实现如下表所示:

    1、两种结构的理解

    今天介绍的NFM模型(Neural Factorization Machine),便是串行结构中一种较为简单的网络模型。

    2、NFM模型介绍

    我们首先来回顾一下FM模型,FM模型用n个隐变量来刻画特征之间的交互关系。这里要强调的一点是,n是特征的总数,是one-hot展开之后的,比如有三组特征,两个连续特征,一个离散特征有5个取值,那么n=7而不是n=3.

                        y(x)=w_{0}+ \sum_{i=1}^n w_{i} x_{i}+ \sum_{i=1}^{n} \sum_{j=i+1}^n <v_{i}, v_{j}> x_{i} x_{j}

    可以看到,不考虑最外层的求和,我们可以得到一个K维的向量。对于NFM模型,目标值的预测公式变为:

                        \hat{y}_{NFM(x)}=w_{0}+ \sum_{i=1}^n w_{i} x_{i}+ f(x)

    其中,f(x)是用来建模特征之间交互关系的多层前馈神经网络模块,架构图如下所示:

    2、架构图

    mbedding Layer和我们之间几个网络是一样的,embedding 得到的vector其实就是我们在FM中要学习的隐变量v。

    Bi-Interaction Layer名字挺高大上的,Bi是Bi-linear的缩写,这一层其实是一个pooling层操作,它把很多个向量转换成一个向量,,其实它就是计算FM中的二次项的过程,因此得到的向量维度就是我们的Embedding的维度。最终的结果是:

                        f_{BI} (V_{x} )=\frac{1}{2} [(\sum_{i=1}^n x_{i} v_{i}  )^2- \sum_{i=1}^n (x_{i} v_{i})^2]

    Hidden Layers就是我们的DNN部分,将Bi-Interaction Layer得到的结果接入多层的神经网络进行训练,从而捕捉到特征之间复杂的非线性关系。

    在进行多层训练之后,将最后一层的输出求和同时加上一次项和偏置项,就得到了我们的预测输出:

                        \hat{y}_{NFM(x)}=w_{0}+ \sum_{i=1}^n w_{i} x_{i}+ h^T \sigma _L(W_{L}(...\sigma_1(W_1f_{BI}(V_x)+b_1)...)+b_L )

    3、小结

    NFM模型将FM与神经网络结合以提升FM捕捉特征间多阶交互信息的能力。根据论文中实验结果,NFM的预测准确度相较FM有明显提升,并且与现有的并行神经网络模型相比,复杂度更低。

    NFM本质上还是基于FM,FM会让一个特征固定一个特定的向量,当这个特征与其他特征做交叉时,都是用同样的向量去做计算。这个是很不合理的,因为不同的特征之间的交叉,重要程度是不一样的。因此,学者们提出了AFM模型(Attentional factorization machines),将attention机制加入到我们的模型中。

    参考文献:

    论文:Neural Factorization Machines for Sparse Predictive Analytics

    相关文章

      网友评论

          本文标题:推荐系统排序算法--NFM模型

          本文链接:https://www.haomeiwen.com/subject/fmtvactx.html