点击上方“云加社区”,选择“置顶或星标”
第一时间获取技术干货
我们都知道随着内容和数据的爆炸,如何找到用户真正喜欢的内容,已经成为各大平台的核心要素。本次分享将从机器学习特别是深度学习技术在腾讯内部多年实战运营经验出发,以推荐场景为切入点,介绍一下机器学习技术在工业界大数据场景的普适化、普及化进程的推动。
深度学习和人工智能是当下非常热的一个概念,甚至经常出现在娱乐板块。但对工业界和企业界来说,我们更希望让它真正产生价值,解决我们的实际问题。
我大概会从这几个方面进行阐述,结合推荐场景,我们要知道大数据深度学习技术的价值,首先是理解推荐,它到底需要什么,碰到了什么问题和困难;第二是需要理解深度,对大数据场景而言,仅仅就是把网络深度加深吗,它有什么优势,能够解决什么问题,所以我们把这个理解之后,才能更好的让深度学习为推荐服务;在这个过程中,我会同时介绍一下我们自己的一些技术实践,具体下来是两个技术产品神盾推荐系统和DeepR深度学习框架,最后再做个小结。
理解推荐
首先我们理解一下什么是推荐,大家知道当千人千面的需求碰到海量信息的时候,推荐就产生了。从一般的视角来看,学术通常会把这个问题转化成评分的问题,即如何评估一个用户在一个场景下对一个物品的喜好(打分)程度,所以大部分对推荐的理解是围绕着如何评分去展开。
怎么去做评分?
一般来说有两种思路,第一种思路是协同过滤的思想解决推荐问题,通过某个维度,比如一些相似的人群或者物品,找到用户的倾向性,然后衡量倾向的程度,这种思想在推荐里有非常多的算法。
第二种思路是在机器学习框架下解决推荐问题,因为在互联网里有大量的显式反馈和隐式反馈。机器学习方法通常会用这些反馈近似用户的期望,并设法找到一个合适的function去拟合这个期望,要么求均值,要么求方差,这是现在的做法。
在我们工业界来看,推荐是否仅仅就是解决评分的问题。
首先学术界经常会把推荐看成是一个评论矩阵去解决它,实际上在真实的场景下,这个矩阵是不存在的,或者说这个矩阵是一个开集。从商业上来讲,我更喜欢从类似计算广告的角度去看推荐问题,如果我们把推荐看成市场的话,会有很多参与者,而每个参与者的诉求是不一样的,甚至经常是矛盾的,所以工业界的推荐是要做一个Best Match,这个match不是指技术上的检索匹配,而是指诉求的match。
诉求是一个比较虚的概念,那么我们如何去衡量和落地这个诉求?
我们一般用目标驱动这个诉求,我们可以把这个诉求拆成很多小的目标,从这个角度看,推荐问题决不是一个简单的评分问题,所以他会考虑和均衡很多因素。
为了达到这个目的的话,仅仅做一个打分器是远远不够的,它需要一个整体的体系去支撑。经过这么多年的发展,工业界基本上都会采用Offline-Nearline-Online的架构,实践证明也比较有效。
这套架构在腾讯内部的一个具体实践,就是神盾推荐系统,目前已经形成了比较完备的体系,包括经过实际验证的很多有效的算法库。
神盾推荐系统目前支撑了大量的腾讯内部和外部的推荐场景,单日调用峰值达到数百亿次,形成了丰富的生态,也取得了比较好的效果。我们也希望能够让神盾推荐系统在云市场上透出更多的能力,更多的支持到B类用户。
从Recommendation到Deep Recommendation
现在我们再来理解一下深度的问题,大数据的深度和CV或者NLP的深度是否是一个意思?现在讲深度学习,如果不搞个网络,把层数堆上去,就不叫深度。但对大数据,比如推荐来说,深度到底指的是什么,所以我们需要理解一下这个深度。
从我的观点来看,深度主要两层意思,第一个是这个深度相较于传统的模型,对这个市场,包括用户、内容、环境等理解的更深,更本质性的东西,更多是往语义空间的一种映射;第二个是需要能够切实帮助我们解决大数据里面碰到的一些比较重大而难以解决的问题,在这个地方,我列了大数据的三个非常典型的问题,这三个问题是现在一直都没有解决好的问题。包括复杂数据形态的问题,个性化精细学习的问题,数据分布动态变化的问题,比如大数据里面的一个重要特点就是,它是一个动态的过程,它会不停地变化,我们搞大数据的非常头疼的一个问题就是变量漂移和概念漂移,在线下训练,模型都很好,放在线上效果就不太好,其中的一个重要原因是数据的分布在不停地迁移。
随着人工智能技术的发展,特别是深度学习、强化学习的不断发展,这三大问题不能说现在已经解决的多么好,但至少已经提供比较好的思路和愿景,让我们越来越多的看到希望,有很多解决途径去解决这些问题。我现在大概从感知、学习和决策,就是人工智能的三大优势方面大概讲一下我们应用的一些实例。
首先感知方面,对推荐来说是非常有价值的一个应用。它是把两个传统模型看来不相关的两个概念映射到同一个空间,使得语义上比较近的概念在空间上的距离比较近,比如特朗普或者奥巴马,它是两个完全不同的字符串,但映射以后他们可能靠的比较近,因为他们都是美国总统,而且是表现比较糟糕的美国总统。 当然这个语义可以和场景、业务相关。
这是我们关于数据表征方面在应用宝推荐上的一个应用,仅仅通过用户行为学习,就能把一些相同类型的app聚合在一起,提升了推荐的效果。
讲到学习,学习实际上就是如何找到一个合适的function,让它能很好的去拟合我们的数据和目标,这是一个非常重要的环节。整体来说,为什么深度学习或者大规模的神经网络是比较有优势的?首先大规模的神经网络实际上能够把VC维做的非常高,因为我们找function的过程就像寻宝的过程,我们在池塘里面寻宝和到大海里面去寻宝,肯定在大海里找到宝藏的概率更大。大规模神经网络把VC维提上来之后,我们有更加机会找到我们最优的function。同时它的缺点是海域太大了,所以整个方差特别大。所以在大数据里面在应用深度神经网络的时候有一个重点,就是我怎么通过加入约束条件和设计网络结构限制好这个方差;另一方面,相较于kernel,boosting这样的方法,NN的方法更加民主化,可以用更低的门槛通过搭积木的方式寻找function。
这是我们用到的其中一个比较有效的网络结构,相较于全交叉,它其实是通过分组交叉的方式引入了人工先验知识的约束来提升性能。
在决策阶段,现在强化学习方面的应用是一个热点,主要是在这种动态变化的环境当中,我怎么去做有效的和高效的决策。相较于传统的在线学习的方式,首先是以长期的收益期望为目标,同时,我们线上获得的反馈通常是延迟的,强化学习的模式更符合真实场景;另外,强化学习的学习方法可以将动作学习目标和收益目标分开,不要求收益数学形式上可微,非常灵活,这一点非常有吸引力。
在业界,一个非常有价值的应用就是用强化学习做动态的策略选择。随着时间轴的推移,很难保证有一个始终最优的模型或策略,我们能不能组合多个时间维度局部最优的模型去获取更大的收益,这是强化学习很有优势的地方。这个方面很多大厂都有实际应用。
另外一个应用是在腾讯的微视推荐场景。一般的推荐场景强调精准,微视推荐的特点是发现更有趣,所以它会更强调探索和多样性。这种特性也很适合强化学习的应用。
另外一个有非常大价值的方向,就是Transfer Learning,我前面提到的用户兴趣漂移或者数据分布漂移的问题,其实就是Transfer Learning的解决方向之一。
这是迁移学习在电商领域多语言市场推荐的一个典型应用,比如在英文市场积累了大量的数据,但是多语言市场存在冷启动的问题,但用户的习惯和物品存在关联性,我们能不能从做的比较好的应用市场迁移,解决启动的问题,迁移学习也提供了比较好的解决方法。
另外一个例子是我们用迁移学习来解决feeds流产品中的推荐和广告整体优化的问题,推荐强调用户体验,广告强调营收,它们的目标其实存在比较大的gap,迁移学习的一些思路也可以用来寻找那些能尽量同时满足这两个目标的内容。
这是我们经常碰到的另外一个现实的问题,机器学习的生命周期特别长,会涉及到非常多的环节。每个环节相对割裂,而且它们的优化目标各自不同,比如说我们在建模的时候,我们看loss,离线评测看AUC,等等。所以整体上看,效果是一种漏斗的方式,上线之后综合效果的收益挺小。所以我们自然会想到能否把中间的过程省掉,直接对最终目标做优化,那么这就涉及到一个问题,我们现在通常的机器学习算法,其实都要求你的目标是可导的,但我们在线上很多业务目标不可导,强化学习就提供了一个很好的解决思路和方法,这也是现在强化学习比较有应用价值的一个地方。
关于直接优化业务目标,我们也做了一些尝试,主要是通过粒子群进化的思路来进化出网络,这种方法取得了一定的效果,主要问题是计算量比较大,收敛性比较差。目前主流的AutoML的方法可能会是更好的一个解决途径。
DeepR
所以,从机器学习到深度机器学习的转向是整个业界的一个共识。为了支撑从推荐到深度推荐的转向,我们自研开发了一个叫DeepR的深度学习框架,它是针对大数据、面向开发人员,打造高效、专业的工业级深度学习一站式解决方案。为什么要做Deep这个东西?一般通用的深度学习平台对CV和NLP解决的比较好,但是工业级大数据的深度学习有很大差别, 我这里大致列出了大数据的深度学习比较显著的一些特点,这是一般框架解决不太好的地方。针对这些特点,现在正在建设DeepR一站式深度学习的解决方案,同时在这个里面,我们有一些特色化的机制和算法。
这是DeepR整体的架构图。其中比较核心的一个组件就是我们自研的深度学习框架RCaffe,由于时间关系,下面就只对RCaffe做一个简单介绍
这是RCaffe的整体结构图,我们是基于Caffe骨骼来深度定制开发的,在Caffe清晰简单的框架设计基础上,针对大数据特点,在机制和算法功能组件上做了定制开发
机制方面,RCaffe逐步形成了一些自己的特色机制,第一个是分组的数据输入机制,带来的好处是把数据按某种方式分组之后,以组为单位的话,往上走能够很灵活的接入不同的操作分别处理,这是非常灵活的。这种方式对样本权重,多目标等常见应用也能更方便的支持;第二个就是BDM机制,主要是解决大规模模型参数的一个问题,它只加载当前处理batch数据所需要的参数,按batch生成动态模型,解决了内存和显存不足的问题。第三个是多GPU的通讯方式,采用了数据并行和部分的模型并行结合的方式,把输入层和网络层切开,用不同的并行机制去做。第四个是大规模稀疏数据的存储和OP。
这是BDM机制的一个示意,采用内外存交互的设计,按batch动态加载模型参数,在内存/显存的开销上有巨大优势,理论上单机可完成大规模的参数训练
RCaffe在算法功能组件方面,除基本OP外,以“功能Layer”形式抽象,更加组件化和高效。一期为大数据任务提供了14个定制化功能组件。
以Attion组件为例,Attention组件在搜索、推荐、广告中起到了很大的作用,Attention的算法有几十种。在算法组件上,我们可以做一个抽象,转化成一个检索的过程,通过算和key的相关性,把query映射到key对应的value空间,最后在value空间中做一个组合。Attion组件实现了这个过程,其中算query与key的相关性的过程一般通过一个子网络计算,这个子网络可以通过配置文件来组织网络结构。
这是我们DeepR大致的一个路线图,计划在明年上半年能够使功能更加完备和完善。
小结
最后做一个总结,其实在大数据深度学习中,深度的含义不一样。我们的深度更多是被用户、被内容更语义性的一些理解,而不是简单的记忆。我们随着深度学习技术的发展和进步,我们应该让它更多的解决大数据遇到的一些实际的问题,没有先进和落后的算法,只有合适的算法。第二个是数据为王,数据决定效果的上限:模型只是用来拟合数据。第三个是工程的重要性,工程和高效实验的能力决定人工智能的应用水平。
推荐阅读:
如何构建一个相对安全的账号体系?
腾讯AI技术专家教你从0到1学习计算机视觉技术
1个开发如何撑起一个用户过亿的小程序
海媛:小程序·云开发助力开发者快速构建小程序
关注云加社区,回复 3 加读者群
点击阅读原文,获取本文PPT
喜欢就点个“好看”