推荐系统FNN模型(FM+MLP=FNN)
Posted 天泽28
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了推荐系统FNN模型(FM+MLP=FNN)相关的知识,希望对你有一定的参考价值。
推荐系统(八)FNN模型(FM+MLP=FNN)
推荐系统系列博客:
- 推荐系统(一)推荐系统整体概览
- 推荐系统(二)GBDT+LR模型
- 推荐系统(三)Factorization Machines(FM)
- 推荐系统(四)Field-aware Factorization Machines(FFM)
- 推荐系统(五)wide&deep
- 推荐系统(六)Deep & Cross Network(DCN)
- 推荐系统(七)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 优点
- 一般在end-to-end训练DNN(MLP)的embedding层向量时,都是随机初始化的。而FNN把FM训练好的embedding向量用于初始化DNN的embedding向量,相当于在初始化DNN的embedding向量时引入了先验知识,因此能够更好更快的收敛DNN。
2.2 缺点
正如张伟楠老师在PNN那篇论文中所提到的那样,FNN主要有两个比较大的局限性:
- DNN的embedding层质量受限于FM的训练质量。
- 在FM中进行特征交叉时使用的是隐向量点积,把FM预训练得到的embedding向量送入到MLP中的全链接层,MLP的全链接层本质上做的是特征间的线性加权求和,即做的是『add』的操作,这与FM有点不太统一。另外,MLP中忽略了不同的field之间的区别,全部采用线性加权求和。
PNN论文中原话如下:
- the quality of embedding initialization is largely limited by the factorization machine.
- 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)的主要内容,如果未能解决你的问题,请参考以下文章
6.3 tensorflow2实现FNN推荐系统——Python实战