人工智能在餓了么的應(yīng)用實(shí)踐| DevFest 2017 實(shí)錄

作者 | 張浩

AI前線出品| ID:ai-front

關(guān)于我

大家早上好,很高興有機(jī)會(huì)在這里分享。我對(duì)谷歌比較熟悉,我曾經(jīng)在谷歌工作一段時(shí)間。之前在硅谷的時(shí)候,那個(gè)時(shí)候谷歌在我們對(duì)面,當(dāng)時(shí)很羨慕谷歌公司的食堂,工程師文化和特別福利,我覺得在硅谷,這個(gè)不僅是獨(dú)樹一幟,而且在全世界作為工程師的話這里是一個(gè)夢(mèng)想之地,我特別榮幸世界上有谷歌這樣偉大的公司。前面一位分享講到了 TensorFlow,我一會(huì)兒不會(huì)講具體的工具,但是我會(huì)著重講這些工具的應(yīng)用,比如在“餓了么”就是大量應(yīng)用了 TensorFlow.

我今天主題是關(guān)于人工智能在 “餓了么” 的應(yīng)用實(shí)踐,所以今天主要是三部分,第一是 “餓了么” 簡(jiǎn)介,第二是 “餓了么” 的應(yīng)用場(chǎng)景,第三講運(yùn)籌優(yōu)化與機(jī)器學(xué)習(xí)的應(yīng)用實(shí)例,這部分會(huì)講一些算法。

關(guān)于餓了么

剛才主持人提到,在座所有人大部分都點(diǎn)過外賣,現(xiàn)在外賣成了中國(guó)吃飯的方式,點(diǎn)外賣是什么樣的量級(jí),說起來大家嚇一跳,中國(guó)最大領(lǐng)域是電商,淘寶、京東,其次就是出行行業(yè),滴滴、UBER 緊接是共享單車,這幾家公司加起來是一天兩三千萬訂單量左右。在外賣行業(yè)大家都知道,這個(gè)行業(yè)到今天為止已經(jīng)每天 2500 萬單,所以可以想象這個(gè)行業(yè)在飛速發(fā)展。為什么數(shù)據(jù)和算法起到那么大的作用,因?yàn)槲覀兌贾涝诨ヂ?lián)網(wǎng)+ 的情況下,有這么大的單量,至少是在數(shù)據(jù)行業(yè)我們有非常多事情要做。



第二部分就是大家也可以看見這張圖就是騎手小哥拿著箱子,要么走路,或者騎著電動(dòng)車。其實(shí)這就是本地物流平臺(tái),為什么要強(qiáng)調(diào)本地,因?yàn)槲覀冃袠I(yè)特殊性跟其他物流行業(yè)不一樣,他們幾天時(shí)間到達(dá),我們這個(gè)行業(yè)的本地物流一定是希望 30 分鐘送到手里,所以我們?cè)O(shè)計(jì)這個(gè)架構(gòu)的時(shí)候就有很大的挑戰(zhàn),這個(gè)有一些不同,一會(huì)兒講到算法模型的時(shí)候就清楚了,我們是做一些本地的物流,所以時(shí)間上有非常嚴(yán)格的限制。

到今天為止的話,我們配送員已經(jīng)是 300 萬,平均每天在任何時(shí)刻全國(guó)都有 30 萬到 40 萬的騎手活躍線下,隨時(shí)準(zhǔn)備接單,這個(gè)跟滴滴是一樣的運(yùn)營(yíng)模式,現(xiàn)在已經(jīng)覆蓋了全國(guó) 2 千多個(gè)城市。

關(guān)于 AI @ 餓了么



這個(gè)跟大家簡(jiǎn)單過一下:首先是淘寶,我相信大部分都會(huì)用淘寶,淘寶是大家在線上買東西最常用的一個(gè)平臺(tái),里面主要是以用戶和商戶為主,線下大家知道是同城當(dāng)日達(dá)更多定單是走開放平臺(tái),大家下了定單送到大家的手里,這個(gè)是三通一達(dá),也可以菜鳥自己,或者順豐,這個(gè)是開放平臺(tái),最重要的一點(diǎn)是時(shí)效性,通常以天來計(jì)算,超時(shí)不會(huì)有所謂的賠償,這個(gè)是淘寶的情況。

