其他分享
首页 > 其他分享> > 《xDeepFM:名副其实的 ”Deep” Factorization Machine》

《xDeepFM:名副其实的 ”Deep” Factorization Machine》

作者:互联网

xDeepFM:名副其实的 ”Deep” Factorization Machine

  刺猬 All things happen for the best 鱼遇雨欲语与余谢玉强dragonfly老昶信 等 

今天介绍 中科大、北大 与 微软 合作发表在 KDD’18 的文章《xDeepFM: Combining Explicit and Implicit Feature Interactions for Recommender Systems》。Paper写得很流畅,还清晰梳理了FNN / PNN / Wide&Deep / DeepFM / DCN等CTR预估典型NN结构,阅读体验很棒。

xDeepFM开源代码: https://github.com/Leavingseason/xDeepFM

一、Motivation

一看paper名字,很容易联想到华为在 IJCAI’2017 提出的模型DeepFM,但论“血缘关系”,xDeepFM 的一级近亲首先是 Deep & Cross Network。之前的专栏文章介绍过这两个模型:

  1. DeepFM: 速览 DeepFM: 使用 FM 取代 Wide & Deep 中的 LR
  2. DCN:揭秘 Deep & Cross : 如何自动构造高阶交叉特征

DeepFM的思想比较直观,从专栏文章名你已经知道它是怎么做的了,另外一个细节就是模型中FM与Deep共享Embedding。DCN的设计非常巧妙,引入Cross层取代 Wide & Deep 的Wide层,Cross层的独特结构使其可以显示、自动地构造有限高阶的特征叉乘。不理解 DCN的精髓,就没法很好地理解 xDeepFM,这里就不重复搬砖了,强烈建议不熟悉DCN的读者先先阅读上面列出的DCN解读。

假设你已经知道DCN怎么干的、有哪些优点,我们再来看 xDeepFM 想干啥。DCN 的Cross层接在Embedding层之后,虽然可以显示自动构造高阶特征,但它是以bit-wise的方式。例如,Age Field对应嵌入向量<a1,b1,c1>,Occupation Field对应嵌入向量<a2,b2,c2>,在Cross层,a1,b1,c1,a2,b2,c2会拼接后直接作为输入,即它意识不到Field vector的概念。Cross 以嵌入向量中的单个bit为最细粒度,而FM是以向量为最细粒度学习相关性,即vector-wise。xDeepFM的动机,正是将FM的vector-wise的思想引入Cross部分。

二、Model

xDeepFM的整体结构如图1所示,基本框架依然基于标准的Embedding&MLP,其中Linear、Plain DNN分别类似Wide和Deep部分,而 CIN 部分是我们要讨论的重点。

图1. xDeepFM 网络结构图

CIN:Compressed Interaction Network

如图1所示,CIN层的输入来自Embedding层,假设有 [公式] 个field,每个field的embedding vector维度为 [公式],则输入可表示为矩阵[公式] 。

图2. CIN 结构

CIN 结构如上图所示,咋一看图2可能有点蒙,我们先看一下CIN每层是这么计算的。

[公式] 表示第 [公式] 层的输出,其中[公式] 表示第 [公式] 层的vector个数,vecor维度始终为 [公式] ,保持和输入层一致。具体地,第 [公式] 层每个vector的计算方式为:

[公式] (1)

其中[公式] 表示第 [公式] 层的第 [公式] 个vector的权重矩阵, [公式] 表示Hadamard乘积,即逐元素乘,例如 [公式] 。

看懂了这个计算公式,就理解了图2的CIN结构,我们先看这个公式到底干了什么:

  1. 取前一层[公式] 中的 [公式] 个vector,与输入层 [公式] 中的 [公式] 个vector,进行两两Hadamard乘积运算,得到 [公式] 个 vector,然后加权求和。
  2. 第 [公式] 层的不同vector区别在于,对这[公式] 个 vector 求和的权重矩阵不同。 [公式] 即对应有多少个不同的权重矩阵 [公式] , 是一个可以调整的超参。

为什么这么设计,好处是什么?CIN与DCN中Cross层的设计动机是相似的,Cross层的input也是前一层与输出层。至于为什么这么搞,在之前的DCN解读里已经讲解得很清楚。CIN 保持了DCN的优点:有限高阶、自动叉乘、参数共享。

再来看看CIN与Cross的几个主要差异:

  1. Cross是bit-wise的,而CIN 是vector-wise的;
  2. 在第 [公式] 层,Cross包含从 1 阶 ~ [公式] 阶 的所有组合特征,而CIN只包含 [公式] 阶的组合特征。相应地,Cross在输出层输出全部结果,而CIN在每层都输出中间结果。

造成差异2的原因是,Cross层计算公式中除了与CIN一样包含“上一层与输入层的✖️”外,会再额外“➕输入层”。 这是两种涵盖所有阶特征的不同策略,CIN和Cross其实也可以使用对方的策略,两种方式的优缺点,大家可以发表自己的看法一起交流。

