欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~

作者:苏博览

深度学习应该这一两年计算机圈子里最热的一个词了。基于深度学习,工程师们在图像,语音,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=[, , ],
optimizer = opt,
activation_fn=tf.nn.relu, # default
dropout=0.05 )

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

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

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

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

相关阅读

[ I am Jarvis ] :聊聊 FaceID 背后的深度学习视觉算法

王之捷:AI智能云端架构大幅提升智能语音识别能力

深度学习的异构加速技术(一)效率因通用而怠,构架为 AI 而生


此文已由作者授权腾讯云技术社区发布,转载请注明文章出处
原文链接:https://cloud.tencent.com/community/article/603674

为什么要用深度学习来做个性化推荐 CTR 预估的更多相关文章

  1. 深度学习在美团点评推荐平台排序中的应用&& wide&&deep推荐系统模型--学习笔记

    写在前面:据说下周就要xxxxxxxx, 吓得本宝宝赶紧找些广告的东西看看 gbdt+lr的模型之前是知道怎么搞的,dnn+lr的模型也是知道的,但是都没有试验过 深度学习在美团点评推荐平台排序中的运 ...

  2. 深度学习Tensorflow相关书籍推荐和PDF下载

    深度学习Tensorflow相关书籍推荐和PDF下载 baihualinxin关注 32018.03.28 10:46:16字数 481阅读 22,673 1.机器学习入门经典<统计学习方法&g ...

  3. 深度学习目标检测综述推荐之 Xiaogang Wang ISBA 2015

    一.INTRODUCTION部分 (1)先根据时间轴讲了历史 (2)常见的基础模型 (3)讲了深度学习的优势 那就是feature learning,而不用人工划分的feature engineeri ...

  4. 【深度学习Deep Learning】资料大全

    最近在学深度学习相关的东西,在网上搜集到了一些不错的资料,现在汇总一下: Free Online Books  by Yoshua Bengio, Ian Goodfellow and Aaron C ...

  5. 机器学习(Machine Learning)&深度学习(Deep Learning)资料(Chapter 2)

    ##机器学习(Machine Learning)&深度学习(Deep Learning)资料(Chapter 2)---#####注:机器学习资料[篇目一](https://github.co ...

  6. 《TensorFlow深度学习应用实践》

    http://product.dangdang.com/25207334.html 内容 简 介 本书总的指导思想是在掌握深度学习的基本知识和特性的基础上,培养使用TensorFlow进行实际编程以解 ...

  7. Video Target Tracking Based on Online Learning—深度学习在目标跟踪中的应用

    摘要 近年来,深度学习方法在物体跟踪领域有不少成功应用,并逐渐在性能上超越传统方法.本文先对现有基于深度学习的目标跟踪算法进行了分类梳理,后续会分篇对各个算法进行详细描述. 看上方给出的3张图片,它们 ...

  8. [DeeplearningAI笔记]神经网络与深度学习人工智能行业大师访谈

    觉得有用的话,欢迎一起讨论相互学习~Follow Me 吴恩达采访Geoffrey Hinton NG:前几十年,你就已经发明了这么多神经网络和深度学习相关的概念,我其实很好奇,在这么多你发明的东西中 ...

  9. 深度学习新星:GAN的基本原理、应用和走向

    深度学习新星:GAN的基本原理.应用和走向 (本文转自雷锋网,转载已获取授权,未经允许禁止转载)原文链接:http://www.leiphone.com/news/201701/Kq6FvnjgbKK ...

随机推荐

  1. geotrellis使用(三十一)使用geotrellis直接将GeoTiff发布为TMS服务

    前言 传统上我们需要先将Tiff中存储的影像等数据先切割成瓦片,而后再对外提供服务.这样的好处是服务器响应快,典型的用空间来换时间的操作.然而这样造成的问题是空间的巨大浪费,一般情况下均需要存储1-1 ...

  2. Kettle6.0表输入连接数据库

    kettle6.0表输入我们需要从数据中获取数据的时候,需要和数据库建立连接,简单的说下步骤: 1.双击表输入: 2.点击"新建",输入参数值: 注意:数据库用户名可以通过sql进 ...

  3. linux(十二)之用户管理

    前面学习了那么多关于linux的东西,相信大家都对linux应该 有一个大概的了解了.现在给大家分享的是linux中的用户管理,接下来让我们进入正题吧! 今天其实放松了一整天了,有点后悔自己没有把这些 ...

  4. clob字段的值插入和查询N种方法【包括java调用存储过程传入clob参数】

    import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import jav ...

  5. 《物联网框架ServerSuperIO教程》- 22.动态数据接口增加缓存,提高数据输出到OPCServer和(实时)数据库的效率

     22.1   概述及要解决的问题 设备驱动有DeviceDynamic接口,可以继承并增加新的实时数据属性,每次通讯完成后更新这些属性数据.原来是通过DeviceDynamic接口实体类反射的方式获 ...

  6. 页面性能优化和高频dom操作

    一.DOM操作影响页面性能的核心问题 通过js操作DOM的代价很高,影响页面性能的主要问题有如下几点: 访问和修改DOM元素 修改DOM元素的样式,导致重绘或重排 通过对DOM元素的事件处理,完成与用 ...

  7. vue 父子组件传参

    父向子组件传参 例子:App.vue为父,引入componetA组件之后,则可以在template中使用标签(注意驼峰写法要改成componet-a写法,因为html对大小写不敏感,component ...

  8. 汇编指令-MRS(读)和MSR(写)指令操作CPSR寄存器和SPSR寄存器使用(1)

    1.MSR和MRS指令介绍 MRS 指令:  对状态寄存器CPSR和SPSR进行读操作.通过读CPSR可以获得当前处理器的工作状态.读SPSR寄存器可以获得进入异常前的处理器状态(因为只有异常模式下有 ...

  9. asp.net mvc 4 项目升级到 asp.net mvc5

    一.开始 1.打开或新建asp.net mvc 4项目 2.修改 global.asax文件 原: WebApiConfig.Register(GlobalConfiguration.Configur ...

  10. PowerBI入门 第三篇:报表设计技巧

    最近做了几个PowerBI报表,对PowerBI的设计有了更深的理解,对数据的塑形(sharp data),不仅可以在Data Source中实现,例如在TSQL查询脚本中,而且可以在PowerBI中 ...