DeepFM模型 学习笔记

作者:jliang

https://blog.csdn.net/jliang3

 

 

1.重点归纳

1)CTR预估重点在于学习组合特征,包括二阶、三阶甚至更高阶,阶数越高越难学习。Google的论文研究结论:高阶和低阶的组合特征都非常重要,同时学习到这两种组合特征的性能比只考虑其中一种性能要好。

2)模型演进历史

(1)线性模型:LR、FTRL

无法提取高阶的组合特征,依赖人工的组合特征,表达能力有限。

(2)FM模型:通过隐向量latent vector做内积来表达组合特征,从理论上解决了低阶和高阶组合特定的提取问题。受限于计算复杂度,一般只考虑到2阶交叉特征。

(3)FFM模型:FM的升级版模型,通过引入field的概念,FFM把相同性质的特征归于同一个field。

(4)FNN:用FM模型来对Embedding层进行初始化的全连接神经网络(先预先训练好FM,得到隐向量,然后作为DNN的输入训练模型)。只能学习到高阶的组合特征,没有对低阶特征建模。

(5)PNN:为了捕获高阶组合特征,在embedding layer 和first hidden layer之间增加一个product layer(内积/外积层)来学习特征之间的交互关系。没有对于1阶和2阶特征进行建模。

(6)Wide&Deep:混合了一个线性模型(LR, Wide part)和Deep模型(DNN, Deep part),这两部分模型需要不同的输入。wide part输入依赖人工特征工程。

(7)DeepFM:结合了广度和深度模型的优点,联合训练FM模型和DNN模型,同时学习低阶特征组合和高阶特征组合。

3)DeepFM优势

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

2.CTR预估

1) CTR数据特点

  • 维度非常高
  • 数据非常稀疏
  • 特征按照Field分组

2)CTR预估重点在于学习组合特征,包括二阶、三阶甚至更高阶,阶数越高越难学习。Google的论文研究结论:高阶和低阶的组合特征都非常重要,同时学习到这两种组合特征的性能比只考虑其中一种性能要好。

3)模型演进历史

(1)线性模型

  • LR、FTRL等模型
  • 缺点:无法提取高阶的组合特征,依赖人工的组合特征,表达能力有限

(2)FM模型

  • 通过隐向量latent vector做内积来表达组合特征,从理论上解决了低阶和高阶组合特定的提取问题
  • 受限于计算复杂度,一般只考虑到2阶交叉特征

(3)FFM模型:FM的升级版模型,通过引入field的概念,FFM把相同性质的特征归于同一个field。

(4)深度学习

  • FNN
    • 用FM模型来对Embedding层进行初始化的全连接神经网络(先预先训练好FM,得到隐向量,然后作为DNN的输入训练模型)
    • 缺点
      • 受限于FM预训练的效果
      • 只能学习到高阶的组合特征,没有对低阶特征建模。
  • PNN
    • 为了捕获高阶组合特征,在embedding layer 和first hidden layer之间增加一个product layer(内积/外积层)来学习特征之间的交互关系。
    • 缺点
      • 内积外积计算复杂度高,采用近似计算的方法外积没有内积稳定
      • 和FNN一样,只能学习到高阶的特征组合,没有对于1阶和2阶特征进行建模
  • Wide&Deep
    • 混合了一个线性模型(LR, Wide part)和Deep模型(DNN, Deep part),这两部分模型需要不同的输入。
    • 很大程度满足了模型同时学习低阶特征和高阶特征的需求
    • Wide part需要领域知识进行特征工程,wide part输入依赖人工特征工程
  • 这些模型偏向于提取低阶或者高阶的组合特征,不能同时提取这两种类型的特征。

3.DeepFM

1)DeepFM模型

(1)DeepFM结合了广度和深度模型的优点,联合训练FM模型和DNN模型,同时学习低阶特征组合和高阶特征组合。

(2)DeepFM模型的Deep component和FM component从Embedding层共享数据输入。

         Embedding层的隐式向量在(残差反向传播)训练时可以同时接受到Deep component和FM component的信息,使Embedding层的信息表达更加准确而最终提升推荐效果。

(3)相对Wide&Deep的优势

  • DeepFM同时对低阶特征组合和高阶特征组合建模,从而能够学习到各阶特征之间的组合关系
  • DeepFM是一个端到端的模型,不需要任何人工特征工程

(4)两面性

  • 有些特征不适合进行特征交叉,如position bias就不适合进行特征交叉,应该将其直接放到最后一个隐层才更有意义
  • 在使用DeepFM时,要注意结合业务场景,将特殊的特征排除在FM的作用域之外

2)数学原理

(1)模型概览

 

(2)数学原理

  1. 对于给定特征i, wi用于表示一阶特征的重要性,这部分只直接输入到FM
  2. 特征i的隐向量vi用于衡量和其他特征的相互影响
  3. 在FM部分,vi用于表示二阶特征
  4. 在神经网络部分vi用于构建高阶特征
  5. 对于当前模型,和wide&deep一样,所有的参数共同参与训练
  6. 不需要预训练,可以直接将稀疏数据输入模型

(3)embedding layer(上图中的dense embeddings)

  • 原始输入的数据是很多歌字段的高维稀疏数据,因此引入embedding layer将输入向量压缩到低维稠密向量
  • 输入数据的每个字段(field)的特征(每个字段onehot后都是包含多个特征)经过embedding之后都变成k维,所以embedding后的特征数=count(field)*k
  • FM得到的隐变量V作为潜入层网络的权重,FM模型作为整个模型的一部分与其他深度学习模型一起参与整体的学习
  • FM部分与深度学习部分共享embedding的好处
    • 从原始数据中同时学习了低维与高维特征
    • 不再需要特征工程

(4)Field和Feature

  • 每个Field是一个原始特征,Field经过onehot编码后产生多个特征,输出的每个特征就是feature
  • 同一个Field中所有Feature中只有一个为1,其它为0
  • 不同的Field经过onehot后的Feature数不一样,但经过embedding后都是一样长

(5)DeepFM优势

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

(6)DNN的一些推荐设置

  • 对于hidden layer使用三层200-200-200的结构设计
  • 使用relu函数作为激活函数
  • 增加dropout

(7)评估模型时用到了一个新的指标“Gini Normalization”

 

猜你喜欢

转载自blog.csdn.net/jliang3/article/details/85246382