为什么要用深度学习来做个性化推荐 CTR 预估

作者: 苏博览 2017-09-29 14:56:28

深度学习应该这一两年计算机圈子里最热的一个词了。基于深度学习,工程师们在图像,语音,NLP等领域都取得了令人振奋的进展。而深度学习本身也在不断的探索和发展中,其潜力的极限目前还没有被看到。

当然,深度学习也不是***的,比如有很多问题的特征是易于提取的,我们可以直接使用SVM, 决策树的算法来取得很好的结果。而深度学习并不能提供太多的帮助。还有一些问题,我们并没有足够数量的数据,我们也很难通过深度学习算法来得到可用的模型。此外,有些问题对计算资源和时间的要求比较严苛,在深度学习小型化没有取得突破性进展的时候,它们也不是***方法。

判断一个项目适不适合上深度学习的正确姿势

( 图片来源 : 深度学习防骗指南 )

反过来说,虽然目前深度学习在个性化推荐,计算广告领域上还没有很大的突破,但是我认为推荐系统有很大概率会是深度学习的最重要的应用场景之一。理由有以下几个方面:

现在的推荐系统都要面对海量的数据,要提取上万乃至上亿维的特征。而深度学习本身就是一个很好的表示学习的框架,从海量的数据中学习到人类无法提取的特征组合,是其擅长的事情。

( 图片来源 : 深度学习防骗指南 )

数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。现有的推荐系统依赖于特征工程的效果。而特征工程建立在不断的深入理解问题和获取额外的数据源上。然而根据数据人能抽象出来的特征总类很有限,新数据源和新特征的获得会越来越难。随着人工特征工程的深入,投入的人力和时间越来越长,得到的新特征对系统的提升却越来越少。这个时候,使用深度学习来做特征表达,在成本上也许是一个更好的选择。

图:IBM Watson系统的精度提升曲线。可以看到一开始的时候结果提升的特别快,后面一点点的提升都要付出很大的努力,

因此我们基于Tensorflow在某个业务上做了DNN的尝试,跑通了整个流程,积累了一些经验。也比原有LR的模型在线上有了20%多的提升。希望这些代码也可以帮助各位同学快速的在自己的业务上实现一套深度模型的框架。

图: DNN在CTR预估的一般框架

一般来说,我们可以先选择一个比较简单的框架来跑通整个流程,然后再慢慢增加模型的复杂度。通常我们可以选用下图的框架,把我们用到的数据分为两类:连续的,和离散的特征。

对于连续的特征,需要做一些归一化;对于离散的特征,则一般要做一个Embedding,把一个离散的特征转成一个N维的向量。这个向量的长度一般来说是和该向量的取值空间成正比的。这个embedding的过程可以用FM来实现。 在我们的代码里,是通过Tensorflow自动embedding_column实现的。

所以把用户数据和推荐的物品数据放一起分成两类,然后把embedded之后的离散特征 和 连续特征组合在一起,作为神经网络的输入,输出就是[0,1] 是否点击。这里面我们就直接调用tensorflow的DNNClassifier。这个网络可以设计层数,每层的大小,dropout, 激活函数,学习率等等。

  1. opt = tf.train.AdamOptimizer(learning_rate=0.01, 
  2.                                    beta1=0.9, 
  3.                                    beta2=0.999)            # default 0.001 0.9 0.999  
  4.  
  5.  
  6.        m = tf.contrib.learn.DNNClassifier(model_dir=model_dir, 
  7.                                           feature_columns=deep_columns, 
  8.                                           hidden_units=[1024, 512, 256], 
  9.                                           optimizer = opt, 
  10.                                           activation_fn=tf.nn.relu,        # default 
  11.                                           dropout=0.05 ) 

所以后面就是一个不断调参的过程,当然这个调参也是有一些技巧。网上有很多,在这里就不一一来说了。

深度学习调参师

( 图片来源 : 深度学习防骗指南 )

