Bootstrap

解析美团外卖智能配送的AI技术原理(附PPT)

来源:infoQ(微信号:infoqchina)

本文共8163字,建议阅读10分钟
本文为你详解美团外卖如何使用AI技术实现智能配送。


[ 导读 ]随着数字化时代的到来,外卖市场近年来发展非常迅猛。对外卖物流系统而言,配送效率和用户体验至关重要。而实际配送过程是由配送员(骑手)最终完成的,因此,想要真正提升配送效率,不但要在智能调度系统(订单指派、路径规划、ETA)上下功夫,还要不断提升配送员的“附加”能力,让他们越送越“熟”,越送越“顺”,越送越“快”。以此为出发点,美团点评研发团队设计了骑手智能助手,全面提升骑手的各方面能力。


在 1月份的 AICon全球人工智能与机器学习技术大会上,美团点评配送人工智能方向负责人何仁清分享了《美团骑手智能助手的技术与实践》。讲解如何在使用环境复杂、用户群体多元化的情况下,以智能耳机和语音交互为载体,并通过大数据挖掘、机器学习、自然语言处理等技术,让智能助手具备复杂场景精准识别、服务智能推送,智能引导、全语音操作等能力。最终在智能、安全、便捷、精准等多个维度上,全面提升骑手配送能力,从而提升整个配送效率和用户体验。


AI技术对同城配送的业务价值


总体而言,物流业务是一个比较传统的行业,但是随着整个电商、移动互联网和移动支付的兴起,近些年整个物流行业实现了持续和高速的发展。



上图系中国物流与采购联合会在 2016年发布的一个报告,调研数据表明,全国物流件数环比增长超过 50%,达到 300多亿件。


同时整个物流的费用占比也很高,从图中可以看到,物流成本已经占据 GDP的 15%。而在欧美国家以及日本,这个比例大概只有 8%~9%左右,所以中国的物流行业还有很大的优化空间。这也是很多公司大力投入去做物流行业的一个很重要的原因:行业正处于高速发展阶段,而且体验、效率和成本方面都有巨大的优化空间,大有可为。


下图主要介绍了美团外卖现在的发展情况:



美团外卖从 2013年启动,目前大概能够服务 2.5亿用户,已经覆盖 1300多个城市,能够为 200多万商户提供服务,日峰值订单超过 1800万。美团外卖智能配送调度系统每天匹配 50多万外卖小哥,基于海量数据和人工智能算法,确保平均配送时长不超过 28分钟。这也是目前世界上规模最大、复杂度最高的多人、多点实时智能配送调度系统。


我们对美团配送的定位是:做成最大的即时配送平台。



相比传统物流,即时配送包括以下几个优势:


第一点,非常快。从商家发单,比如说一个外卖订单,从下单到用户收到,平均要在 30分钟内能完成,最慢的也应该在一小时左右。快,是最重要的一个特点,快,也能够使整个服务的要求和服务质量得到巨大提升。


第二点,能够直接联系用户和商户。之前的物流基本是从商家接单,要经过很多环节,包括仓储、运输调度、人员配送等等,最后再送到用户,中间几经转手,甚至由不同的公司配送,或者有不同的加盟商。但是即时配送直接将用户和商户联系起来,进而直接影响目标人群,这是很大的一项价值。


第三点,能够承担多种配送场景不仅仅可以送外卖,还可以送商超、生鲜等等,基本上所有的同城快件,都可以纳入其配送服务范围。


总体来说,配送是一个非常复杂的业务,为了能够便于大家理解,我把这个业务模型进一些抽象和简化,可以用下面这张图来进行说明。



从本质上来讲,配送主要是把用户的配送需求和线下的各种运力(比如说骑手或车辆之类)进行匹配的过程。匹配分为线下匹配和线上匹配,线下主要靠运营,线上就是我们技术部门所构建一些系统。从这个层面而言,我们要解决的主要是在这个需求和运力之间,如何实现最优匹配的问题。


这其实也是一个相对比较传统的问题,像做广告或者推荐,都会面临这个问题,需求是要推荐的产品,供给是广告位置,但位置并不是无限多,如何在需求和供给之间达到最好的匹配,这本身就是效率优化问题,只不过广告和推荐使用的 CTR预估,而物流中使用的方法更加复杂一些。


