DeepFM算法详解-推荐算法中的皇冠

2019 年 8 月 14 日 凡人机器学习


今天来讲下DeepFM哈,网上有很多人都解析过,所以重复的观点我就不多说了,重点讲些自己的理解

01
概述

DeepFM是一种推荐领域炙手可热的算法,在非常多大家熟识的互联网公司都有落地场景。对于DeepFM最佳的阐述一定是来自于它的原始的论文。

地址:https://arxiv.org/pdf/1703.04247.pdf


然后再介绍下推荐算法的本源,推荐其实是一个典型的二分类场景。在推荐算法中需要做的事情无非是把一个商品或者广告推送给一个人,然后预测出来这个人喜欢或者不喜欢。这里最难的不是如何实现分类,而是特征的提取。


而特征的提取又分为低阶特征和高阶特征。举个简单的例子什么叫低阶特征,比如一个人n天买了m个馒头,我们可以提取一个特质表示这个人每天的馒头消耗量m/n,这个特征只考虑了2个原始特征的交叉,所以是一个低阶特征。那高阶特征顾名思义,可以通过一个特征表示非常多原始特征的交叉,这也是深度学习所擅长的。


论文中指出,无论是低阶特征还是高阶特征,都有它自己的价值,都对推荐准确性有着很大的影响。而如何利用好低阶和高阶的特征,就是DeepFM最大的特点。


02
DeepFM与其它算法的比较


通过第一节,大家了解到推荐其实是特征利用的一种博弈。现在就通过特征利用程度介绍下DeepFM与其它算法的区别:

* 逻辑回归(LR):更多考虑线性特征,缺少特征交叉性和高阶特征

* DNN:考虑了高阶特征,缺少了对于低阶特征的考虑

* CNN:考虑近邻特征的关系。较单一,适合图片分类

* RNN:考虑更多的是数据时序性,较单一

* FM:考虑更多低阶特征,缺少高阶特征

* Wide&Deep:同时考虑了低阶特征和高阶特征,但是低阶特征需要手动交叉生成,对用户不友好

* DeepFM:兼顾了低阶和高阶特征,且计算过程中不需要用户干预

文中一份基于开源数据的测试结果也很有说服力:



03
DeepFM架构介绍


DeepFM这么牛,究竟是如何实现的呢?从架构上可以拆解成FM部分和DNN部分。

最底层是输入的稀疏原始特征(One-hot结果),将特征按照Field进行区分,不理解Field含义的同学请学习下FFM。接着进入了Embedding层,将特征限定到有限的向量空间。Embedding层启到一个压缩的作用,不然推荐场景数据是非常稀疏的,比如一个用户A到电商平台B买东西,A可能只购买了一个商品,但是电商平台B有1000个商品,那么购买产品这个特征通过one-hot衍生就是一个1000维度向量,而且在1000纬度里只有1维度有值。Embedding层会缓解参数爆炸。


接着进入FM层和DNN层,两者共用底层的embedding数据,所以效率很高,整个数据embedding只需要计算一次。


在FM层,主要的工作是通过特征间交叉得到低阶特征,以二阶特征为主。这里面指的注意的是,FM算法的特征交叉不是直接拿原始特征相互交叉计算,而是交叉特征因子分解后的结果,这样更能挖掘出特征深层的信息。



而在DNN层就没有特别多要说的点,就是利用深度学习数据的在网络间的传播性得到高阶特征。


那最终二分类结果怎么判定也是比较粗暴,利用一个sigmoid求和函数的方式,分别参考FM和DNN的结果做出判断:


04
总结


总体来看,DeepFM会在接下来引领推荐场景一段时间,毕竟这种既考虑低阶又考虑高阶特征的方式具有好的覆盖性,不过整体架构设计上我觉得没有特别多新颖的地方,个人还是很期待在算法领域有本质性突破的技术产生。


目前基于Tensorflow的版本已经比较成熟而且可以达到不错的效果。有兴趣的同学可以看看这个代码实现:

https://github.com/ChenglongChen/tensorflow-DeepFM


里面有数据可以下载,跑起来很简单~


登录查看更多
3

相关内容

【新书】傻瓜式入门深度学习,371页pdf
专知会员服务
191+阅读 · 2019年12月28日
清华大学张敏老师,个性化推荐的基础与趋势,145页ppt
专知会员服务
87+阅读 · 2019年11月27日
Keras作者François Chollet推荐的开源图像搜索引擎项目Sis
专知会员服务
30+阅读 · 2019年10月17日
【LinkedIn报告】深度自然语言处理的搜索系统,211页pdf
专知会员服务
108+阅读 · 2019年6月21日
初学者系列:Deep FM详解
专知
108+阅读 · 2019年8月26日
推荐召回算法之深度召回模型串讲
AINLP
22+阅读 · 2019年6月14日
KDD 2018 | 推荐系统特征构建新进展:极深因子分解机模型
微软研究院AI头条
4+阅读 · 2018年8月22日
CTR预估专栏 | 一文搞懂DeepFM的理论与实践
AI前线
13+阅读 · 2018年7月6日
DNN在搜索场景中的应用
机器学习算法与Python学习
8+阅读 · 2018年6月7日
今日头条推荐算法详解(PDF下载)
机器学习算法与Python学习
17+阅读 · 2018年2月27日
今日头条推荐算法原理全文详解
架构文摘
7+阅读 · 2018年1月30日
【推荐系统】详解基于内容的推荐算法
产业智能官
23+阅读 · 2018年1月11日
LibRec 每周算法:DeepFM
LibRec智能推荐
14+阅读 · 2017年11月6日
LibRec 每周算法:NFM (SIGIR'17)
LibRec智能推荐
7+阅读 · 2017年10月17日
VIP会员
相关VIP内容
相关资讯
初学者系列:Deep FM详解
专知
108+阅读 · 2019年8月26日
推荐召回算法之深度召回模型串讲
AINLP
22+阅读 · 2019年6月14日
KDD 2018 | 推荐系统特征构建新进展:极深因子分解机模型
微软研究院AI头条
4+阅读 · 2018年8月22日
CTR预估专栏 | 一文搞懂DeepFM的理论与实践
AI前线
13+阅读 · 2018年7月6日
DNN在搜索场景中的应用
机器学习算法与Python学习
8+阅读 · 2018年6月7日
今日头条推荐算法详解(PDF下载)
机器学习算法与Python学习
17+阅读 · 2018年2月27日
今日头条推荐算法原理全文详解
架构文摘
7+阅读 · 2018年1月30日
【推荐系统】详解基于内容的推荐算法
产业智能官
23+阅读 · 2018年1月11日
LibRec 每周算法:DeepFM
LibRec智能推荐
14+阅读 · 2017年11月6日
LibRec 每周算法:NFM (SIGIR'17)
LibRec智能推荐
7+阅读 · 2017年10月17日
Top
微信扫码咨询专知VIP会员