我們看攜程,它可以定旅館,酒店,線上以用戶和商戶為主,不會(huì)有線下訂單的。

跟外賣行業(yè)特別接近的就是滴滴,其實(shí)在國(guó)外優(yōu)步也做的非常好,從業(yè)務(wù)形態(tài)來講,像滴滴和外賣是非常接近。滴滴線下線上始終是用戶和司機(jī),定單形式也是眾包的形式,要么通過加盟商,要么通過司機(jī)網(wǎng)上注冊(cè)來承擔(dān)運(yùn)力,超時(shí)也不會(huì)懲罰司機(jī),因?yàn)檎l也不會(huì)預(yù)料到會(huì)不會(huì)出現(xiàn)車禍,這個(gè)時(shí)效沒有保證,所以說它和餓了么是極其相似的。最后提到 “餓了么” 和外賣行業(yè)。

首先線上以用戶和商戶為主,線下訂單部分比較多,藍(lán)色騎手有一部分是 “餓了么” 的員工,就是自營(yíng),還有團(tuán)隊(duì)和加盟商的形式,當(dāng)然還有一種是眾包,比如說今天開一個(gè)會(huì),下午還有四個(gè)小時(shí),我可以送幾單,這是一種眾包的形式。時(shí)效性以分鐘來計(jì)算,我們的目標(biāo)其實(shí)在很長(zhǎng)時(shí)間已經(jīng)做到了,全國(guó)平均半個(gè)小時(shí)可以把訂單送到手里,還有超時(shí)賠付,如果 30 分鐘之后超過 10 分鐘沒有到,有一個(gè)紅包的賠償,超時(shí)賠付的壓力是比較大的,不過這樣對(duì)客戶來說算是一種服務(wù)不足的補(bǔ)償。


根據(jù)上面所述,我們進(jìn)入了一個(gè)大的框架,就是在外賣這個(gè)行業(yè)是三個(gè)大東西,一個(gè)是機(jī)器學(xué)習(xí),運(yùn)籌優(yōu)化其實(shí)也是跟機(jī)器學(xué)習(xí)密不可分的。講到其中運(yùn)籌優(yōu)化,大數(shù)據(jù)作為運(yùn)籌優(yōu)化的基礎(chǔ)起到了非常關(guān)鍵的作用,現(xiàn)在大家看這個(gè)圖挺有意思,我會(huì)多花兩分鐘講一講在業(yè)務(wù)中的算法問題,大概有三個(gè)層面。底層的外賣行業(yè)希望 30 分鐘把食物送到手里,不可能送到二十或者三十公里之外,除非你會(huì)飛,否則半個(gè)小時(shí)不可能送 10 公里。基于這種情況,所有行業(yè)都是基于當(dāng)前打開 APP 定位,定位可能 3 公里或者 5 公里的半徑,LBS 保證在運(yùn)營(yíng)商做各種推薦或者搜索為基礎(chǔ),再往上兩層就是機(jī)器學(xué)習(xí)和優(yōu)化。所以現(xiàn)在來具體講一下這三部分。

第一:交易

大家可以看一下中間這個(gè)模塊是用戶商戶分層,推薦搜索以及智能補(bǔ)貼,這幾個(gè)大的方向是任何電商都必須做的。


在有很精細(xì)的用戶畫像體制上,我們希望對(duì)用戶和商戶的生命周期做嚴(yán)格的管理,在這個(gè)基礎(chǔ)上我們做相應(yīng)的推薦、搜索、補(bǔ)貼,比如說有一個(gè)用戶進(jìn)入沉睡期,我們會(huì)通過一定的方式對(duì)客戶進(jìn)行刺激。

第二:線下

