在 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并不會存在太大的技術障礙。