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

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

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

判断一个项目适不适合上深度学习的正确姿势 ( 图片来源 : 深度学习防骗指南 )

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

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

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

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

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

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

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

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

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

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

        opt = tf.train.AdamOptimizer(learning_rate=0.01,
                                    beta1=0.9,
                                    beta2=0.999)            # default 0.001 0.9 0.999 


        m = tf.contrib.learn.DNNClassifier(model_dir=model_dir,
                                           feature_columns=deep_columns,
                                           hidden_units=[1024, 512, 256],
                                           optimizer = opt,
                                           activation_fn=tf.nn.relu,        # default
                                           dropout=0.05 )

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

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

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

( 图片来源 : 李沐 来一起动手学深度学习吧 )

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

苏博览的专栏

1 篇文章1 人订阅

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏AI科技评论

干货 | 无监督学习和transformers如何在OpenAI手里玩出新花样

AI 科技评论按:OpenAI 近期更新了一篇博客,他们利用一个任务无关的可扩展系统在多语言任务上取得了卓越进展。论文及代码已经公布。他们的方法结合了 tran...

563
来自专栏null的专栏

[置顶] 《Python机器学习算法》的写作历程

前言 首先,感谢各位支持我博客的同学,你们的支持是我一直努力的动力,正是因为你们的支持,才有了《Python机器学习算法》一书的面世: ? 目前,该书已经可以在...

3675
来自专栏AI研习社

无监督学习和 transformers 如何在 OpenAI 手里玩出新花样

AI 研习社按:OpenAI 近期更新了一篇博客,他们利用一个任务无关的可扩展系统在多语言任务上取得了卓越进展。论文及代码已经公布。他们的方法结合了 trans...

804
来自专栏新智元

Facebook AI实验室最新论文:图像检测的无监督学习(下载)

新智元导读】Facebook最近在美国的日子不算好过。据英国《卫报》报道,Facebook平台上广受欢迎的新闻推送功能实际上严重依赖于编辑团队来决定新闻内容的取...

3808
来自专栏算法channel

北大才女总结:机器学习的概念、历史和未来

提起机器学习,我们不得不给机器学习下一个准确的定义。在直观的层面,如果说计算机科学是研究关于算法的科学,那么机器学习就是研究关于“学习算法”的科学,或者说,不同...

1020
来自专栏AI科技评论

干货 | DeepMind 提出 GQN,神经网络也有空间想象力

AI 科技评论按:人类理解一个视觉场景的过程远比看上去复杂,我们的大脑能够根据已有的先验知识进行推理,推理的结果所能涵盖的内容也要远超出视网膜接收到的光线模式的...

1083
来自专栏AI科技大本营的专栏

AI 技术讲座精选:深度学习是如何改变数据科学范式的?

【AI100 导读】深度学习正在改变一切。就像电子学和计算机改变了所有的经济活动一样,人工智能将重塑零售、运输、制造、医药、电信、重工业等行业,即使是数据科学本...

3148
来自专栏AI科技评论

CNCC 2016 | 山世光:深度化的人脸检测与识别技术—进展与展望

编者注:本文根据山世光在 CNCC 2016 可视媒体计算论坛上所做的报告《深度化的人脸检测与识别技术:进展与问题》编辑整理而来,在未改变原意的基础上略有删减。...

3214
来自专栏新智元

图灵学习:首个只需要“看”就能学习的系统

【新智元导读】谢菲尔德大学研究人员日前在学术期刊《群智能》(Swarm Intelligence)刊文,介绍了一个叫“图灵学习”的系统。研究人员表示,这是首个让...

3286
来自专栏SIGAI学习与实践平台

如何又“准”又“狠”地成为优秀算法工程师

怎样成为一名优秀的算法工程师?这是很多从事人工智能学术研究和产品研发的同学都关心的一个问题。面对市场对人才的大量需求与供给的严重不足,以及高薪水的诱惑,越来越多...

1233

扫码关注云+社区