當(dāng)交易行為發(fā)生時(shí),我們希望 30 分鐘將外賣送到用戶手里,這里面涉及到機(jī)器學(xué)習(xí)的規(guī)劃,我會(huì)詳細(xì)講智能的調(diào)度,也會(huì)詳細(xì)講到出餐時(shí)間和送餐時(shí)間的預(yù)估,以及動(dòng)態(tài)定價(jià)等這幾個(gè)模塊。智能調(diào)度是調(diào)度的一部分,我們 30 分鐘包括了準(zhǔn)備的時(shí)間和路上的時(shí)間,甚至保證了送到樓下,等電梯到你手上的時(shí)間等等,所以 30 分鐘有很多不可預(yù)估的東西。那么壓力平衡是什么意思?大家都知道,線上交易和我們物流是矛盾的,對(duì)于線上交易來說我們當(dāng)然希望訂單越多越好,我們希望有上千萬的用戶一下子幾秒鐘進(jìn)來。但是 30 分鐘內(nèi)把訂單全部送出去,這個(gè)是不太可能一下子解決的問題,為了達(dá)到壓力平衡,就要保證交易和物流、配送等保持平衡,既達(dá)到交易質(zhì)量,也不損失用戶的積極性。

第三:底層

講到這兩個(gè)之后就是一些底層的東西,現(xiàn)在讓我們看上一張圖,左邊包括選址推薦等等,剛才講到配送是本地,當(dāng)一個(gè)商家定下準(zhǔn)備配送的地方就會(huì)畫一個(gè)圈,比如說我送一個(gè)圓圈或者六邊形,這個(gè)不是隨便畫的,首先有可能這個(gè)地方是高速路或者高架橋,不是每個(gè)人平臺(tái)都是一樣,有的用戶也有可能老是定便宜訂單,我們?cè)诰W(wǎng)格和站點(diǎn)規(guī)劃的時(shí)候會(huì)考慮所有因素,這個(gè)涉及很多運(yùn)籌優(yōu)化的問題,最后一個(gè)例子就會(huì)講到選址和網(wǎng)格規(guī)劃的問題。簡(jiǎn)單講一下我們?nèi)齻€(gè)部分包含了我們?cè)谌斯ぶ悄芊矫嫠幸恍﹪L試,這對(duì)我們業(yè)務(wù)是非常重要的。

關(guān)于運(yùn)籌優(yōu)化與應(yīng)用實(shí)例

這一部分我會(huì)分兩種來說,分別是機(jī)器學(xué)習(xí)的應(yīng)用案例和機(jī)器學(xué)習(xí)應(yīng)酬優(yōu)化的案例。

案例 1 : 出餐時(shí)間預(yù)估

第一個(gè)是出餐時(shí)間預(yù)估,我在這里用滴滴做比較,什么是等待時(shí)間預(yù)估,比如我們?cè)诘蔚螆?chǎng)景下下了一個(gè)訂單,比如說我想去浦東機(jī)場(chǎng),它會(huì)告訴你這個(gè)車離這里兩公里,3 分鐘會(huì)到,3 分鐘就是等待時(shí)間預(yù)估?!梆I了么” 相當(dāng)于下了一個(gè)單,大概 20 分鐘才能做好,我希望來的早不如來的巧,作為我平臺(tái)騎手剛好在20分鐘就到,如果早了騎手等在那兒是浪費(fèi),但是去晚了,就可能訂單超過了時(shí)間。






最后現(xiàn)在用的方法是深度學(xué)習(xí),我們是用 LSTM,右邊這圖大家可以看一下這個(gè)文章。我們通過時(shí)間相關(guān)性把預(yù)測(cè)做的更加準(zhǔn)確,毫無疑問出餐時(shí)間一定會(huì)跟過去訂單有關(guān)系,這個(gè)不用解釋,但是為什么跟未來有關(guān)系,我們預(yù)估未來 3 到 5 分鐘有新的訂單,但是跟現(xiàn)有的訂單有共同之處,有可能是同樣的菜品,有可能是共同的地方,同樣的菜品對(duì)廚房是一個(gè)訂單,可以把菜一起做,我們學(xué)到了,通過這個(gè)模型也可以捕捉這些特征,對(duì)訂單分配有一定的幫助,同樣對(duì)訂單打包也有一定的幫助。

案例 2 :行程時(shí)間預(yù)估

行程時(shí)間的預(yù)估就是這樣,當(dāng)訂單完成了以后,騎手把訂單拿到手里,他會(huì)跑到辦公室或者家里也好,這個(gè)是行程時(shí)間的預(yù)估,滴滴從 A 點(diǎn)到 B 點(diǎn),交通方式肯定就是車,而且有大量的地圖數(shù)據(jù),像高德或者谷歌地圖或者百度地圖,這些數(shù)據(jù)會(huì)實(shí)時(shí)上傳給服務(wù)器。


