推荐系统FNN模型(FM+MLP=FNN)

Posted 天泽28

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了推荐系统FNN模型(FM+MLP=FNN)相关的知识,希望对你有一定的参考价值。

推荐系统(八)FNN模型(FM+MLP=FNN)

推荐系统系列博客:

  1. 推荐系统(一)推荐系统整体概览
  2. 推荐系统(二)GBDT+LR模型
  3. 推荐系统(三)Factorization Machines(FM)
  4. 推荐系统(四)Field-aware Factorization Machines(FFM)
  5. 推荐系统(五)wide&deep
  6. 推荐系统(六)Deep & Cross Network(DCN)
  7. 推荐系统(七)xDeepFM模型

原来是想把FNN和PNN放到一篇博客里一起写了,主要原因有两个:1. 是这两个模型都是交大张伟楠老师及合作者的成果;2. PNN也是对FNN的改进,两者之间存在一定关联。但最终还是决定分开写,因为放到一起会略显杂乱。因此,这篇博客的篇幅应该会相对较短,看起来会很舒服。
言归正传,FNN全称Factorisation Machine supported Neural Network,如果用一句简短的话概括FNN那就是:FM+MLP,如果再用一句稍显复杂的话概括FNN那就是:FNN是一个两阶段训练的模型,阶段一先训练一个FM模型得到每个field的embedding向量,阶段二,基于阶段一的embedding向量初始化MLP的embedding层,然后训练一个MLP(DNN)。

一、FNN模型结构

FNN的整体网络结构如下图所示(图片摘自原论文):

FNN的训练方式带有传统机器学习浓厚的烙印,并不想深度学习模型那样是end-to-end的,而是两阶段训练方式。
阶段一:使用FM模型训练得到每个field的embedding向量。
阶段二:基于阶段一的embedding向量初始化MLP里的embedding向量,也就是上图中的Dense Real Layer。然后训练MLP网络得到最终的模型。

至于FM训练得到的embedding向量如何初始化MLP中的embedding向量,借用一张图能够清晰的看到(图片来自王喆《深度学习推荐系统》):

二、FNN优缺点

2.1 优点

  1. 一般在end-to-end训练DNN(MLP)的embedding层向量时,都是随机初始化的。而FNN把FM训练好的embedding向量用于初始化DNN的embedding向量,相当于在初始化DNN的embedding向量时引入了先验知识,因此能够更好更快的收敛DNN。

2.2 缺点

正如张伟楠老师在PNN那篇论文中所提到的那样,FNN主要有两个比较大的局限性:

  1. DNN的embedding层质量受限于FM的训练质量。
  2. 在FM中进行特征交叉时使用的是隐向量点积,把FM预训练得到的embedding向量送入到MLP中的全链接层,MLP的全链接层本质上做的是特征间的线性加权求和,即做的是『add』的操作,这与FM有点不太统一。另外,MLP中忽略了不同的field之间的区别,全部采用线性加权求和。

PNN论文中原话如下:

  1. the quality of embedding initialization is largely limited by the factorization machine.
  2. More importantly, the “add” operations of the perceptron layer might not be useful to explore the interactions of categorical data in multiple fields.

关于PNN将在下一篇博客中介绍。

以上是关于推荐系统FNN模型(FM+MLP=FNN)的主要内容,如果未能解决你的问题,请参考以下文章

19推荐系统13FNN——TensorFlow2实现

6.3 tensorflow2实现FNN推荐系统——Python实战

6.4 tensorflow2实现FNN推荐系统——Python实战(第二篇)

19推荐系统11FM与深度学习模型的结合

推荐模型复现:精排模型DeepFMDIN

(读论文)推荐系统之ctr预估-Wide&Deep模型解析