一:绪论:

我们都知道,无论是FM还是FMM,归根到底是一个二阶特征交叉的模型。受到组合爆炸问题的困扰,FM几乎不可能扩大到三阶以上,这就不可避免的限制了FM的表达能力(不管是一阶特征还是两辆组合的二阶特征,本质上都是线性模型,同时高阶特征对于FM模型来说,训练复杂度过高),而深度神经网络理论上可以拟合任意复杂函数,且特征表达能力强,因此可以尝试用深度神经网络去拟合FM中的二阶向量内积部分。于是就有了NFM。

二:NFM模型

1,NFM模型

FM公式:

NFM公式:

上面两个公式可以看出,FM公式的二阶向量求内积模块,可以由深度神经网络来拟合成一个函数f(X),在f(x)是NFM的核心,用来学习二阶组合特征和高阶的组合特征模式。

2,模型结构


2.1 Embedding Layer
和其他的DNN模型处理稀疏输入一样,Embedding将输入转换到低维度的稠密的嵌入空间中进行处理。作者稍微不同的处理是,使用原始的特征值乘以Embedding vector,使得模型也可以处理real valued feature。
2.2 Bi-Interaction Layer
Bi是Bi-linear的缩写,这一层其实是一个pooling层操作,它把很多个向量转换成一个向量,形式化如下:

fBI的输入是整个的嵌入向量,xi xj是特征取值,vi vj是特征对应的嵌入向量。中间的操作表示对应位置相乘。所以原始的嵌入向量任意两个都进行组合,对应位置相乘结果得到一个新向量;然后把这些新向量相加,就得到了Bi-Interaction的输出。这个输出只有一个向量。
需要说明的是:Bi-Interaction并没有引入额外的参数,而且它的计算复杂度也是线性的,和max/min pooling以及原来的拼接操作复杂度都是相同的。因为上式可以参考FM的优化方法,化简如下(想想一个矩阵):

它的计算复杂度是O(NK)。其中k是嵌入向量的维度,N是输入x中非零特征的个数。这个公式大家要搞懂是怎么回事哦,代码里面就是按照这个来写的。
总结,Bi-Interaction Layer实现了对二阶组合特征的建模,但是又没有引入额外的开销,包括参数数量和计算复杂度。
2.3 Hidden Layer
这个跟其他的模型基本一样,堆积隐藏层以期待来学习高阶组合特征。模型结构可以参考Wide&Deep论文的结论,一般选用constant的效果要好一些。

2.4 Prediction Layer

最后一层隐藏层zL到输出层最后预测结果形式化如下:

其中h是中间的网络参数。考虑到前面的各层隐藏层权重矩阵,f(x)形式化如下:

这里的参数为

,相比于FM其实多出的参数就是隐藏层的参数,所以说FM也可以看做是一个神经网络架构,就是去掉隐藏层的NFM。我们把去掉隐藏层的NFM称为NFM-0,形式化如下:

如果h为全1向量,那么此时NFM就是FM。
这是第一次把FM看做是神经网络来处理,这样的观点对于优化FM提供了一些新的思路。同时,像NN中常用的技巧也可以应用到这里面来,比如Dropout,实验发现在正则化FM的时候,使用Dropout比传统的L2正则化还要有效。

三: NFM vs Wide&Deep、DeepCross

最重要的区别就在于Bi-Interaction Layer。Wide&Deep和DeepCross都是用拼接操作(concatenation)替换了Bi-Interaction。
Concatenation操作的最大缺点就是它并没有考虑任何的特征组合信息,所以就全部依赖后面的MLP去学习特征组合,但是很不幸,MLP的学习优化非常困难。
使用Bi-Interaction考虑到了二阶特征组合,使得输入的表示包含更多的信息,减轻了后面MLP部分的学习压力,所以可以用更简单的模型,取得更好的成绩。

四:训练复杂度

上面提到过,NFM相比于FM,复杂度增加在MLP部分。所以NFM的复杂度和Wide&Deep、DeepCross是相同的,形式化如如下:

五:NFM训练

1 目标函数
NFM可以用于分类、回归、ranking问题,对应着不同的目标函数。

回归。square loss

分类。Hinge Loss 或 log loss