在這種交通情況預(yù)測(cè)已經(jīng)是比較準(zhǔn)確,相對(duì) “餓了么” 場(chǎng)景遠(yuǎn)遠(yuǎn)沒有那么多的信息,首先騎手是有可能步行,有可能走電梯,或者走上下樓梯,或者騎電動(dòng)車,或者換交通工具,這個(gè)直接造成了我們?cè)跀?shù)據(jù)搜集是極不準(zhǔn)確的,還有一點(diǎn)提到了在樓宇內(nèi)的交通復(fù)雜,這個(gè)數(shù)據(jù)很難獲取。我們上班的時(shí)候,餐廳和顧客都是在大樓里面,大樓里面沒有 GPS 信號(hào)或者不大好,我們收到的數(shù)據(jù)或者定位誤差高達(dá)幾百米。


所以提前時(shí)間預(yù)估,我們需要把軌跡建立起來,因?yàn)闀r(shí)間預(yù)估在高德地圖或者騰訊百度地圖是基于歷史數(shù)據(jù)的,我們第一步做的是歷史數(shù)據(jù)清洗,室內(nèi)定位不準(zhǔn)甚至完全缺失,這個(gè)情況下我們想了各種各樣的辦法,我們用 WIFI 信號(hào),GPS 信號(hào),或者大家互相定位最大程度減少定位缺失的問題,其次即使定位有了,它的位點(diǎn)也是有 GPS 軌跡,也是有很多的噪音,所以需要去噪音,所以需要去噪。我們通過定位的算法把相關(guān)的時(shí)間,把 O 點(diǎn)和 D 點(diǎn)合起來,最后進(jìn)行軌跡聚類。

案例 3 :智能分單





當(dāng)你給一個(gè)訂單,在騎手容量和成本固定的情況下,我們需要找到匹配的線路,每個(gè)訂單承諾時(shí)間是不一樣的,就是不能超時(shí)。默認(rèn)模式下, 一個(gè)騎手可以同時(shí)送 5 到 10 單, 每單都有嚴(yán)格的時(shí)效要求, 并且訂單在午高峰爆發(fā)式增加。

方案 1 就是車輛路徑規(guī)劃,輸入:訂單,騎手,容量,成本。

輸出:訂單和騎手間的匹配以及行走路線;

優(yōu)化目標(biāo):最小化時(shí)間或者行駛距離;



我們用了模擬退火算法,模擬退火算法 ( Simulated Annealing,SA )? 是基于 Monte-Carlo 迭代求解策略的一種隨機(jī)尋優(yōu)算法,通過賦予搜索過程一種時(shí)變且最終趨于零的概率突跳性,從而可有效避免陷入局部極小并最終趨于全局最優(yōu)的串行結(jié)構(gòu)的優(yōu)化算法。從理論上來說這算法具有概率的全局優(yōu)化性能,目前已在工程中得到了廣泛應(yīng)用,諸如 VLSI ,生產(chǎn)調(diào)度、控制工程、機(jī)器學(xué)習(xí)、神經(jīng)網(wǎng)絡(luò)、信號(hào)處理等領(lǐng)域就是用它來做訂單的分配,但是最后結(jié)果不是特別好,因?yàn)闀r(shí)間預(yù)估存在不準(zhǔn)備性,在路徑規(guī)劃的時(shí)候,先走 A 單還是 B 單,在時(shí)間一旦出現(xiàn)誤差的情況下,這個(gè)路徑規(guī)劃會(huì)非常差。




左下角是個(gè)矩陣,每一行是一個(gè)訂單,每一列是一個(gè)騎手,我們希望通過一些規(guī)則和一些機(jī)器學(xué)習(xí)的算法算出來,右邊是一個(gè)定單匹配的結(jié)果。



