Deep FM笔记
DeepFM学习笔记
引子
DeepFM是经过工业界验证的比较认可的用于解决CTR(广告点击)预测的深度学习模型之一。
什么是广告预测问题?以淘宝网举例,在淘宝主页以及我们搜索结果页面中,都有作为广告出现的商品推荐窗,如果这个窗口推荐的物品正好用户感兴趣,那么用户就会点进去看看啦,这样这个商品的商家就要付钱给淘宝网站,因为这个点击进来的用户是通过淘宝推荐来的,这样淘宝就可以通过推荐广告赚钱啦。问题就是,淘宝要怎么在大量的商品中选出几个放到有限的展示窗口中呢?当然是最可能被点击的那些商品广告啦,怎么预测商品被点击的可能性?本文提到的Deep FM就是解决这个预测问题的方案之一。
概述
将CTR预测问题转化成一个有监督机器学习问题,首先要把训练样本(用户的点击、没有点击行为)划分为“特征”和“标注”。
特征包括用户的注册信息,比如年龄,性别等,以及用户的购买行为,比如买了一堆GPU的可能是个技术宅or 游戏宅等等;以及商品本身的特征信息,比如商品的介绍,分类、价格等等。
标注就是0、1分别代表当前的用户没有点击或者有点击这个商品的广告。
这个CTR问题有个特性,相比于图像识别问题或者语音识别问题,CTR的特征往往是高维而且稀疏的,比如我们把男、女这个类别特征通过1-hot 编码成为01 和 10 两个向量,这样一个特征就变成了2维,同样的道理,其他的类类别特征如果通过1-hot编码也会大大增加特征的维度。对于连续的特征,我们可能会通过分桶,也把它们转化成了高维的特征。
在很多情况下,我们用这些特征判断用户的点击行为可能需要综合多个特征来进行,比如年龄在18-30岁的女生比较关注颜色比较时髦的唇膏商品,这个判断就用了年龄和性别两个特征来综合决策最终的label。那么有很多前人提出了多种多样的模型来解决这个特征交叉的问题。比如FM(Factorization Machines)就提出了先学一个特征的embedding(就是用一个低维的向量来表示高维稀疏的特征向量),然后通过不同特征组的embedding的乘积来实现这个“特征交叉“的操作。可惜的是,由于排列组合的数量几乎是指数上升的,考虑到模型的复杂度,实际应用中往往只能学习低阶的特征交叉,也就是FM只能学习到利用了2~3个特征的判别用户点击行为的模式。当我们需要判断一个用了用户年龄、性别、职业、收入、月度购买量等等比较多的特征的用户行为模式的时候怎么办呢?有人提出可以用DNN(深度神经网络)来解决这个问题,用深层的神经网络来模拟高维的用户特征融合模式。但是问题是,我们如果同时需要判断高维和低维的特征模式,这个时候怎么办呢?本文介绍的Deep FM就派上用场了。
方法
如图一所示,整个Deep FM的架构分为左右两个层次,左边是FM,右边是Deep。。哈哈估计名字就是这么来的。样本的特征由下至上输入,最下一层是上面提到过的高维稀疏特征。
由于输入的高维稀疏特征向量是由更低维的特征向量(比如用户性别的1-hot编码向量,用户年龄的分桶离散化的向量等)组合而成的,在第一层分别将这些向量编码成同样长度的embedding,这样更方便表示每个低维向量组的信息,方便后续计算。入图2所示。
在Deep FM的架构的左边FM中,这一层经过embedding编码的特征向量经过了FM的乘积层获得了低维的特征交叉组合,然后通过一个输出层输出。
图中y代表FM层输出,<w,x>代表权重w和原始feature层向量x的內积,Vi表示原始特征向量x中第i个低维特征向量的embedding表示。
图3代表Deep FM架构中的DNN部分。由于和FM共用了第一层特征的embedding向量层,这样在反向传播算法的训练过程中,这个浅层特征embedding可以受到高维特征交叉和低维特征交叉的影响学的更好些(论文原话)。
这个DNN的层数根据原始论文中的实验大概取3~5层,更多的层数会导致过拟合。
总结
这个Deep FM模型有几个特点:
1. 它不需要预训练,可以直接端到端的训练
2. 它结合了深层和浅层的特征交叉信息
3. 通过共享embedding它省去了特征工程的工作,更方便使用。
Deep FM的工作据说击败了当时的state of the art,但是目前又有很多新的paper出现,比如阿里的DIN等,我们下次再说~
参考文献:
1. DeepFM:A Factorization-Machine based Neural Network for CTR Prediction