配送中的复杂性,具体来说有几点:


  • 这是一个 NP-Hard问题,计算复杂度随着规模呈指数级增加。比如是骑手身上 N个订单的路径规划问题,或者是 M个订单与 K个骑手的订单分配问题,这两个都是指数级复杂度,而且相互关联。


  • 这不但是一个多点取多点送问题,而且随时有新订单增加,具有非常强的实时计算要求,当一个新订单生成后,需要在几十毫秒内别完成调度运算,相比传统物流中有几十分钟以上的计算时间,即时配送系统设计的难度要大得多。


  • 配送场景非常复杂,涉及天气、路况、骑手熟练程度、商家出餐速度等多达几十个因素,极大增加了解空间的随机性和复杂度,对配送算法的稳定性和适应力挑战极大。


对美团配送来说,要完成这个任务,需要分为大概三个层次,如上图最右侧所示。


  • 第一层,物流基础结构建设。包括在城市里如何建设站点,如何配备人力,如何配备商家的供给情况。这些基础结构不但深刻影响配送的规模、成本、效率,而且是物流管理和运营的基础,比如加盟商管理、骑手运营等都需基于这个结构进行展开,因此这些基础结构的作用非常重要,而且它们较难进行即时调整,非常考验技术的长期预测和规划能力。


  • 第二层,供需匹配的动态均衡,通过定价机制进行市场调节,包括几个方面:一个是基础定价,比如一个定单来了,到底向用户收多少钱,向商家收多少钱,给骑手多少补贴,这需要考虑很多因素,保证定价的合理、公平。另一个是供需平衡,当遇到恶劣天气等突发情况,通过动态调价方式,实时调节用户需求和运力供给,保证整个系统的稳定与用户体验。


  • 第三层,订单和骑手的实时匹配,也就是派单,在订单出现后在几十毫秒内分配到一个最合适骑手,并完成多个订单的路径规划。这是一个 NP-Hard问题,而且由于不断有新订单生成,需要实时计算,对并行计算引擎的要求很高。派单的优化目标是:提升整体配送的效率,并保证用户体验,是整个配送系统的核心模块之一。


以上,主要是我们对整个配送的理解,接下来讲述如何使用技术手段来进行落地和实践。


对于 AI问题来说,整个配送在 AI问题中的分类应该是什么样?下图给出了一个解释。



我们可以从两个维度来看 AI问题。个维度,是看机器与人工的对比,速度上是不是比人工更快,是不是比人工的效果更好。


另一个维度是 AI所发挥的作用。首先是不是能够感知世界,比如说现在做得图像识别、语音识别以及 OCR,都是像人一样能够感知这个世界。其次是不是能做到认知,比如说了一句话,“今天天气怎么样”,不但要把语音翻译成文本,这里讲的是“天气”这个实体,还有“今天”这些限定因素。第三就是要做决策,现在比较火的人工智能应用都在“如何做决策”这个层面,而且要做比人做更好的决策。一些代表性应用,比如智能助手,特别是辅助人进决策权的(聊天机器人会差一些),可以帮你完成更好的任务;比如无人驾驶;比如在物流领域,如何分配订单,并通过无人车或别的方式交付订单;还有在游戏和医疗里面,AI辅助医生做决策,在游戏里面,当用户掉线时,游戏 AI可以帮助用户打怪升级。


可以看到在配送层面,我们会涉及智能助手、智慧物流、无人驾驶等多个维度,而为了提升配送的整体智能化程度,我们构建了自己的“美团配送 AI”,具体来说分为两大部分:



第一部分是信息化,也就是数据收集。举个例子,要收集到什么样的数据?我们要收集到一个商圈的数据,这个商圈可能要精细到小区和楼宇级别,一个楼在什么地方,这个小区是不是让骑手进来,同时还要收集天气数据,比如风速、温度,是否有雾霾,因为所有数据会影响到配送的效率,用户下单情况,比如今天雾霾,北京的外卖订单量估计会上涨。


第二部分是智能化,也就是构建一整套智能化模块,构成一个智能配送系统,覆盖配送的各个环节。


为了完成这个“美团配送 AI”的具有挑战的目标,并考虑整个行业的长期发展,我们在整个人工智能上的布局如下:



首先是广度方面的建设。我们的目标是配送整体流程和环节进行 AI化,从用户下单开始的每个配送步骤都要覆盖,为此我们整体技术方向的面非常广,不但横跨三个大学科,而且从预测、挖掘、定价、规划、调度和硬件等都要进行技术研究和业务落地。


其次是深度方面的建设。这不单单是指技术方面,比如基础计算框架和模型研究等,还包括技术与配送业务的深度整合,比如配送仿真平台建设,具备进行多配送场景的仿真能力,无需上线就能够对不同业务策略效果进行准确预估。同时还要结合行业情况,提供行业的智能化解决方案,比如在骑手运营方面,更有效的骑手激励和骑手留存的机制设计。


