Introduction

对于一个基于CTR预估的推荐系统,最重要的是学习到用户点击行为背后隐含的特征组合。在不同的推荐场景中,低阶组合特征或者高阶组合特征可能都会对最终的CTR产生影响。

Wide & Deep Learning通过组合使用cross-product transformation特征的线性模型和DNN模型进行Joint train从而实现memorization和generalization的结合。但是对于Wide模型来说还是需要做一些特征交叉来实现memorization,而因子分解机(Factorization Machines, FM)通过对于每一维特征的隐变量内积来提取特征组合,最终的结果也非常好。虽然理论上来讲FM可以对高阶特征组合进行建模,但实际上因为计算复杂度的原因一般都只用到了二阶特征组合。

关于Wide & Deep Learning请参考我的博文:Wide & Deep Learning模型介绍.

那么对于高阶的特征组合来说,我们很自然的想法,通过多层的神经网络即DNN去解决。

对于离散特征的处理,我们使用的是将特征转换成为one-hot的形式,但是将One-hot类型的特征输入到DNN中,会导致网络参数太多难以训练:

DeepFM模型介绍及应用

此时可以借鉴word2vec的思路,进行embedding。将Onehot编码后的向量经过一个embedding层输出Dense Vector。具体的思路就是,将一个特征Onehot编码后会生成多个特征,但是每个特征里面只有一个为1,其他都为0,这些由一个特征生成的多个互斥的特征引用FFM的思想的话就属于一个Field。

DeepFM模型介绍及应用

如果将embedding层的输出再加两层的全连接层,让Dense Vector进行组合,那么高阶特征的组合就出来了。

DeepFM模型介绍及应用

但是低阶和高阶特征组合隐含地体现在隐藏层中,如果我们希望把低阶特征组合单独建模,然后融合高阶特征组合。

DeepFM模型介绍及应用

也就是我们需要学习低阶的特征组合,也需要学习高阶的特征组合。即将DNN与FM进行一个合理的融合:

DeepFM模型介绍及应用

二者的融合总的来说有两种形式,一是串行结构,二是并行结构

DeepFM模型介绍及应用

DeepFM模型介绍及应用

而DeepFM,就是并行结构中的一种典型代表。

DeepFm模型

模型结构

DeepFM模型介绍及应用

DeepFM包含两部分:神经网络部分与因子分解机部分,分别负责低阶特征的提取和高阶特征的提取。这两部分共享同样的输入。DeepFM的预测结果可以写为:

(1)y^=sigmoid(yFM+yDNN)

FM Component

DeepFM模型介绍及应用

FM部分是一个因子分解机。关于因子分解机可以参阅文章[Rendle, 2010] Steffen Rendle. Factorization machines. In ICDM, 2010.。因为引入了隐变量的原因,对于几乎不出现或者很少出现的隐变量,FM也可以很好的学习。

FM的输出公式为:

(2)y(x)=w0+i=1n(wixi)+i=1n1j=i+1n(<vi,vj>xixj)

(3)y(x)=w0+i=1n(wixi)+i=1n1j=i+1n(<vi,vj>xixj)

Deep Component

DeepFM模型介绍及应用

深度部分是一个前馈神经网络。与图像或者语音这类输入不同,图像语音的输入一般是连续而且密集的,然而用于CTR的输入一般是及其稀疏的。因此需要重新设计网络结构。具体实现中为,在第一层隐含层之前,引入一个嵌入层来完成将输入向量压缩到低维稠密向量。

DeepFM模型介绍及应用

嵌入层(embedding layer)的结构如上图所示。

对于Fig.4这个网络结构有两个很有意思的point:

1)虽然输入的field vector长度不一,但是它们embedding出来的长度是固定的;

2)FM的latent vector V向量作为原始特征到embedding vector的权重矩阵,放在网络里学习。

这里的第二点如何理解呢,假设我们的k=5,首先,对于输入的一条记录,同一个Field 只有一个位置是1,那么在由输入得到dense vector的过程中,输入层只有一个神经元起作用,得到的dense vector其实就是输入层到embedding层该神经元相连的五条线的权重,即vi1vi2vi3vi4vi5。这五个值组合起来就是我们在FM中所提到的vi。在FM部分和DNN部分,这一块是共享权重的,对同一个特征来说,得到的Vi是相同的。

本文较多参考博文:推荐系统遇上深度学习(三)–DeepFM模型理论和实践

相关文章: