xDeepFM 是MSRA发表在KDD 2018上的一篇文章,用于CTR预估。
前面已经介绍过Deep FM和Deep & Cross Networks两种模型,xDeepFM可以看成结合了这两种模型的优点。DNN模型以bit-wise的形式把特征进行交叉,而FM则以vector-wise的形式进行特征交叉。Deep&Cross交叉的每一层和起始输入X0其实都是一个线性关系,而且交叉也是以bit-wise的形式,并不能有效发现高阶组合特征。结合Deep FM和Deep&Cross的各自优点,提出xDeepFM这种结构。
上图是xDeepFM的网络结构,类似Deep FM和Deep&Cross,xDeepFM有linear单元,一个DNN,再加一个CIN(Compressed Interaction Network)组合而成,linear和DNN结构与DeepFM和Deep&Cross一致,接下来简单介绍下CIN。
上图是CIN的结构,理解DeepFM和Deep&Cross之后,这部分也很容易理解,初始输入shape为(batch_size, field_num, dim) , field_num为field的个数(多少个feature),dim为每个特征的维度,因为是类FM结构,所以每个特征的维度都必须是一样的。由上图(a),把输入根据最后一维进行split,形状变为(dim, batch_size, field_num ,1 ), 然后两个tensor再类似Deep&Cross那样相乘,再做一个conv1d的一维卷积,指定输出的维度(由cross_layer指定),最后把cross_layer的每一层结果做一个concat,作为最后CIN的输出。详细的过程可以具体看相应的paper。
xDeepFM模型的tensorflow代码实现可以参考:https://github.com/qiaoguan/deep-ctr-prediction/tree/master/XDeepFM
参考文献:Jianxun Lian et all. “xDeepFM: Combining Explicit and Implicit Feature Interactions for Recommender Systems,” In KDD,2018.