而美团外卖语音助手就属于我们在广度和深度结合比较好的案例。接下来就和大家分享一下我们在整个智能助手的实践和设计过程中,以及在整个物流业务中,如何将人工智能技术更好的落地的一些经验。


美团外卖智能语音助手定位



我们为什么要智能语音助手?骑手到底在什么情况下需要智能助手服务,整个服务里面的关键是什么?先解释一下这个问题。如上图所示,这个是整个骑手在配送过程中遇到的一些环节,可以分为两大部分。


第一部分是线上的决策,而且涉及的决策各式各样。举个例子,这个骑手有定单,要送到一个用户那里,他可能要做几个决策,比如说要不要给用户打电话,因为有些地方是不用打电话的,像住宅楼里面,骑手有很大概率知道这个用户应该在家里的,不用打电话;有些必须打,比如写字楼,因为骑手上不去,所以需要提前打电话让用户下来。


但需要提前多长时间呢?是提前一分钟,两分钟,还是五分钟?这个问题很关键,如果打电话时间比较早,用户就会提前下来,会造成用户等待骑手的问题,用户体验不好,可能会有投诉。如果这个骑手非常保守,到楼下再打,但用户住在 10层,那么用户下来包括等电梯的时间可能要需要 10分钟,效率会变得非常低。


第二个部分是骑手操作过程,因为骑手会频繁和手机交互。他要查看一个定单,步骤非常复杂,把手机拿出来,解锁,打开 App,查看信息,做操作(比如说点击完成),最后放回手机,大概需要五到六个过程。如果操作快,也需要 10到 20秒钟。而且很多骑手是在骑行过程中做这些操作的,这样会非常危险。


总结一下,配送骑手遇到的困难可以总结为三个大的层面:



  • 第一,任务复杂,需要做很多决策,不过复杂度会随着骑手的熟练度有所变化。

  • 第二,操作繁琐,大概需要五到六个步骤,至少需要 10到 20秒,或者更长时间。

  • 第三,骑手在骑行过程中操作手机非常危险。对于有 50万骑手的平台,我们必须考虑骑手在整个驾驶过程中的安全。


基于这些考虑,我们做了美团外卖语音助手,它的定位主要包括以下三点:



第一点就是要求安全,要做一套全流程的语音交互方案,配送过程中的各个环节都能用语音操作,不需要骑手看手机,解放双手,让骑手更加安全。


比如在行驶过程中,有个定单过来了,系统问骑手要不要接单,只要通过指令回答,“是”或“否”,或者“OK”这种,整个过程就完成了;不需要像以前那样的,把手机掏出来再进行操作,这个场景非常受骑手欢迎。


第二个,设计极简的步骤,所有操作能在一到两个步骤里完成,第一个步骤是信息播报,第二个步骤通过语音命令完成操作,将原来的五到六个步骤,精简到现在的一到两个。


第三个,提供很多智能化服务。最典型的,刚才说的骑手要去一个楼,用户可能在 5楼,可能在 4楼,这个用户下来需要多长时间,做智能化推荐,根据用户的地址信息,系统智能推荐打电话时机,当然还包括像导航之类的基础功能。


上文的分析,基本上将我们怎么把智能语音助手在场景里落地的最关键的点分析出来了。我们要落地,最核心的就是要帮助骑手完成配送任务,而不是“聊天”或者“问答”。这就要求语音交互整个过程要非常便捷,同时也非常智能。


而我们遇到的第一个挑战,就是交互模式如何设计的问题。



如上图所示,左侧是一般的语音助手方案,需要唤醒、应答、请求和再应答四个步骤,但是并不符合配送场景的要求。首先,骑手所在的场景,噪音很大,比如风噪、汽车噪音以及商场噪音等等,唤醒比较难实现。其次,需要四个步骤,还要考虑骑手的工作状态,这个操作过程太繁琐。


那怎么办?我们思考,是否能做到一套不需要唤醒的解决方案呢?答案很肯定,可以做!


第一点,我们的数据非常多。包括骑手、用户和商家,这些数据都是实时的,我们能够了解比骑手多得多的全局配送信息。第二点,我们能做到精准预测,利用机器学习、智能调度等技术,可以对骑手下一个操作场景进行识别。


