DeepFM: A Factorization-Machine based Neural Network for CTR Prediction
目标:CTR预估
文中指出以前的CTR预估模型仅考虑low-order的特征交互或者仅考虑high-order的特征交互,或者需要手工设计特征。文中提出了DeepFM来同时学习low-order和high-order的特征交互,并且不需要手工设计特征。
DeepFM

DeepFM由两部分组成,FM部分和deep部分,它们共享相同的输入。
对于每个特征i,有标量wi来描述它的重要性,有隐向量Vi来描述它和其他特征交互的影响。
把Vi输入到FM部分中来对order-2的特征交互建模,把Vi输入到deep部分中来对high-order的特征交互建模。
所有参数包括wi,Vi以及deep网络中的W(l),b(l)由组合后的模型共同训练(jointly train)。

其中yFM是FM部分的输出,yDNN是deep部分的输出。
FM Component


图中的黑线对应<w,x>,表示特征本身的重要性。Inner Product units反应了order-2特征交互的影响。
Deep Component


对于embedding层,文中强调:
1)不同的input field的向量长度可以是不同的,但它们的embedding长度都是k。
2)FM中的隐向量V用来作为输入层到embedding层的权重。
文中指出了这里FM隐向量V的用法和FNN中是不同的。FNN中先训练一个FM,再把其隐向量放入网络中作为初始化权重。而deepFM中,FM直接就是整个模型的一部分,是和deep部分一起学习得到的。
embedding层的输出记为:

ei表示第i个域的embedding,m是域的数量。
把a(0)输入网络中,做前向传播

最后输入到sigmoid函数中,

值得注意的是FM模块和deep模块共享一个feature embedding,这带来了两个优点:
1)学习到了原始特征的low-order和high-order特征交互。
2)不需要对输入做专门的特征工程。
Relationship with the other Neural Networks
这一部分将DeepFM和其他的一些模型进行比较。
FNN:FNN通过单独训练一个FM模型来做初始化。引入FM预训练的策略带来了两个限制:1)embedding的参数可能被FM过度影响。2)pre-training的引入会影响模型的效率。
并且FNN仅仅捕捉了high-order的特征交互。相比之下,DeepFM不需要预训练,并且同时学习了high-order和low-order的特征交互。
PNN:为了捕捉high-order的特征交互,PNN在embedding layer和第一个hidden layer之间加上了product layer。根据不同的product操作,有IPNN、OPNN和PNN。IPNN基于向量的inner product,OPNN基于outer product,PNN同时基于inner product和outer product。
PNN忽略了low-order的特征交互。
Wide & Deep
Wide&Deep同时考虑了low-order和high-order的特征交互,然而需要做一些特征工程。
总结

网友评论