DeepFM论文阅读

817 阅读1分钟

DeepFM与其他相关模型的差异

  1. FNN 依赖预训练的FM层
  2. PNN 把FM结果输出到DNN中,没有以Wide&Deep的方法合并起来
  3. Wide&Deep没有用FM,手动设计特征,费时费力

DeepFM重点介绍

FM层公式

主要思想:引入二阶交叉特征提升效果

背景:SVM引入核函数,为每个特征组合分配一个权重wijw_{ij}来学习。 公式:

y=<W,X>+i=0nj=0nwijxixjy = <W,X> + \sum_{i=0}^n \sum_{j=0}^nw_{ij}xi · xj

显然wijw_{ij}量级为n2n^2

因此,将其用矩阵分解的思想解耦,为每一个特征分配一个M维的隐向量V,计算<ViVj><Vi,Vj>拟合权重。 实际场景中m<<n,因此达到降低计算量的目的。

公式

y=<W,X>+i=0nj=0n<ViVj>xixjy = <W,X> + \sum_{i=0}^n \sum_{j=0}^n <Vi,Vj>xi · xj

FM的公式可以优化,时间复杂度从o(n^2)优化为o(N)

image.png

核心是第二到第三步,

  1. 将点积操作展开,一个乘法结合律,很好理解 (vif1vjf1+vif2vjf2)xixj==vif1xivjf1xj+vif2xivjf2xj(v_{if1}v_{jf1} + v_{if2}v_{jf2})x_ix_j == v_{if1}x_iv_{jf1}x_j + v_{if2}x_iv_{jf2}x_j
  2. 我们就可以先考虑隐向量的一个point,再求和。 针对这个point,不同向量间(ab+aa+bb +ba) == (a+b)(a+b)。 所有可以从2变成3.

用一个图来理解:

image.png

共享Embdding

DeepFM中,DNN和FM层共享Embdding的权重。因此不需要额外初始化预训练。

实现细节

具体实现时,所有离散特征要按类别拆分为多个特征,例如,性别有男女两个类别,要拆分为性别男及性别女两个类别。并他们的值都设为1。(why?)