总的来说,深度学习没有那么神秘,它是一个很有效的工具。在个性化推荐上应该已经有很多团队进行了很多尝试。在这里,我们给出了一个简单和有效的基于Tensorflow的实现方式,也希望可以帮助一些想要尝试深度学习的一些团队。

 原文链接:https://cloud.tencent.com/community/article/603674

作者:苏博览

【本文是51CTO专栏作者“腾讯云技术社区”的原创稿件,转载请通过51CTO联系原作者获取授权】

戳这里,看该作者更多好文

深度学习 CTR 预估
上一篇:[ I am Jarvis ] :聊聊 FaceID 背后的深度学习视觉算法 下一篇:内存带宽与计算能力,谁才是决定深度学习执行性能的关键?
评论
取消
暂无评论,快去成为第一个评论的人吧

更多资讯推荐

12个场景应用,百余种算法,AI是如何攻占经济学的?

在虚拟世界中模拟现实经济状况,想法设计更好的制度只是AI和经济学结合方式之一。其实深度强化学习在面临风险参数和不确定性不断增加的现实经济问题时,也可以提供更好的性能和更高的精度。

蒋宝尚 ·  22h前
机器学习算法集锦:从贝叶斯到深度学习及各自优缺点

本文筛选并简单介绍了一些最常见算法类别,还为每一个类别列出了一些实际的算法并简单介绍了它们的优缺点。

佚名 ·  2020-05-21 14:50:37
用TFserving部署深度学习模型

本文介绍了TFserving部署线上推理服务,从模型的转换,部署启动和调用推理,欢迎交流,希望对你有帮助。

佚名 ·  2020-05-21 14:05:17
520开发者的情人节 飞桨全平台35项升级大礼“示AI”

5月20日,由深度学习技术及应用国家工程实验室与百度联合主办的“WAVE SUMMIT 2020”深度学习开发者峰会以线上形式召开。本届峰会,飞桨公布最新全景图,带来多达35项全新发布和重磅升级,不仅进一步升级核心框架、完善从开发训练到部署的全流程工业级极致体验、深化企业端服务,更着眼未来,引领布局前沿技术,首发量子机器学习开发工具“量桨”,以及蓄力AI人才培养和开发者生态,发布青少年AI科普教育“晨曦计划”、“星辰计划”开发者探索基金等。

佚名 ·  2020-05-20 14:07:06
百度CTO王海峰:飞桨深度学习平台是新基建的重要一环

5月20日,由深度学习技术及应用国家工程实验室与百度联合主办的“Wave Summit 2020”深度学习开发者峰会在线上召开。百度CTO王海峰在致辞中表示,时代契机为飞桨的发展提供了最好的机遇,作为中国首个开源开放、功能完备的产业级深度学习平台,飞桨将与产业紧密融合,与开发者并肩前行。

佚名 ·  2020-05-20 11:32:27
PyTorch官方教程大更新:增加标签索引,更加新手友好

PyTorch官方教程,现已大幅更新,不必再面对一整页教学文章茫然无措,可以想学哪里就精准点哪里了。

鱼羊 ·  2020-05-18 09:44:08
机器学习:使用批归一化有哪些缺点?

批归一化(Batch Normalization)是深度学习领域的重大突破之一,也是近年来研究人员讨论的热门话题之一。批归一化是一种被广泛采用的技术,能够使训练更快、更稳定,并已成为深度学习领域最具影响力的方法之一。然而,它仍然存在一些要注意的问题。

不靠谱的猫 ·  2020-05-18 08:42:13
深度度量学习的这十三年,难道是错付了吗?

近日,Facebook AI 和 Cornell Tech 的研究者在论文预印本平台 arXiv 上公布了最新研究论文,声称这十三年来深度度量学习领域的研究进展「实际上并不存在」。

机器之心 ·  2020-05-17 15:57:28
Copyright©2005-2020 51CTO.COM 版权所有 未经许可 请勿转载