深度学习推荐模型-DeepFM

深度学习推荐模型-DeepFM

本文参考链接,仅供个人学习:

https://github.com/datawhalechina/team-learning-rs/tree/master/DeepRecommendationModel

https://blog.csdn.net/john_xyz/article/details/78933253

相关学习书籍推荐:《深度学习推荐系统》王喆

在DeepFM提出之前,已有LR,FM,FFM,FNN,PNN(以及三种变体:IPNN,OPNN,PNN*),Wide&Deep模型,这些模型在CTR或者是推荐系统中被广泛使用。

DeepFM模型结合了广度和深度模型的有点,联合训练FM模型和DNN模型,来同时学习低阶特征组合和高阶特征组合。此外,DeepFM模型的Deep component和FM component从Embedding层共享数据输入,这样做的好处是Embedding层的隐式向量在(残差反向传播)训练时可以同时接受到Deep component和FM component的信息,从而使Embedding层的信息表达更加准确而最终提升推荐效果。DeepFM相对于现有的广度模型、深度模型以及Wide&Deep; DeepFM模型的优势在于:

DeepFM模型同时对低阶特征组合和高阶特征组合建模,从而能够学习到各阶特征之间的组合关系。

DeepFM算法原理:

  1. FM Component + Deep Component。FM提取低阶组合特征,Deep提取高阶组合特征。但是和Wide&Deep不同的是,DeepFM是端到端的训练,不需要人工特征工程。

  2. 共享feature embedding。FM和Deep共享输入和feature embedding不但使得训练更快,而且使得训练更加准确。相比之下,Wide&Deep中,input vector非常大,里面包含了大量的人工设计的pairwise组合特征,增加了他的计算复杂度。

DeepFM架构图:
图片

DeepFM包含两部分,左边的FM部分和右边的DNN部分。这两部分共享相同的输入。

1.FM

详细内容参考FM模型部分的内容,下图是FM的一个结构图,从图中大致可以看出FM Layer是由一阶特征和二阶特征Concatenate到一起在经过一个Sigmoid得到logits(结合FM的公式一起看),所以在实现的时候需要单独考虑linear部分和FM交叉特征部分。

image-20210225181340313

2.Deep

image-20210225181010107

Deep Module是为了学习高阶的特征组合,在上图中使用用全连接的方式将Dense Embedding输入到Hidden Layer,这里面Dense Embeddings就是为了解决DNN中的参数爆炸问题,这也是推荐模型中常用的处理方法。

DeepFM模型对比

目前在推荐领域中比较流行的深度模型有FNN、PNN、Wide&Deep。

  • FNN模型是用FM模型来对Embedding层进行初始化的全连接神经网络。
  • PNN模型则是在Embedding层和全连接层之间引入了内积/外积层,来学习特征之间的交互关系。
  • Wide&Deep模型由谷歌提出,将LR和DNN联合训练,在Google Play取得了线上效果的提升。Wide&Deep模型,很大程度上满足了模型同时学习低阶特征和高阶特征的需求,让模型同时具备较好的“memorization”和“generalization”。但是需要人工特征工程来为Wide模型选取输入特征。具体而言,对哪些稀疏的特征进行embedding,是由人工指定的。

DeepFM的三大优势:

  • 相对于Wide&Deep不再需要手工构建wide部分;
  • 相对于FNN把FM的隐向量参数直接作为网络参数学习;
  • DeepFM将embedding层结果输入给FM和MLP,两者输出叠加,达到捕捉了低阶和高阶特征交叉的目的。

猜你喜欢

转载自blog.csdn.net/qq_36816848/article/details/115047753