DeepFM来自哈工大深圳与华为诺亚方舟联合实验室2017年发表的论文。该模型借鉴了Wide & Deep模型的结构,将Wide部分替换为FM模型,不再需要人工特征工程;并很巧妙地在FM的二阶部分和神经网络的Embedding层共享权重,减少了大量参数,提高训练速度。在CTR预估中非常经典。
1. Motivation和简介
DeepFM在一种新的神经网络结构中结合了用于推荐的FM和用于特征学习的深度学习的能力。与谷歌最新的Wide & Deep模型相比,DeepFM在其“Wide”和“Deep”部分有一个共享的输入,除了原始特征之外,不需要进行特征工程。
根据谷歌2016年Wide&Deep模型的研究,同时考虑低阶核高阶的特征交互会比单独考虑的情况带来额外的改进。
除了专人设计的容易理解的特征交叉项,大多数其他特征交互都隐藏在数据中,很难预先识别到,却可以被机器学习自动地捕捉到。即使对于easy-to-understand的特征交叉,在特征数量特别大时也很难靠人工穷举来建模。
尽管朴素,常见的线性模型比如FTRL(2013)表现良好。但是线性模型缺乏对特征交叉的学习。
FM模型将特征之间交叉作用建模为特征间隐向量的内积,并取得了很好的结果。虽然理论上FM可以对高阶特征交叉建模,但实践中通常由于高复杂度,只对二阶特征交叉建模。
深度学习中,基于CNN的模型偏向于对近邻特征的交互作用,而基于RNN的模型更适合对依赖序列的点击数据建模。
PNN和FNN,像其他深层模型一样,对低阶特征交互捕获较少,而这对CTR预测也是必不可少的。
Wide&Deep中wide部分的输入仍然依赖于人工特征工程。
主要工作:
-
我们提出了一个新的神经网络模型DeepFM(图1),它集成了FM和深度神经网络(DNN)的架构。它模拟FM等低阶特征交互作用,模拟DNN等高阶特征交互作用。与Wide&Deep模型不同,DeepFM可以进行端到端的训练,而不需要任何特征工程。
-
DeepFM可以被有效地训练,因为它的Wide部分和Deep部分不同于Wide&Deep,DeepFM共享
同样的输入和Embedding向量。在[Wide&Deep, 2016]中,输入向量可以是巨大的,因为它的Wide部分的输入向量中包含了人工设计的pairwised特征交互,这也大大增加了输入向量的复杂性。 -
我们在基准数据和商业数据上对DeepFM进行了评估,结果显示,与现有的CTR预测模型相比,DeepFM都有一致的改进。
2. DeepFM
CTR预估的任务就是建立 的预估模型来估计用户在给定上下文点击某app的概率。
2.1 DeepFM模型
如图:
DeepFM由两个组件组成,FM组件和deep组件,它们共享相同的输入。对于特征i,使用标量 来衡量其一阶重要性,使用隐向量 来衡量其与其他特征交互的影响。
DeepFM 包含两部分:神经网络部分与FM部分,分别负责低阶特征的提取和高阶特征的提取。这两部分共享同样的输入。
DeepFM 的预测结果可以写为:
\hat{y}=sigmoid(y_{FM}+y_{DNN}) \qquad (1)
是(0,1)之间的CTR预估值。
FM组件
FM部分是一个Factorization Machine[2010],不但可以建模一阶交互特征,通过对二阶特征交叉建模为各个特征的隐向量的内积,FM还可以有效地捕捉二阶特征。在之前的方法中,特征i和特征j的交互只有在它们同时出现在数据记录中(one hot后都不为0)时,才能得到训练。得益于FM灵活的设计,它只需要特征i或j出现在数据记录里,就可以训练隐向量 或 。因此,如果特征交互作用极少出现在训练数据中,用FM训练学习更好。
如图2所示,FM输出的是一个加法单元和一个内积单元的和。
Deep组件
深层部分是前馈神经网络,用于学习高阶特征交互。如图:
具体来说,用于CTR预测的原始特征输入向量通常是高度稀疏、超高维、分类-连续混合和按Field分组的。这就建议使用Embedding层将输入向量压缩为低维密集的实值向量,然后再进一步输入到第一个隐藏层,否则网络会不堪重负而无法训练。
这种结构有两种特性:
- 虽然不同的输入Field向量的长度可以不同,但它们的嵌入大小k是相同的。
- 利用FM中的特征隐向量作为网络权值,将输入Field向量压缩为嵌入向量。
除了其他的DNN模型,我们还将FM模型作为整体学习架构的一部分。因此,我们不需要使用FM进行预训练,而是以端到端方式共同训练整个网络。嵌入层的输出如下表示:
其中
是第 i 个Field的embedding,m是field的个数。
然后,上式a被喂入深度神经网络,前向过程是:
最后,得到
值得指出的是,FM组件和deep组件共享相同的特征embedding,这带来了两个重要的好处:
- 从原始特征中学习到低阶和高阶特征交互;
- 不需要输入的专业特征工程知识,而Wide&Deep是需要的。
2.2 与其他NN的关系
FNN: FNN是一种基于FM初始化的前馈神经网络[Zhang et al., 2016]。FM预训练策略存在两个局限性:
1)FM对embedding参数的影响过大; 2)预训练阶段带来的开销降低了效率。
此外,FNN只捕捉高阶特征交互。相比之下,DeepFM不需要预先训练,而且高阶和低阶特征交互都能学习到。
PNN: 为了捕获高阶特征交互,PNN在嵌入层和第一个隐藏层之间引入了乘积层。根据不同的乘法操作分为IPNN(基于内积),OPNN(外积)和PNN*(内外混合乘积)。
虽然内积更可靠,但由于乘积层的输出连接到第一个隐层的所有神经元,因此计算复杂度较高。与PNN不同的是,DeepFM中乘积层的输出只连接到最终的输出层(一个神经元)。与FNN一样,所有的PNNs都忽略了低阶特征交互作用。
Wide&Deep: 在“Wide”部分的输入上需要专业的特性工程(例如,在app推荐中,用户安装的app和曝光的app交叉乘积 )。相比之下,DeepFM不需要这样的专业知识来处理输入,直接从输入的原始特征中学习。
对这个模型的一个简单扩展是用FM替换LR。这个扩展类似于DeepFM,但是DeepFM共享了在FM和deep组件之间的特征Embedding。特征Embedding共享策略通过低阶和高阶特征交互(反向传播)影响特征表示,使特征表示模型更精确。
小结
DeepFM是唯一一个不需要预训练和特征工程的模型,可以同时捕获低阶和高阶特征交互。
3. 实验
3.1 实验设置
这里,我们将提出的DeepFM和其他state-of-the-art的模型进行实证比较。评估结果表明,我们提出的DeepFM模型比其他任何state-of-the-art的模型都更有效,其效率可与其他最好的模型相媲美。
实验使用两个数据集:
- Criteo Dataset: 2014-kaggle-displayadvertising-challenge-dataset。它包含45million条用户的点击记录。有13个连续特征和26个类别特征。我们把数据集随机划分为两部分,90%用来训练10%用来预测。
- Company* Dataset. 有十亿条记录,包括app特征(例如id,类别等),用户特征(e.g.下载的app等),和上下文特征(操作时间等)。
3.2 模型比较
比较了9种模型:LR, FM, FNN, PNN(三种), Wide&Deep(两种), DeepFM.
我们对原有的Wide & Deep模型进行了调整,Wide部分由FM代替LR。为了区分Wide、Deep两种变体,我们将其命名为 LR&DNN 和 FM&DNN.
效率比较
在CPU 和 GPU 上分别测试,结果如下:
- FNN预训练使得它less efficient。
- GPU上的IPNN和PNN* 虽然速度比其他模型要快,由于低效的内积运算,它们的计算代价仍然很高;
- 在这两个测试中,DeepFM几乎达到了最有效的效果。
效果比较
如表所示。
3.3 超参数研究
关于激活函数,所有的深度模型中除了IPNN,relu比tanh更适合。可能的原因是relu导致稀疏性。
Dropout
分别设置为1.0, 0.9, 0.8, 0.7, 0.6, 0.5,发现所有的模型在适当设置dropout值(从0.6到0.9)时,都能达到自己的最佳表现。结果表明,在模型中加入合理的随机性可以增强模型的鲁棒性。
每层的神经元数
增加神经元的数量并不总是带来收益。例如,每层神经元数量从400增加到800时,DeepFM表现稳定。更糟糕的是,当我们将神经元数量从400增加到800时,OPNN的表现会更差。这是因为过于复杂的模型容易过拟合。在我们的数据集中,每层200或400个神经元是个不错的选择。
隐藏层的层数 三层最好,多了过拟合。
网络形状
四种形状:constant(200-200-200),递增(100-200-300),递减(300-200-100),菱形(150-300-150)
constant的最好。
5. 结论
- DeepFM outperforms the state-ofthe-art models in terms of AUC and Logloss on both datasets;
- The efficiency of DeepFM is comparable to the most efficient deep model in the state-of-the-art.
DeepFM: A Factorization-Machine based Neural Network for CTR Prediction