后來是 KM 算法,但是這個(gè)基礎(chǔ)框架界定了以后,還有很多工作量需要做。訂單實(shí)際上有相似性,因?yàn)橛唵问强梢源虬?,一個(gè)人稍微等幾分鐘,也許這個(gè)訂單出來跟那個(gè)訂單很相似的性質(zhì),就是去同一個(gè)地方,就可以把訂單給同一個(gè)人拿走。所以訂單打包和吸水是我們做的第一件事情,但是訂單靠什么規(guī)則在高峰期和非高峰期的時(shí)候是不一樣的,存在兩個(gè)方向的路和兩個(gè)方向的夾角不一樣的地方,所以定單匹配模型是在 2.2 版本之上做出來的,用機(jī)器學(xué)習(xí)通過歷史數(shù)據(jù)來訓(xùn)練,在這里我們也碰到一些挑戰(zhàn),由于在不同的站點(diǎn)配送員習(xí)慣不一樣,我們推廣的時(shí)候會(huì)遇到一個(gè)問題,在 A 站點(diǎn)大家覺得是 OK,但是在 B 站點(diǎn)不行,我們現(xiàn)在做到千站千面的東西,根據(jù)類似的站點(diǎn)歷史過去分擔(dān)一些情況,我們把這些模型用來做訓(xùn)練,做到類似的站點(diǎn)它有類似分單的方式。所以不會(huì)出現(xiàn)說你特別不喜歡這個(gè)分單的方式,多多少少有一點(diǎn)類似性,所以做到了 2.3 這個(gè)版本?,F(xiàn)在做的版本就是增強(qiáng)學(xué)習(xí),我們根據(jù)實(shí)時(shí)的情況來進(jìn)行動(dòng)態(tài)地調(diào)整。


餐廳選址就不詳細(xì)講了,我們自己其實(shí)也和商家開始合作開一些餐廳,我們都希望選最好的地方,餐廳覆蓋最多的用戶,菜品不一樣,用戶群不一樣,所以這個(gè)選址是很重要的。


The End


我今天主題是應(yīng)用實(shí)踐,我個(gè)人感受,我做機(jī)器學(xué)習(xí)做了十幾年,工作挑戰(zhàn)是來自于基礎(chǔ)數(shù)據(jù)的完整性和準(zhǔn)確性。剛才講到數(shù)據(jù)不準(zhǔn)確,餐廳不規(guī)則的情況,我們無法知道一些準(zhǔn)確的情況,我們花了大量時(shí)間來做基礎(chǔ)數(shù)據(jù)的調(diào)整。第二點(diǎn)我講到算法的提升和對(duì)人的行為的理解比較重要,因?yàn)樵谕赓u行業(yè)都需要人去執(zhí)行,以前人工分配通過打電話,有大量溝通在里面,現(xiàn)在機(jī)器一下子分?jǐn)偭耍麄冸y以理解,而且機(jī)器考慮全局最優(yōu)而不是局部最優(yōu),人是做不到這點(diǎn)。在算法提升和產(chǎn)品運(yùn)營(yíng)綜合起來,才能把這個(gè)事情最后推下去讓大家形成習(xí)慣。第三點(diǎn)優(yōu)化算法與機(jī)器學(xué)習(xí)在我們行業(yè)是相輔相成的,不僅是機(jī)器學(xué)習(xí),跟重要的是我們?cè)谶@么短時(shí)間怎么樣把人力分布最好,在最少的時(shí)間情況下把訂單完成。

謝謝大家!

如果您有想法的話,可在底部留言。謝謝!

-全文完-

關(guān)注人工智能的落地實(shí)踐,與企業(yè)一起探尋 AI 的邊界,AICon 全球人工智能技術(shù)大會(huì)火熱售票中,8 折倒計(jì)時(shí)一周搶票,詳情點(diǎn)擊:

http://t.cn/Rl2MftP

《深入淺出TensorFlow》迷你書現(xiàn)已發(fā)布,關(guān)注公眾號(hào)“AI前線”,ID:ai-front,回復(fù)關(guān)鍵字:TF,獲取下載鏈接!


-全文完-

關(guān)注人工智能的落地實(shí)踐,與企業(yè)一起探尋 AI 的邊界,AICon 全球人工智能技術(shù)大會(huì)火熱售票中,8 折倒計(jì)時(shí)一周搶票,詳情點(diǎn)擊:

http://t.cn/Rl2MGtT

《深入淺出TensorFlow》迷你書現(xiàn)已發(fā)布,關(guān)注公眾號(hào)“AI前線”,ID:ai-front,回復(fù)關(guān)鍵字:TF,獲取下載鏈接!


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容