举个例子,一个骑手身上可能有几个订单,他正在朝一个地方前进,通过场景分析,我们知道他要给具体哪个用户配送,而且我们能了解用户在这个楼里的几层,下来大概需要几分钟,所以能够推算出来,大概在哪个时间点提醒骑手打电话比较好。这样我们就可以省略唤醒和应答流程,直接给骑手发提醒,骑手只要回答是或否够可以了。这样设计才符合骑手线下的实际配送情况,能够真正给骑手解决实际问题,才能够真正称之为“智能”。


相关AI核心技术


具体技术分为几个主要的部分。



第一个部分是基础设施,包括语音识别和语义理解,现在这方面开源的东西非常多,做通用的语音识别不是很难。


在我们场景中,要解决各种环境噪音的问题,可能骑手并没有说话,但旁边有些噪音,车的噪音或者别的噪音,甚至路上正在放一个歌,都会被识别为是骑手在说话,所以 VAD(静音检测)方面需要做很多工作。


另一个基本的组件是 NLU,自然语言理解。举个例子,骑手要给尾号 6551打电话,首先系统要知道,骑手的意图是要打电话,后面要调起打电话的操作;其次要知道打电话的对象是谁,是用户,而不是商户,这就要找出用户信息;第三,要做检测,比如骑手已经送完某个订单,再打电话可能是错误操作,需要提醒骑手。



即时配送场景是一个典型的时间序列问题。从上面的图可以看出,场景包含前后关联,一个骑手历史的行为和决策会影响现在,同时现在的决策和行为会影响未来,这是个典型的时间序列问题。


场景识别要解决的两个主要目标,一个是事件预测,要知道下一时刻大概会发生什么事情,比如骑手是不是已到商家,商家是不是已经出餐;另一个是时机预测,未来要打电话,到底什么时候打更合适?


为了更好的说明,我举个打电话的案例。



首先,要判断是否需要打电话,如果在不需要的场景也频繁提醒打电话,对骑手和用户都是骚扰。上图列举了不同地址类型下骑手打电话的比例,可以看到,像在企业和写字楼里面比例很高,但是住宅区就很低了,因为在住宅区,很大概率用户都是在家的。


其次,要针对每一个小区和楼宇类型,给一个合适的打电话时机,即提前多久打电话,对骑手和用户是最好的体验。打电话太早,用户在楼下等骑手,体验比较差。 打电话太晚,骑手在楼下等用户,效率太低。我们有精准的骑车轨迹数据,我们知道针对每一栋楼、每个小区,骑手在不同时刻打电话时会在楼下停留多久,所以可以画出一个曲线。合适的区间就在两条红线之间。


前两个主要是大数据分析,最后要实时决策,哪个订单,什么时刻需要打电话。这里就要根据骑手的实时数据了,包括订单状态、轨迹状态、环境情况等等,结合前面的大数据分析进行实时的预测骑手下一个配送地点和配送任务,并在合适的时机通过语音助手给出提醒。


具体到实现方面,场景识别需要三方面的技术:骑手轨迹挖掘、机器学习和数据挖掘。



先介绍一下轨迹,我们每天能有几十亿次的定位数据,进而可以基于这些数据做很多事情。



第一,可以精准知道 A、B两点间最好的导航方式,相比第三方地图,可以挖掘到 A和 B间可能有可能有更好的骑行通过方式。


第二,光有轨迹数据还不够,我们还需要解决室内定位问题,室内 GPS定位已经不够用了,需要新的技术体系。比如 WiFi定位,同时还需要设计硬件,比如在商家部署硬件,判断骑手是否到店。


第三,传感器的使用,无论在室内还是在室内时候,我们不但要知道骑手的精准定位,还要知道运动方式,比如是停留、步行、骑行,是爬楼还是坐电梯,这些信息不但判断骑手在到底做什么。而且能够精细刻画配送难度,在定价和调度上非常有价值。


我们可以通过骑行轨迹来修正导航和定位。来看两个例子。



第一个例子(左侧)用户在下单时定位的分布,因为大家在室内下单,定位偏离是非常大的。但通过骑手轨迹的修正,实际上大概只有四个点,每个点可以认为是这个这栋楼的一个门口,这大幅提升了用户的定位精度,让骑手配送更容易。


第二个例子(右侧)通过骑手轨迹对 AB两个点的骑行路径进行修正,上图中轨迹分析发现了更短路径,穿过小区更节省时间;下图中,原地图导航要跨过中间过街天桥,但通过轨迹发现更多骑手是绕行通过,这才更符合真实的情况。


下面介绍一些机器学习相关技术,主要是应用在各种时间预估层面。



