推荐系统笔记7-DeepFM: An End-to-End Wide & Deep Learning Framework for CTR Prediction

本文介绍DeepFM: An End-to-End Wide & Deep Learning Framework for CTR Prediction,原文Paper链接;

具体的代码实现见Github

摘要

对于CTR问题,学习特征交互是至关重要的问题,文中提出DeepFM(DNN+FM);

一、介绍

关于特征交互的作用,文中给出了一个例子:1、如人们经常在要吃饭的时候下载关于food的APP,所以APP和时间戳的二阶交互可以是一个很重要的预测信号;2、青少年男生更喜欢玩射击类游戏,所以可以引入三阶特征交互(APP类型+用户性别+用户年龄);但是这些都是很复杂的,同时考虑低阶和高阶特征交互,是要优于只用两个中的一个的;
虽然专家可以引入很好的特征交互,但是也存在问题,比如啤酒和尿布的故事,它们的关系被发现是通过大量的数据挖掘出来的,是由ML自动发现的;一系列对于CTR的研究开展:FTRL、FM、CNN/RNN、FNN、PNN、Wide&Deep等等;可以看出这些模型要么偏向低阶,要么偏向高阶特征组合,要么依赖特征工程;所以,文中的DeepFM自动学习高低阶,且是端到端的学习;

二、 方法

假设输入数据是 ( X , y ) (X,y) (X,y) X X X是m个field的数据,y是{0,1}变量,且 X X X由类别变量和连续变量组成,类别变量One-hot处理;

2.1、 DeepFM

DeepFM的网络架构如下图所示:
推荐系统笔记7-DeepFM: An End-to-End Wide & Deep Learning Framework for CTR Prediction_第1张图片
DeepFM由两部分组成:FM+Deep,他们共享相同的输入,其整个模型定义为: y ^ ( x ) = s i g m o i d ( y F M ( x ) + y D e e p ( x ) ) \hat y(x) = sigmoid({y_{FM}}(x) + {y_{Deep}}(x)) y^(x)=sigmoid(yFM(x)+yDeep(x))如上图所示,展现了两种Deep结构,分别是基于PNN的DeepFM-P和基于DNN的DeepFM-D

1) FM Component of DeepFM

其典型结构如下图所示:
推荐系统笔记7-DeepFM: An End-to-End Wide & Deep Learning Framework for CTR Prediction_第2张图片
FM就是使用隐层向量来更好的表示特征交互,由加法单元和内积单元来表示,如下式所示: y F M ( x ) = < w , x > + ∑ i = 1 d ∑ j = i + 1 d < V i , V j > x i x j {y_{FM}}(x) = < w,x > + \sum\limits_{i = 1}^d {\sum\limits_{j = i + 1}^d { < {V_i},{V_j} > {x_i}{x_j}} } yFM(x)=<w,x>+i=1dj=i+1d<Vi,Vj>xixj其中,加法单元反映了一阶特征,内积单元反映了二阶特征交互;

2) Deep Component of DeepFM

对于Deep层的输入,需要先将输入数据做embedding处理,防止过拟合训练数据,其结构如下:
推荐系统笔记7-DeepFM: An End-to-End Wide & Deep Learning Framework for CTR Prediction_第3张图片
我们从最上面的DeepFM框架图可以看出,Deep部分和FM部分共享同样的Embedding层(对于FNN来说,用FM预训练Embedding层,然后加上NN层,而这里的DeepFM是FM和NN属于同一个网络中),有如下好处:1、不仅学习低阶特征,也学习了高阶特征交互;2、不需要专业的特征工程(Wide&Deep中需要);一般的Deep部分结构图如下:
推荐系统笔记7-DeepFM: An End-to-End Wide & Deep Learning Framework for CTR Prediction_第4张图片

3) Deep Component of DeepFM-D Model

其结构如上图4所示,由全连接神经网络构成,一般层的传播公式为: a ( l + 1 ) = σ ( W ( l ) a ( l ) + b ( l ) ) a^{(l+1)}=\sigma(W^{(l)}a^{(l)}+b^{(l)}) a(l+1)=σ(W(l)a(l)+b(l)),经过几个隐层以后,其输出向量为: y D N N ( x ) = W ∣ H ∣ + 1 ⋅ a ∣ H ∣ + b ∣ H ∣ + 1 {y_{DNN}}(x) = {W^{\left| H \right| + 1}} \cdot {a^{\left| H \right|}} + {b^{\left| H \right| + 1}} yDNN(x)=WH+1aH+bH+1

4) Deep Component of DeepFM-P Model

这个模型是基于PNN的深度部分,包括IPNN、OPNN、PNN等;其典型结构如下中间部分所示:
推荐系统笔记7-DeepFM: An End-to-End Wide & Deep Learning Framework for CTR Prediction_第5张图片
具体的结构介绍可参考之前的一篇文章;因为FM容易过拟合,所以DeepFM在FM层引入L2正则化,Deep层引入Dropout;
DeepFM在数据读取方面采取异步读取,对于加载数据,一般有两种方式:sequential and
parallel,
如下图所示:
推荐系统笔记7-DeepFM: An End-to-End Wide & Deep Learning Framework for CTR Prediction_第6张图片
S e q u e n t i a l Sequential Sequential方法是一种串行方法,即加载好mini-batch数据,然后才开始训练模型,下一个Mini-batch的数据只有在这轮数据训练完以后才会读取,显而易见这种方式效率不高;所以文中提出一种并行读取的方式:即asynchronous data reading,用一个线程来读取数据而不管模型更新;

三、 EXPERIMENTS

Criteo Data set和Company Data set离线比较性能AUC和Logloss(或者说Cross Entropy)),其各种不同模型所用的超参数如下表所示:
推荐系统笔记7-DeepFM: An End-to-End Wide & Deep Learning Framework for CTR Prediction_第7张图片
分别是激活函数、dropout和隐藏层;DeepFM和FM的Embedding维度是10,不同模型的性能对比如下:
推荐系统笔记7-DeepFM: An End-to-End Wide & Deep Learning Framework for CTR Prediction_第8张图片
可以看出都是DeepFM家族占据上风;

你可能感兴趣的:(机器学习,推荐系统)