你知道么?你的每一次外卖都是与深度学习的美丽邂逅
作者:刘怀军 2017-07-15 16:06:09
人工智能
深度学习 很多同学认为外卖是线上下单、线下送餐的业务,商业模式简单,这种想法正确但是理解片面,它不仅需要技术,而且要用深度学习来解决。那么,外卖为什么需要技术?为什么需要深度学习技术?
很多同学认为外卖是线上下单、线下送餐的业务,商业模式简单,这种想法正确但是理解片面,它不仅需要技术,而且要用深度学习来解决。那么,外卖为什么需要技术?为什么需要深度学习技术?
深度学习对于送餐的价值,大家简单了解一下外卖业务的场景和特点,就能理解其中需要通过技术方式来解决的难点了。
从业务场景上划分,是团购、点评、预订和外卖:
团购,像过去的美团、大众点评,当然这两家公司现在合作了,还有之前的窝窝、拉手以及百度糯米。
外卖,像美团外卖、饿了么。
点评,像经典的以信息平台的方式给用户提供信息决策的大众点评。
预订,美团在做的点餐相关的很多业务。
事实上,外卖上的 O2O 线下场景及其业务模式,要远比上图所表达的要复杂。
而整个外卖行业的发展非常快,我们 2014 年的订单才刚突破 100 万,但是到今年 6 月份的时候,我们的订单量已经突破了 1200 万。
外卖业务相比团购、电商的平台有四个业务特点:电商化、运营化、本地化、场景化。
首先说电商化,外卖的交易能够闭环。这一点跟电商在淘宝京东的模式比较类似,但是不一样的地方在于它是线上线下结合,所有提供服务的店铺都是实体的,不管餐饮还是非餐饮。
接下来是运营化的特点,一个是内容形式的多元化,包括商家,餐饮的、非餐饮的,餐饮有很多套餐的组合;内容形态上能看到产品的形态,目前这一块还不明显。
另外是运营能力,包括商家自运营的能力、BD 自运营的能力、骑手的运营能力,这些都不是完全一样的。
另外一个特点是本地化。对于用户来讲,他一般只能消费到绿色区域商家提供的服务,这就决定了它的供需关系是受约束的。
还有一块是供需关系的动态变化。动态变化首先商家不是 24 小时营业的,另外是商家的配送距离也是动态变化的。
从技术角度满足整个服务的动态变化,就需要个性化的数据,这是一个很大的挑战。
***一个是场景化。上图是外卖订单按一天24小时的分布曲线图,有两个高峰,一个是午餐高峰,另外一个就是晚餐高峰。这个是时间的一个时段化。对于基本吃的场景来讲,用户吃的地域性或者本地化的差异比较大。
综合这几个业务特点来看,一个是个性化程度很高,另外一块精细化的需求很大。
我们在时间场景上、地域场景上,甚至更细的业务场景上,要把精细化程度做深;另外一块是多元化的特点,形态多元、内容多元包括供给单位的多元;还有实时化程度很重要,配送这一块的距离在实时变化,我们需要做实时监控。
针对这些业务的特点,我们要去解决这些技术挑战需要什么样的基础工具?
下面简单介绍一下美团点评的整个大数据平台。
美团点评的大数据平台架构
美团点评大数据平台的架构,***层是美团的基础设施,美团有自己的云平台,所以所有的服务器都在云平台上。
云平台之上是基础的 HDFS 这样的服务,像 Hbase 这些相关的基础设施。上面一层是机器学习平台,非线性数目性的工具都有相应的部署。
最上面是美团点评几个大的业务群,包括酒店、旅游的业务,包括娱乐这样综合的业务,包括整个公司的广告平台。
在主架构之上有一个 Log 平台,因为业务很多,所以业务产生的数据,不管是 B 端还是 C 端,很多数据都会统一落到 Log 平台上,由 Log 平台对接到顶层业务平台上。
另外一个就是监控平台,服务监控、数据监控以及业务调度。
美团点评的深度学习应用实践
接下来,给大家简要介绍美团点评深度学习的两个关键应用场景。
应用场景1:图像技术
美团平台上的技术内容多样化,包括图像和文字,尤其用户在手机上面,会做很多决策的时候,图像对他的决策影响至关重要。
在图像这块,我们做了两个关键事情,一个是图像质量的技术,另一个是 OCR 技术。
图像质量技术有什么应用场景?如上图所示,左侧这个图明显看着比较舒服,右侧图就看着乱七八糟,这个很难主观描述,就是人的直观感觉。
具体来说,左侧两个图片的清晰度可能高一点,或者完整度高一些。在用户做决策的时候,如果我们在平台上面分的是质量比较高的图片,用户整个点击会比较快。
对商家来讲,用户很容易发生需求匹配的转化。但是右侧这个图来讲,整个体验转化的能力上会相对比较弱。
基于这个背景,我们对图像质量进行判断,发现存在一些关键的难点和挑战,主要有三个关键点:
标准评判很难,包括定义它的清晰度、完整度还有图片里面的构成,整个行业也没有对图像质量的标准定义。
用户的关注点不一样,有些用户可能关注图片是否清晰,有些用户关注图片是不是完整,有没有关键的信息给切走。
怎么解决这几个问题?我们引入了建模的方式,一个像美学的课程,另一个是图像基础的特征,并在样本标注上采用自动化标注的方式。
我们去看图片的来源,直观的理解是用户自动上传的图片,也就是 UGC 的图片,质量相对差一些。我们专业的人员开设的图片质量会好一些,可以做一些基本的标注。
另外一块是基于用户行为来看,我们会展示给用户点击比较多的图片,可能是用户感兴趣或者质量比较好的图片;点击比较少的图片,我们认为它是质量比较差的图片,这样可以通过自动化的方式把样本标注出来。
在图片输入上,我们没有直接给每个图片识别它是高质量、中质量还是低质量的图片,基本上采用的是一个学习的方式,比如图片的美感,通过 DNN 方式来判断图片,包括它的品类,属于快餐、西餐还是简餐之类。
另外一块是基础特征,图像的色彩,包括图像的对比度。
这些基础特征也可以用来做整个建模,还有一块是整个在深度学习上面,我们有直接去做,通过 KOS 的方式判断哪一个图像质量比较好,哪一个图像质量比较差,最主要是从一堆图片里面选择比较好的图片展示给用户。
涉及到的数据比较商业化,整体来讲,建模做完了之后,我们用户体验式得到了提升。
应用场景2:OCR技术
前面是整个图像质量的一个技术,接下来说说 OCR 的技术。OCR 是做数据的检测,OCR 在美团外卖有哪些比较关键的应用呢?
比较大的方面是自动审核,为了保证给用户提供可靠的服务或者优质的服务,我们需要审核商家的牌照,商家的经营许可证,商家的产品质量,这一块如果用人工审核的话,人力成本会很高。
另外一块是自动录入,商家入住到外卖平台之后,要把菜录入到上面去,尤其商家要不断的改菜单,不断的录入菜单,这一块是自动录入的过程,这是我们基本应用上的两个需求点。
图像有很多成像的方式,另外一块文字很复杂,很多图片上的文字不是标准的楷体,各种各样乱七八糟的字体会有,甚至还有变形的字体,图像的背景很复杂,或者说人看到都很难区分这种场景,这对整个 OCR 提出了技术难点的挑战。
怎么解决这些问题呢?
OCR 识别的技术是我们发现比较关键的技术,文字的检测首先从图片开始,比如我们检测哪一些是图片里面的文字,哪一些是图片本身。
另外一块是文字的识别,我们检测到图片之后,怎么把里面的文字识别出来,这一块整体采用的是 CNN 方式,加入 BLSTM 的模式,考虑了整个序列建模的能力,***一块是 CTC 的序列识别模型。
我们整个过程由原来人工审核变成了自动化的过程,整个运营效率得到了很大的提升。
美团点评DNN在评估模型中的应用
接下来详细介绍一下 DNN 在预估模型上面的应用,包括前面也讲了会涉及到很多预估,预估在整个算法领域用的非常多,比如说广告里面涉及到的 CTR 的预估。如果我们优化目标可能是 CTR 那就是 CTR 的预估,还有很多 ROI 的预估。
最近几年,国内外互联网大公司都在研究基于 DNN 的模型,怎么把原来传统的模型可能存在的一些缺点进行改进,这是我们在做的一些相应的探索。
首先简单介绍一下我们的业务模型。前面介绍了业务的特点,基于业务特点,用户的模型是什么样的,有几个关键的步骤,用户做决策时看到了相关的信息之后,这个是不是用户的目标需求,决定了用户的消费决策。
先点击,点击之后进入到商家的点菜页里面,可以加菜或者减菜,之后用户可以提交订单,提交之后用户有一系列的输入、地址等,之后就是支付了,***就进入到商家系统。
整个流程像一个漏斗,在这个漏斗里面每一场都有相应的转化,我们可以去做预估,也可以对整个链路做一个完整的预估。
另外一块是在这样一个预估模型里面,我们通过多个维度的特征表述这个样本,我们采用某一种学习模型,得到最终的预制结果。
在外卖的场景上,特征的维度更复杂,前面提到用户的特征这是最基本的,另外一块包括场景层面地点的特征,不同的建筑物类型,用户需求的不同,包括时间也涉及到配餐的特征,用户肯定倾向于配送比较快的结果。
这个又分不同的业务场景,比如说吃午饭 12 点餐,你可能希望十分钟送过来,你想吃水果你可以等三个小时。
什么是特征组合?
另外一个就是商家的特征,最主要是商家提供的商品,采用直营的模式,每一个实体的饭店,包括饭店的质量和整体的转化能力,其中经营能力有很多的特征,还有商品的特征。
从这个角度来看,整个定特征的过程中,特征很多,这么多的维度都可以切出来不同的模式,怎么去定义特征,怎么组合特征的过程成本很高,这个过程依赖于人工经验,在整个行业里面个性化推荐效果比较好,为什么效果比较好呢?
除了技术比较好之外,在业务这一块做了很多特征的定义,除了技术本身要深入的理解,业务上也有很多的特征和经验。另外一块是特征选择很大,特色比较多了之后做特色选择成本是很高的,怎么样把有价值的选出来。
刚才提到几个关键点是 DNN 比较擅长的能力,为什么我们会尝试很多的 DNN 呢?
一方面是传统的模型已经研究了很多年了,另外一块在传统的模型上面,它有一些不足。
它的优点是速度很快,基本上是线性模型,我们用千亿级的特征,但是它的缺点在于因为它是线性的,所以非线性的能力是比较弱的。但是实际的场景里面不是简单的线性化,而是非线性化,甚至更复杂的构成。
另外一块因为是线性的,所以最基本的逻辑认为它是单维的,需要我们每个人手动的组合特征,组合特征就涉及到如果人工安排,我们如果准备三个就三个,如果多个就很复杂,所以特征组合的成本很高。
树模型的应用
树模型可以解决特征组合的问题。同时还能解决整个树空间的问题,把整个空间做了一个多维度,不是简单的通过线性的切分方式,所以它的解决就是线性能力受限的问题。
比如说前面提到的有业务的类型,有快餐、简餐、西餐;另外一块是文本特征,这一块树模型上面不是那么擅长的,所以基于此我们尝试多个 DNN 的模型。
整个系统的架构架构分为两个大的层次,首先是基本的数据层,包括用户来了之后在 APP 上面,包括我们的 API、很多业务的数据,上面分两块,一个是离线的数据处理,一个是在线实时的数据处理。
离线数据有几个关键的步骤,另外一个在线的整个逻辑上比较类似,核心的逻辑部分就是包括端达到 API,API 到后来的 Service,这个用户是使用技术还是某一个线,这个按照业务特点的规则要做一个排序的。
再看一下整个在外卖上面关键特征的体系,一个是用户维度,一个是商户维度。
我们从用户画像来看,一个是基本用户是男生还是女生,或者是它的行业是学生还是白领,有哪一些偏好,他喜欢吃粤菜还是北京菜,还有另外购买能力,一顿饭吃一百块还是 20 块钱,另外还有优惠的偏好很多的信息。
商户这一层包括商户的基本信息,也有商家用的第三方的配送,也有用的美团点评,所以在配送的时效性这一块有很大的差别,这个是单独的特征,另外还有各种组合特征和关联特征。
比如说一个用户浏览次数是多少,点击次数是多少,下单次数是多少,以及对应的点击率是多少,有很多交叉的特征。
熟悉了政策体系之后,首先我们尝试了 Google 经典的 Deep Model,分成两块,特征进去之后做***的一个预测得到相应的结果。
接下来简要介绍一下,Wide 这一块可以输出单一的特征,又可以输出组合的特征,需要把特征转到一个 Model 空间里面去,在 Deep 这一块可以根据业务的特点是去试用或者调参数。
另外一块是做特征时,虽然它是高维的,但是可以把高维转到低维空间里面,这一块是更详细的一个图,这个图里面我们把特征做了分层,也可以做的比较灵活一些,可以在不同的厂商,或者有的厂商可以介入到最终的逻辑回归那一层。
在做模型的过程中,关键的就是离线,离线一个是样本处理,包括样本的清洗还有爬虫过滤,爬虫现在不少,这些爬虫的数据对整个的效果影响很大。
另外还有无效的加载,材料的优化,怎么调价样本还是副样本都很关键,我们采用用户的点击设想给它。
在业界里面用的比较多的,甚至他是新用户使用优惠才点,这个是表述它的兴趣的内容,我们做了一些筛选,选出来相对一定频度的用户,或者是商品作为整个的样本空间,准确的来做数据。
前面提到的 Model 把不同的特征做了不同层次的划分,不同层次的划分在不同模型上使用,特征能力用的比较强,但是大家也看到,前面模型使用特定的特征,没有考虑到实序的特征。
实际上用户进入到一个场景,不管是电商的产品还是外卖产品的时候,用户肯定会有一系列的行为。
比如说在最终下单之前,还有就是去构建实际的序列,同时把实际的序列作为每个时段的输入,同时每个时段去做相应特征的项目,最终做一个完整的预测得到相应的结果。
这里面是使用经典 RNN 的模型,大家可以尝试一下长短序列机的模型。
这一块因为涉及到用户的实时架构,所以简要介绍一下我们实时系统的架构。基本上,首先是用户的个人行为的数据,进入序列之后,根据数据做相应的梳理。
从整个 KV 结构里面,同时去做多层指标的监控,监控这个数据是不是正常的,我们怎么样对日常的数据做一些相应的处理。
接下来简单介绍一下用户的信息,一个是输入,以不同的应用场景去选择,实际上在点击用户场景里面可以点击用户观看,同时它的每一个输入需要做相应的 one—hot 这种输入。
输出的也可以做一个序列,这个序列可以根据实际的场景控制,序列里面根据概率我们去选择的时候,按照一定概率的排序去给用户一个相应的序列结果,精准的标识用户的需求。
在这里面,关键点是序列的长度。序列的长度根据不同的业务方式去调整,序列太长了,一方面可能会很稀疏,另外一方面计算的时间很高。
序列太短的情况下,用户的信息不会被充分的挖掘,需要按照一定的时间窗做相应的选择。最终的收益是我们给用户推荐结果的精准度提升了很多,提升了整个平台的转化效果和收益。
结语
对外卖来讲,业务很关键,如何把最终的效果做好?不但要从技术的角度上理解,我们还需要对业务有更深入的理解,理解业务之后决定采用什么样的技术来解决这个问题。
另外在算法选择上,在整个算法里,一下子找到牛逼的方法需要做很多的尝试,我们需要尝试很多的模型,同时需要做总结,在什么样的场景,什么样的问题上用什么样的策略方式是比较合适的。