DeepFM从理论上是对Wide&Deep进一步地延伸,它将Wide&Deep的Linear部分替换为FM,使得模型可以自动学习高阶特征交互,而无需进行手动的特征工程,此外因为FM高效的算法结构,DeepFM具有很不错的训练效率。
论文聚焦在了“如何有效地进行特征组合”,算法FM刚好解决了这个问题。手工特征组合需要较多的组合实验测试,且稀疏数据特征组合后,特征空间暴增,导致训练不充分和效率低下。对比LR的手工交互,FM不仅实现组合特征的自动学习,并且训练效率降至线性时间,DeepFM其实是在Wide&Deep框架下的延伸,Wide&Deep + FM = Deep&FM(除此之外,DeepFM还有一个亮点是共享Embedding)
FM算法
FM(Factorization Machine)是工业界最常用的排序模型之一,其拥有优秀的工程效率和线上表现,有较强的特征泛化能力。
特征工程是机器学习的核心基石,特征组合在特征工程里是很常用的手段,FM通过引入隐向量自动、高效地完成该过程,且更进一步。
比如,如果我们在LR的基础上加入穷举的特征组合,公式如下:
该方式有两个缺点
- 工程效率低下,时间复杂度巨高(工业落地不能忍)
- 特征组合不具有泛化能力,对于未出现的组合毫无办法
而FM算法通过引入隐向量的概念可以高效地完成这一特征组合操作,公式变化为:
这个公式的时间复杂度是$kn^2$,比暴力组合的时间复杂还要高,我们需要对该公式进行优化,推导如下:
可以看出系数个数从暴力的$\frac{n(n-1)}{2}$ 个降低为 $kn$个($k$为隐向量维度),其中$k$表示隐向量维度,远小于类别特征数$n$,且适合稀疏数据。
DeepFM原理
DeepFM由两部分组成:FM组件与Deep组件,二者共享同样的输入,输出函数如下:
其中:
整体框架图如下所示:
值的指出的是FM组件和Deep组件是共享同样的特征Embedding,这会带来两点重要的收益:
- 它会同时从原始特征中学习低阶和高阶的特征组合
- 无须像Wide&Deep那样构建专家特征工程
论文还细致比较了DeepFM对FNN、PNN与Wide&Deep的优势,DeepFM是唯一不需要预训练与特征工程,并能够同时捕获低阶和高阶特征组合的模型。
思考
DeepFM将FM嵌入到Wide&Deep的框架下,并共享学习Embedding, 实现高阶组合特征的自动学习,解决了手工特征组合带来的不便,是Wide&Deep进一步的延伸。
在实际落地中,手工组合特征等各式特征工程当然仍然是不可或缺的,但在DeepFM框架下,这些组合特征可以进一步自动学习,向更高阶特征组合。