浅谈推荐,从FM到深度学习
点击上方蓝字,关注并星标,和我一起学技术。
大家好,上一篇文章当中我们介绍了Embedding对于推荐系统模型的作用,介绍了FFM和AFM的基本原理。今天我们继续来介绍FM,介绍一下FM之后的几个重要的迭代版本,以及它的发展方向。
FNN
首先我们来介绍一下FNN,FNN的全称是Factorisation-machi supported Neural Network,即FM支撑的神经网络。其实这个名字当中信息量很大,我们来做个简单的词法分析,这个短语的主语是神经网络,FM支撑的是一个修饰的定语。也就是说这个模型的本质是神经网络,FM只是这个神经网络的一个特性。
而如果回顾一下FFM以及AFM,你会发现这两个模型的主体还是FM,神经网络是FM的修饰。这里的一个潜在的主语的变化其实是有隐藏信息的,隐藏信息就是学界对于模型的认知正在逐渐变化,正从FM为主体悄然转化成神经网络为主体。这个悄然的变化说明了一个关键信息,以后推荐系统的相关模型,神经网络才是大头。
了解完了这个潜在台词之后,我们再来看看FNN的网络结构。其实FNN的网络结构非常简单,就是FM与神经网络的一个串联。通过FM部分将特征转化成Embedding,之后全部拼接到一起之后,放入MLP(多层感知机)当中做训练。大家参考一下下图很容易就能搞明白。
PNN
PNN和FNN类似它唯一的区别就是MLP的输入不仅仅是特征的Embedding,还加上了Embedding product的结果。
它的模型结构是这样的:
我们关注一下中间的Product Layer,这一层分成了左右两个部分,左边的部分就是特征Embedding,右边的部分是Embedding的两两product的结果,也就是特征之间两两内积的结果。而向量之间product的操作也有好几种,既可以内积也可以外积。但不管是内积还是外积都有一个问题,就是它的数量太多了。对于N维特征的模型来说,它的两两交叉一共有种,这是一个非常庞大的数字。
DeepFM
下一个登场的是DeepFM,关于这个模型我们之前对它的论文写过详细的分析解读,如果感兴趣想要了解更多细节的同学可以点击一下下方的传送门。
DeepFM和FNN非常接近,唯一的不同点是FNN的FM部分和MLP是串联,而在DeepFM当中则改成了并联。
大家对照一下下图,就可以发现FM模块输出的Embedding除了直接进入MLP之外,也会在FM层进行FM的两两交叉操作,之后会和MLP的结果一起作为最后一层的输入。
总结
在这个三个模型当中,前两个基本上都是摆设,真正效果比较不错,在工业界得到广泛使用的还是第三个。因为它既保留了FM原汁原味的两两特征交叉项,也容纳了多层神经网络强大的泛化拟合能力,因此它在FM的基础上得到了进一步的极大提升。
除了模型效果之外,还有一点非常有意思,就是以现在的眼光来看,FNN和PNN其实和FM没有半毛钱关系。因为他们所谓的FM支撑的部分不过是用来进行了Embedding而已,也就是把单个的特征转化成了向量的形式。这个在如今的推荐领域已经成了常规操作、家常便饭,但是在当时还是会被视为是FM的特性,这其实是很鲜明的时代特征。这里也能看得出一个转变,我们推荐领域的模型正在逐渐摆脱FM的束缚,全面迎接神经网络。
那么在摆脱FM迎接神经网络的过程当中又有哪些精彩的模型呢?同样,我先卖个关子,让我们下期揭晓。
好了,今天的文章就到这里,感谢阅读,如果喜欢的话不要忘了三连。