当前位置:网站首页>推荐系统-排序层-2017:NFM模型【FM家族】
推荐系统-排序层-2017:NFM模型【FM家族】
2022-08-06 06:00:00 【u013250861】


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

其核心是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层。
边栏推荐
猜你喜欢
随机推荐
LeetCode50天刷题计划(Day 14—— 删除链表的倒数第 N 个结点(12.20-13.00)
父子组件通信的属性验证 validator
内容翻译-内容高质量批量免费翻译
Corner extraction comparison
[Simple use of lidar under ros] (1)
音视频同步 ffmpeg 推流
Notes on ROS files (continuously updated)
二分法的基本模板
接入华为游戏防沉迷,点击防沉迷弹窗后游戏闪退
rtcp中的持续性丢包统计
【Using the Basic Container】
高并发、多线程、分布式都不懂,你拿什么跳槽阿里、腾讯、京东?还不好好学习啊
Write Plist file using Qt XmlStreamWriter
FAS820 copper alloy FAS820 corresponds to domestic grades
ffmpeg RGB raw data H264 encoding to write mp4
【论文笔记】—低照度图像增强—Supervised—基于频率的分解和增强模型—2020-CVPR
A Pseudo-relevance feedback framework combining relevance matching...泛读笔记
Qt 5.14.2 connect to Mysql database
四面阿里巴巴如愿拿到offer定级P7,为此我筹备了半年,难道你还不准备秋招啊
ffplay源码分析:图像格式转换