ranking。Contrastive max-margin loss
论文中以回归问题为例,使用square loss,形式化如下。这里并没有正则化项,因为作者发现在NFM中使用Dropout能够得到更好的效果。

2,参数估计
使用mini-batch Adagrad来进行参数估计,Adagrad是SGD的变体,特点是每个参数都有自己的学习速率。然后让参数沿着目标函数负梯度的方向进行更新,是下降最快的方向,形式化如下:

这里唯一需要指出的是Bi-Interaction在求梯度时是怎么做的:


所以,NFM的训练依旧可以是端到端的训练,只需要把Bi-Interaction插入到网络中即可。

3 Dropout
Dropout在训练过程中随机丢掉一些神经元,那么再一次参数更新中也就只会更新部分参数。可以理解成是相当于很多个小的NN取平均值。增加了模型的抗过拟合能力。在NFM中,Bi-Interaction的输出后就增加了Dropout操作,随机的丢弃了一部分的输出。随后的MLP同样应用了Dropout。
需要注意的是,在测试阶段,Dropout是不使用的,所有的神经元都会激活。

4 Batch Normalization
DNN的训练面临很多问题。其中一个就是协方差偏移(covariance shift),意思就是:由于参数的更新,隐藏层的输入分布不断的在变化,那么模型参数就需要去学习这些变化,这减慢了模型的收敛速度。
Batch Normalization就是为了解决这个问题的,形式化如下:

对于隐藏层的输入,BN在mini-batch数据上,把输入转换成均值为0,方差为1的高斯分布。其中的gamma、beta是两个超参数,为了扩大模型的表达能力,如果模型发现不应用BN操作更好,那么就可以通过学习这两个参数来消除BN的影响。NFM中Bi-Interaction Layer的输出就是MLP的第一个输出,包括后面所有隐藏层的输入都需要进行Batch Normalization。
注意,在测试预测的时候,BN操作同样有效,这时的均值和方差在整个测试集上来进行计算。

六: 实验结果

FM相当于是去掉DNN的NFM,论文中给出的数据是只用了一个隐藏层的NFM,相比于FM性能提升了7.3%;NFM只用了一个隐藏层,相比于3个隐藏层的Wide&Deep,和10个隐藏层的DeepCross,NFM用更简单的模型,更少的参数得到了性能的提升。

论文中对比了FM、Wide&Deep模型,效果不用说肯定是NFM最好,这里就不贴图了,感兴趣的小伙伴可以去原论文中查看。此处,只给出一些重要的结论:

Dropout在NFM中可以有效的抑制过拟合

Batch Normalization在NFM中可以加快训练速度

NFM使用一个隐藏层得到了最好的效果

如果用FM来pre-train嵌入层,NFM会收敛的非常快,但是NFM最终的效果并没有变好。说明NFM对参数有很好的鲁棒性。

模型性能基本上随着Factor的增加而提升。Factor指Embedding向量的维度。
总结
NFM主要的特点如下:

NFM核心就是在NN中引入了Bilinear Interaction(Bi-Interaction) pooling操作。基于此,NN可以在low level就学习到包含更多信息的组合特征。

通过deepen FM来学校高阶的非线性的组合特征

所以,依旧是FM+DNN的组合套路,不同之处在于如何处理Embedding向量,这也是各个模型重点关注的地方。现在来看,如何用DNN来处理高维稀疏的数据并没有一个统一普适的方法,业内依旧在摸索中。
完整代码参考Github: https://github.com/gutouyu/ML_CIA

