0. 写在前面
前面我们介绍了FM模型的实现要点,也提到了其在推荐领域内的影响力。本篇,我们就来说说一种结合神经网络和FM的推荐模型--DeepFM,其他相关思路的模型将在后面的文章中陆续介绍。
个人心得:
结合MLP的高阶特征组合能力及FM的低阶特征交叉能力
FM模型的DNN架构表示
模型的并行结构设计
论文地址:
https://arxiv.org/pdf/1703.04247.pdf
论文代码:
https://github.com/ChenglongChen/tensorflow-DeepFM
1.背景
FM模型已经被证明在业界推荐场景中具有显著效果。在深度学习神经网络如火如荼的当下,有没有一种方法能够巧妙结合起FM模型处理低阶特征交叉的能力及DNN模型高阶特征组合的特点,同时发挥两者在推荐场景下的优势呢?答案是肯定的,哈尔滨工业大学联合华为提出了一种具有并行结构的推荐模型DeepFM,很好的支持了这种特性。下面将从DeepFM模型架构,FM模块及DNN模块三部分来介绍整体模型设计。
2. 模型架构
DeepFM的模型结构如图所示。
整个模型分为两部分,FM-part和DNN-part。FM部分利用神经网络实现了传统FM模型的表示形式,Dnn部分则是多层神经网络,最后将两部分的输出进行求和并经softmax得到推荐结果。
3. FM part
FM模块用于在DeepFM中嵌入传统的FM模型。FM神经网络模型如下图所示。
首先看FM模块的输入层与embedding层。FM模块的输入层及embedding层与目前主流的做法没有区别,分为两步操作:
类别特征独热编码,然后接一层embedding
连续特征直接embedding
在embedding层,每个特征域field的embedding维数与传统FM模型中的向量维数k含义相同。经embedding后,输入FM计算层。这里的FM计算层实现的计算方式与传统的FM模型完全一致,如下式所示。一阶特征项将模型输入层的神经元进行加权求和,二阶交叉特征项将embedding层的各个向量进行交叉,此时,每个embedding向量的权重为1。然后,将一阶特征项与二阶特征项进行求和相加,完美实现FM的计算过程。
4. DNN part
DeepFM中DNN部分仍然沿用MLP多层神经网络的实现方式,如下图所示。
DNN模块的输入层及embedding层与FM完全一致,这里就不赘述。DNN模块将embedding层中各个向量进行横向拼接,然后送入多层神经网络,实现特征的高阶组合。最后,将FM模块的输出与DNN模块的输出求和并经softmax层,得到模型的最终输出结果。
5. 总结
DeepFM作为将深度学习应用于推荐场景下的经典模型案例,综合了FM模型与MLP模型的优势,设计FM模块实现了特征的二阶交叉,结合多层神经网络提高模型的特征高阶交叉能力。