推荐模型-上下文感知-2017:NFM【FM家族】

推荐模型-上下文感知-2017:NFM【FM家族】_第1张图片
在这里插入图片描述
He X, Chua T S. “Neural factorization machines for sparse predictive analytics” in SIGIR 2017

FNN探索了FM与DNN相结合的方式,而Wide&Deep则给出了一种模型组合的思路,NFM通过设计一种结构,把FM和DNN直接组合了起来,不同于FNN需要两阶段训练,NFM是一个同时包含了FM和DNN两部分的完整模型,训练过程是端到端的。我们先来看一下NFM的公式:
在这里插入图片描述
可以看出,与FM的公式相比,前两项是一样的,只有第三项由原来的二阶隐向量内积变成了f(x)。
推荐模型-上下文感知-2017:NFM【FM家族】_第2张图片
这是因为作者认为二阶交叉表达能力有限,需要用一个功能更强大的函数来代替,而这个函数就是一个带向量交叉的神经网络。NFM模型如图4所示(这里没有把线性部分画出来)。

推荐模型-上下文感知-2017:NFM【FM家族】_第3张图片
其核心是Bi-Interaction Pooling部分,它的作用是实现输入向量的两两相乘,然后累加起来,再送入DNN做进一步的交叉。

Bi-Interaction Pooling是NFM的核心部分,功能跟PNN中的Product Layer类似,都是实现向量相乘,详细内容可参考之前的文章:PNN。不过在细节处理上,NFM跟PNN以及FM有些不一样。BI层的公式如下:

在这里插入图片描述
这里是两个向量对应元素的乘积(element-wise product of two vectors),而不是点积,点积之后是一个标量,而BI层的两个向量相乘之后依然是一个k维向量:
在这里插入图片描述
向量两两相乘之后,把所有这些结果向量进行相加(Sum Pooling),得到“一个”k维向量,起到了池化的作用。对于FM模型来说,到这一步就结束了,但NFM还会将这个k维向量送入DNN做进一步的非线性变换,使得FM的能力通过神经网络得到进一步的增强,一些更高阶的特征交叉得到了隐式的实现。

通过BI层,NFM把FM的显式二阶交叉和DNN的隐式高阶交叉能力组合到了一起,训练时,参数可以通过DNN反向传播到FM的隐向量进行统一更新,实现了真正的端到端训练。

在实现上,NFM在BI层采用了Dropout来避免过拟合,采用了BatchNormalization避免输入层的参数分布改变隐藏层和输出层的分布。论文通过实验还发现DNN网络并不是越深越好,1层的网络效果优于更多层,也优于0层。

你可能感兴趣的:(#,RS/上下文推荐(FM系列),深度学习,NFM,FM,推荐系统)