NFM--FM的神经网络化尝试相关推荐

  1. 推荐系统8---FNN、DeepFM与NFM(FM在深度学习中的身影重现)

    1,前言 Wide&Deep模型开启深度学习时代的组合模型之后,后面的模型都是在Wide&Deep的基础上进行各种方式的模型组合,以应对不同的模型任务.从大的角度看,模型的改进方向主要 ...

  2. 【更新】深度学习推荐系统

    其他博客:笔记1.博客2 文章目录 第一章.互联网的增长引擎--推荐系统 第二章.前深度学习时代--推荐系统的进化之路 第三章.浪潮之巅--深度学习在推荐系统中的应用 3.1 深度学习推荐模型的演化关 ...

  3. 【深度学习推荐系统-王喆】笔记系列 3 浪潮之巅——深度学习在推荐系统中的应用

    第 3 章 浪潮之巅 -- 深度学习在推荐系统中的应用 概述 与传统机器学习模型相比,深度学习模型的优势 1.表达能力更强 能够挖掘出更多数据中潜藏的模式 2.结构非常灵活 能够根据业务场景和数据特点 ...

  4. 推荐系统 (三): 浪潮之巅 -- 深度学习在推荐系统中的应用

    目录 深度学习推荐模型的演化关系图 AutoRec -- 单隐层神经网络推荐模型 AutoRec 模型的基本原理 AutoRec 模型的结构 基于 AutoRec 模型的推荐过程 U-AutoRec ...

  5. 【推荐算法】深度学习推荐算法综述 Deep Learning based Recommender System: A Survey and New Perspectives

    一.MLP based Recommender System 1. Deep Crossing模型 Deep Crossing模型完整的解决了从特征工程.稀疏向量稠密化.多层神经网络进行优化目标拟合等 ...

  6. 推荐系统(Recommender System)笔记 01:推荐系统的演化

    推荐系统(Recommender System)01 推荐系统的架构 数据部分 模型部分 传统推荐模型 协同推荐(Collaborative Filtering) 矩阵分解(Matrix Factor ...

  7. NFM模型理论与实践

    欢迎关注公众号:python科技园,一起学习python和算法知识. 一.理论部分 今天介绍一下NFM模型,NFM模型是FM模型的神经网络化尝试:即将FM的二阶交叉项做为Deep模型的输入,以此加强模 ...

  8. 深度学习推荐系统实战总结

    https://time.geekbang.org/column/article/294382 推荐系统要处理的问题可以被形式化地定义为:在特定场景C(Context)下,针对海量的"物品& ...

  9. 因子分解机(FM)家族

    写在前面的话   在深度学习(Deep Learning,以下简称DL)大行其道的今天,因子分解机(Factorization Machines,以下简称FM)以其模型简单.可解释性强等优点在搜索广告 ...

最新文章

  1. oracle netca 乱码,Oracle 11g 安装及netca,dbca乱码之解决
  2. 【linux】多线程编程(c语言编程)
  3. C++Primer再学习(3)
  4. fastjson 返回json字符串,JSON.parse 报错
  5. 飞鸽传书2007很给力
  6. MYSQL数据库表操作pdf
  7. MySQL_02之增删改查、PHP数据库操作
  8. 超市不同时段人流量统计分析
  9. 安装系统user服务器登录失败,win10系统开机提示user profile service服务器登录失败的解决方法...
  10. C#中属性PropertyInfo的setvalue方法
  11. 对《致加西亚的信》的异议
  12. GAN入门实例【个人理解】
  13. 企业为什么着急签三方_学校又在催我签三方了、三方协议很重要吗、签完三方能毁约吗……...
  14. 执念斩长河专栏数据结构--目录
  15. 如何将 PDF 转换为 JPG、PNG、TIFF、BMP、GIF?
  16. Centos7 源码编译安装linux longterm 内核4.19.47
  17. 远程同步软件rsync(一)
  18. 金蝶迷你版凭证导入工具_金蝶凭证批量导入方法
  19. 痞子衡嵌入式:恩智浦i.MX RTxxx系列MCU特性介绍(2)- RT685EVKA性能实测(Dhrystone)...
  20. 进制转换——基于STC89C52RC系列单片机

热门文章

  1. 电脑连接上WiFi但是上不了网
  2. 电脑能连接热点和网线,不能连接WIFI
  3. 【1】DICOM图像格式
  4. Html 内嵌 选择器属性 Dom操作 JavaScript 事件
  5. RuntimeError: NCCL error in: /pytorch/torch/lib/c10d/ProcessGroupNCCL.cpp:784, unhandled system erro
  6. 全开源iApp后台带PHP文件源码
  7. Android-服务Service(2)-bind绑定Service及两种生命周期
  8. 容器启动失败 ERROR: for log Cannot start service log: OCI runtime create failed: container_linux.go:346
  9. 图卷积网络 GCN Graph Convolutional Network(谱域GCN)的理解和详细推导
  10. eclipes Java代码连接Mysql数据库