只有高精度的 ETA(预计到达时间)预估,这样才能更加准确的预测骑手行为,我们会做三个维度的精细预估,包括平面的配送时长、上下楼时长以及商家出餐时长。这样才能比较全面和精细的刻画骑手的配送过程。


为此,我们做了很多基础工作,比如实时特征平台,机器学习平台,包括深度学习在内模型等各种机器学习相关工作。同时我们还会做比较精细的配送知识图谱建设工作,比如精细化地址解析。



地址对配送来说是非常重要的信息,通过 NLP和地图搜索的方法,解析成层次结构,对分析商圈、楼宇维度的画像非常有帮助。我们把一个地址分解为四个层次,小区、楼号、单元号和楼层等。其中要解决很多实际问题,比如用户填写的信息完全不标准、存在歧义等问题。


做了这些工作之后,能实际产生的效果还是很有意思的。我们通过“上下楼时间”这个具体场景来进行分析。



第一张图,是不同楼宇的上下楼时长,左侧两个是厦门的两个楼宇的时间,右侧两个厦门平均值和全国的均值。可以看到,不同楼宇的上下楼时长还是存在很大差异,无法简单利用城市或者全国维度的均值进行替代。


第二张图,是不同楼层的上下楼时间,从 B2开始到 8楼。有个很有意思的是,上下楼时长与高度不是线性关系,大概在二楼、三楼和四楼时,相隔的时间很长,但是到了五楼、六楼、七楼,时间差就很小了。原因很简单,楼层较低时,骑手可能会选择爬楼。高层则选择乘电梯。不同楼层之间停留时间很短,越往上时间间隔越小。


第三张图,是不同城市的上下楼时长分布,最有意思的是黄色的线,也就是重庆的整体上下楼时长明显偏长。因为重庆是山城,房子经常在半山腰上,与平原比起来其上下楼的难度当然更大。


整体效果


上面整体介绍了语音助手依赖的场景识别技术,现在介绍一下语音助手的整体效果。首先语音助手提供了四个核心功能,包括定制耳机、语音交互、场景识别、智能引导等。



为什么要定制耳机呢?在骑手的使用环境中,需要克服很多噪音,很难通过软件和程序去做,而必须通过硬件去做。所以我们和厂商进行合作,定制去噪效果好的硬件。



第二个功能是语音交互,它可以在派单、查询、取餐、拨打电话等配送全流程中实现语音交互,骑手整个过程中不需要看手机,只要耳机提醒就可以完成智能配送。



第三个是智能引导功能,包括安全驾驶提醒,信息播报,任务地图引导等,主要是让骑手行驶更加安全,提供全面的信息服务,让骑手配送更加方便和高效。



下图是智能语音在线下推广中的一些实际数据。



蓝色的线是使用语音助手的骑手的操作次数,绿色的线是不使用的操作次数。可以看到,操作次数明显下降。但是还没有降为 0,有两个原因:骑手在静止状态下,不需要使用语音助手;有些骑手的蓝牙耳机还没有下发到位。再来看下一张图:



左图是骑手接单时间时长分布,越往右骑手接单的时间越长,用户体验越差。绿色的线就是之前骑手手动接单的一个分布,长尾情况比较严重,通过语音接单,接单时长明显向左侧靠拢,整体接单时长明显缩小,比较好的提升了用户体验。


右图是骑手在用户交付外卖所花费的时间的比例,横轴是骑手在楼下等待用户的时长,越往右,骑手在楼下等用户的时间越长。通过语音的提醒后,可以明显降低骑手长时间等待的情况,节省了大量骑手的时间。


写在最后


总结一下,语音识别和语音助手在实际落地过程中面临很多挑战,而且大多和场景有关系,场景识别非常重要,甚至比语音识别更为重要。


因为语音识别现在已经是比较通用的技术了,而且有很多专业厂商提供服务,硬件也是如此,进行定制化相对比较容易。因此目前做一个软硬件结合的语音助手,从基础技术来讲都不是问题,想做一个 DEMO并不会存在太大的技术障碍。


反而在具体的业务中,如何结合业务场景,把语音助手落地,才是我们需要真正考虑的。也就是说,如何将语音助手从“能用”做到“好用”,再做到让用户“愿意用”,这些才是未来语音助手面对的真正挑战。


语音识别和语音助手在实际落地过程中有很多挑战,而且和场景有关系,场景识别比较重要的,甚至比语音识别更为重要,因为语音识别现在已经是比较通用的技术了,如何结合业务场景,把语音助手落地、用好,可能是未来一段时间的挑战。


悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;