注意图2的CIN结构,可以思考两个问题,这涉及到CIN的另一位亲戚FM:

  1. 每层通过sum pooling对vector的元素加和输出,这么做的意义或合理性?可以设想,如果CIN只有1层, 只有m个vector,即 [公式] ,且加和的权重矩阵恒等于1,即[公式] ,那么sum pooling的输出结果,就是一系列的两两向量内积之和,即标准的FM(不考虑一阶与偏置)。
  2. 除了第1层,中间层的这种基于vector高阶组合有什么物理意义?回顾FM,虽然是二阶的,但可以扩展到多阶,例如考虑三阶FM,是对三个嵌入向量作Hadamard乘再对得到的vector作sum,CIN基于vector-wise的高阶组合再作sum pooling与之是类似的,这也是模型名字 “eXtreme Deep Factorization Machine (xDeepFM) ”的由来。

为啥取名CIN

CIN名字由来与它特定的计算方式有关,不感兴趣的读者可以直接跳过这部分,不影响模型理解。回顾式(1),同层不同vector的区别仅仅在于不同的加和权重矩阵 [公式] ,我们可以提前计算好两两向量间Hadamard乘的结果。

具体的方式如下图所示,首先如图 a 计算中间结果—— tensor [公式] ,然后使用权重矩阵 [公式] 顺着tensor的维度 [公式] ,逐层相乘加和,得到 k+1 层的第 [公式] 个vector,如图 b 所示。如果把 [公式] 看成filter,这和CNN的方式很像。可以看到,最后[公式] 被压缩成了一个矩阵,这是名字中“Compressed”的由来。

 

复杂度分析

假设CIN和DNN每层神经元/向量个数都为 [公式] ,网络深度为 [公式] 。那么CIN的参数空间复杂度为 [公式] ,普通的DNN为 [公式] ,CIN的空间复杂度与输入维度 [公式] 无关,此外,如果有必要,CIN还可以对权重矩阵 [公式] 进行 [公式] 阶矩阵分解从而能降低空间复杂度。

CIN的时间复杂度就不容乐观了,按照上面介绍的计算方式为 [公式] ,而DNN为[公式],时间复杂度会是CIN的一个主要痛点。

三、Experiment

数据集

  1. 公开数据集 Criteo 与 微软数据集 BingNews
  2. DianPing 从大众点评网整理的相关数据,收集6个月的user check-in 餐厅poi的记录,从check-in餐厅周围3km内,按照poi受欢迎度抽取餐厅poi作为负例。根据user属性、poi属性,以及user之前3家check-in的poi,预测用户check-in一家给定poi的概率。

实验设置

  1. 不进行任何人工特征叉乘,通过gird-search on 验证集为每个模型确定最佳超参
  2. 使用Adam,relu,学习率=0.001,mini-batch=4096,嵌入维度= 10
  3. DNN每层200神经元,CIN对Criteo每层200神经元 ,对其他数据集每层100神经元
  4. 对PNN使用0.5的dropout,对其他NN模型,使用 [公式] 的L2正则

实验结果

单个模型模块的实验结果如表1所示,完整模型实验结果如表2所示,都显示了CIN与xDeepFM的有效性,优势明显。

表1. 单个模型部分的实验结果表2. 不同模型的实验结果

文中也探索了层数、神经元(向量)个数(固定层数=3),不同激活函数对CIN的影响。

四、Conclusion

  1. xDeepFM将基于Field的vector-wise思想引入Cross,并且保留了Cross的优势,模型结构也很elegant,实验效果也提升明显。如果说DeepFM只是“Deep & FM”,那么xDeepFm就真正做到了”Deep” Factorization Machine。
  2. xDeepFM的时间复杂度会是其工业落地的一个主要性能瓶颈,需要重点优化
编辑于 2019-07-05 「回到生活原本的模样」 还没有人赞赏,快来当第一个赞赏的人吧! 深度学习(Deep Learning) 推荐系统  

文章被以下专栏收录

咖啡与机器学习 咖啡与机器学习 Beyond the Data Beyond the Data You are smarter than your data.

推荐阅读

揭秘 Deep & Cross : 如何自动构造高阶交叉特征

本文介绍斯坦福与Google联合发表在AdKDD 2017上的论文《Deep &amp; Cross Network for Ad Click Predictions》。这篇论文是Google 对 Wide &amp; Deep工作的一个后续研究,文中提出 Deep &a…

刺猬 CTR论文精读(七)--DeepFM

CTR论文精读(七)--DeepFM

杜博亚 (读论文)推荐系统之ctr预估-XDeepFM模型解析

(读论文)推荐系统之ctr预估-XDeepFM模型解析

Jesse

看Google如何实现Wide & Deep模型(1)

之前在一家公司做个性化新闻推荐,决定尝试一下Wide &amp; Deep模型。当时的TensorFlow还没自带Wide &amp; Deep实现,所以,我用TensorFlow从头到尾实现了一遍。Wide &amp; Deep理论上并不…

石塔西发表于石独数语

39 条评论

写下你的评论...       1 条评论被折叠(为什么?)       <style></style>

标签:xDeepFM,CIN,Factorization,Cross,Machine,vector,回复,Deep,举报
来源: https://www.cnblogs.com/cx2016/p/13506102.html