0
本文作者: 思佳 | 2017-05-25 18:08 |
雷鋒網(wǎng)新智駕按:“機器學習其實沒有多么高大上”,在騰訊位置日前召開的人工智能(AI)助力LBS應(yīng)用主題沙龍上,騰訊地圖導(dǎo)航技術(shù)總監(jiān)江紅英如是說。就在兩天前,AI還借AlphaGo的圍棋大戰(zhàn)沖擊著人們的眼球,但事實上,在更尋常的城市日常運轉(zhuǎn)中,人工智能技術(shù)已經(jīng)為效率的提升做出了相當大的貢獻,這些應(yīng)用包括且不限于物流運輸、導(dǎo)航、路況預(yù)測等等。
江紅英是騰訊地圖導(dǎo)航技術(shù)的研發(fā)負責人,過去幾年里,他們的團隊逐漸使用AI進行算法優(yōu)化,并不斷轉(zhuǎn)變思維,讓AI技術(shù)為日常出行和物流服務(wù)。此次演講中,江紅英分享了AI如何助力ETA(預(yù)計達到時間)計算更加智能化,雷鋒網(wǎng)新智駕將內(nèi)容做了不改變原意的刪減整理,以饗讀者。
我負責騰訊位置服務(wù)的導(dǎo)航研發(fā)工作,自2015年起,我們的團隊逐漸將AI技術(shù)引入到導(dǎo)航服務(wù)中解決問題,例如實時路況預(yù)測、道路通行時間計算,再如從A點到B點,我們會計算很多條路線,并進行優(yōu)先級排序,這其實是一個很大的話題。此次我以ETA計算為例,分享過去兩年來我們將AI技術(shù)引入導(dǎo)航服務(wù)中的一些經(jīng)驗。
ETA指“預(yù)計到達時間”。坐過飛機的人都知道,機場有很多電子信息牌,牌子上會顯示航班的動態(tài)信息,包括航班出港時間ETD,以及航班到達時間ETA。在交通運輸行業(yè),ETA其實是一個很常用的概念。使用地圖時,導(dǎo)航規(guī)劃線路后會給出一個預(yù)計多長時間到達的數(shù)據(jù),這便是ETA。既然是時間的預(yù)估,就會涉及到預(yù)估準確與否的問題,對于這個準確度,我們有一個衡量指標,叫MAPE,即平均絕對百分誤差,它表征的是ETA和用戶實際到達時間之間的偏差。
對于個人用戶而言,ETA可以幫助人們更好地安排出行時間。對于網(wǎng)約車、物流等涉及車輛、人力調(diào)度的問題,ETA都可以幫助進行輔助決策。
我們目前理解的人工智能通常是指大數(shù)據(jù)+機器學習。在我看來,這其實是一種水到渠成的狀態(tài),而不是為了用而用的。
2000年的時候,我們開始做圖像識別方面的工作,當時使用的就是機器學習算法,當時并沒有覺得有什么高大上的,因為那個領(lǐng)域機器學習算法是非常普通和自然的事情。如今,經(jīng)過多年的發(fā)展,機器學習在圖像、語音和自然語言處理方面都有了更成熟的發(fā)展和應(yīng)用,但在很多傳統(tǒng)領(lǐng)域還處于比較初步的階段,交通領(lǐng)域就是其中之一。個中原因有以下兩點:
一方面,作為十分傳統(tǒng)的行業(yè),交通領(lǐng)域擁有傳統(tǒng)的計算模型和幾年甚至十幾年的積累,AI模型對于傳統(tǒng)模型而言是一種顛覆、一種舍棄,它不是繼承式的發(fā)展,這種改革是需要很大勇氣的。
另一方面,傳統(tǒng)領(lǐng)域在大數(shù)據(jù)積累的意識上相對薄弱,而在數(shù)據(jù)相對不足的情況下,AI模型初始的效果未必能超過傳統(tǒng)模型。
但是,即便如此,我們還是要積極地擁抱AI技術(shù)。以ETA為例,平均誤差當然是越低越好。舉個例子,我們當時使用傳統(tǒng)模型計算ETA,平均誤差(MAPE)差不多做到19.5%,并已經(jīng)到了瓶頸,很難再突破。而當我們引入AI模型后,第一版上線后,平均誤差就有一個斷崖式的下降,直接到17%,到目前,我們的平均誤差基本可以控制在15.3%以內(nèi)。
AI模型為什么能取得更好的效果?
這個問題可以從多個維度解讀,例如AI有很嚴謹?shù)臄?shù)據(jù)模型,有大量歷史數(shù)據(jù)等等。但作為一個“碼農(nóng)”,我覺得我應(yīng)該從代碼的角度來解讀一下。
如上圖所示,上面的方框中是傳統(tǒng)計算模型中計算“軌跡轉(zhuǎn)向”的代碼,這部分代碼占整個代碼量的5%;下面的方框中是機器學習模型中訪問一顆決策樹的代碼,這部分代碼占整個代碼量的50%。
同樣是ETA計算,從代碼量上,機器學習模型是傳統(tǒng)模型代碼量的1/10,這個代碼量差距的背后有怎樣的邏輯呢?機器學習會通過大數(shù)據(jù)的訓(xùn)練,把一些程序邏輯轉(zhuǎn)化成配置邏輯。碼農(nóng)定律之一,就是“配置由于編碼”,如果我能夠通過配置去改變整個程序的邏輯,我就不會用編碼的方式去實現(xiàn)。
第二,機器學習會把線上的一些邏輯轉(zhuǎn)化成線下的訓(xùn)練,如果我在線下能夠?qū)崿F(xiàn)一種邏輯,我就不會在線上去完成,這也是作為碼農(nóng)良好的操守。AI通過這兩個轉(zhuǎn)化,遵守了碼農(nóng)定律,所以得到一個更好的結(jié)果。
剛才說數(shù)據(jù)和特征決定了機器學習的上限,所以特征的提取、特征的使用,對于機器學習來說是非常重要的。
一般來說,這個過程會分三個步驟來操作:
第一步,對整個業(yè)務(wù)進行屬性的劃分,可以劃分為物理屬性、實時屬性、挖掘?qū)傩院捅O(jiān)控屬性。我們以用戶畫像為例,在用戶畫像里,諸如用戶的年齡、性別、住址等,都屬于物理屬性,它是簡單的、直接的、穩(wěn)定的;而諸如一個用戶過去一小時內(nèi)瀏覽的網(wǎng)頁內(nèi)容,就是實時屬性;用戶這些行為的日積月累,會生成歷史數(shù)據(jù),對歷史數(shù)據(jù)的統(tǒng)計結(jié)果就是挖掘?qū)傩裕欢鴮σ粋€服務(wù)進行監(jiān)控,包括用戶量、訪問量等等,這就屬于監(jiān)控屬性。
第二步,把所有屬性進行量化。還以用戶畫像為例,假設(shè)用戶畫像中有一個屬性叫“用戶的顏值”,我往這里一站,交給機器,我的顏值屬性設(shè)為高,機器會很蒙圈,因為它不知道“顏值高”是什么意思。但是如果換一個說法,比如我的顏值等于90,機器這時候會一臉鄙視,因為這個顏值的上限可能是500分。但是,不管是90分還是500分,數(shù)字化的東西使得機器能夠理解、能夠分析、能夠觀察。所以,這個前提非常重要,我們要把所有的屬性都量化成數(shù)字,量化之后的結(jié)果稱之為指標。
第三步,要對指標進行分析,分析與業(yè)務(wù)目標之間的關(guān)系。對于這部分操作有專門的一門課程,叫《數(shù)據(jù)分析》,我們把相關(guān)性高的指標轉(zhuǎn)化成特征,用在我們的訓(xùn)練和服務(wù)中,對那些相關(guān)性比較弱的,會繼續(xù)進行觀察。
舉一個ETA將監(jiān)控指標轉(zhuǎn)化成特征的例子。比如,ETA的計算很依賴于實時速度,但是實時速度是從路況中提取出來的,路況計算依賴于實時的數(shù)據(jù)源。所以,我們一開始對實時數(shù)據(jù)源是有一個監(jiān)控。
最初的監(jiān)控目標不是為了ETA,是因為我們要監(jiān)控數(shù)據(jù)源,如果它發(fā)生了問題,比如數(shù)據(jù)不穩(wěn)定,我們會通知數(shù)據(jù)提供商他這個數(shù)據(jù)有問題,讓他們趕緊解決,僅此而已。但是有一天,我們突然發(fā)現(xiàn)ETA的bad case跟我們的數(shù)據(jù)源監(jiān)控指標有一定的關(guān)系,兩者之間的波動情況有點相近,所以,我們就把這個指標拿過來進行相關(guān)性分析,加入到我們的特征里,上線后發(fā)現(xiàn)bad case率果然有所下降。也就是說,所有的屬性都要量化,量化以后不要輕易舍棄,因為我們不知道什么時候某一個指標就有用了,就會被我們采納。
一般情況下,AI的流程是這樣的:它會在一個大數(shù)據(jù)集上進行訓(xùn)練,得到學習模型F,將提取的m個特征施加在F上,得到一個預(yù)測的結(jié)果y,y就是我們要持續(xù)優(yōu)化的目標。
初始的時候,我們一般會定義一個可觀察、可解釋的簡單目標,隨著模型應(yīng)用的深入,我們再根據(jù)大量的bad case去分析和優(yōu)化這個目標,最后,要得到一個合適的訓(xùn)練目標。
這個訓(xùn)練目標的要求是什么?
要盡量的簡單,這個比較好理解;還有一個很難做到,就是要兼顧多目標,因為在實踐過程中,我們發(fā)現(xiàn)我們對模型的要求并不是單一的,我們經(jīng)常既要準確率(Precision)高,也要召回率(Recall)高,這就是多個目標。比如在ETA中,我們希望它的平均誤差很小,同時也希望bad case很少,但是這些目標之間有時候會有沖突,但有沖突不代表不可解,還是能夠通過優(yōu)化目標來找到一些解決的辦法。
看一下ETA在目標優(yōu)化方面的工作。ETA是預(yù)計到達時間,而ATA是用戶實際到達所用的時間。很好理解,我就拿ATA作為我的訓(xùn)練目標,讓ETA盡可能跟它逼近。這個目標非常簡單、直接。
后來,我們發(fā)現(xiàn)了ETA的核心特征。因為你要算的是時間,跟距離、跟速度必然有關(guān)系,而其核心特征跟它之間是一種乘積的關(guān)系。我們的模型是GBDT,它的結(jié)果是多棵樹的加和關(guān)系,加和還有可能出現(xiàn)一個負數(shù),對ETA來說,你花費的時間為負數(shù)肯定是不可接受。所以,我們做了一個對數(shù)計算,將乘積關(guān)系變成加和關(guān)系,同時,因為有指數(shù)計算,也保證了不會出現(xiàn)負數(shù)。
之后,我們又發(fā)現(xiàn)在長距離、長時間這一塊出現(xiàn)bad case的比例相對較高,而長距離和長時間的軌跡在我們的訓(xùn)練樣本中比較長尾,所以這是長尾引起的bad case。在ETA計算中,長時間和長距離一般是同時出現(xiàn)的,即距離越長,花費的時間越長,反過來說,這就保證了速度是相對穩(wěn)定的。所以我們改成以速度為訓(xùn)練目標,長尾現(xiàn)象就會減少很多。
在其他條件不變的情況下,通過對目標的不斷優(yōu)化,我們既降低了平均誤差,也降低了bad case率,同時兼顧了多個目標。
在我們的訓(xùn)練數(shù)據(jù)里,大量的數(shù)據(jù)肯定會存在噪音。一般來說,機器學習的第一步會做一個數(shù)據(jù)的預(yù)處理,對數(shù)據(jù)進行清洗,把噪音數(shù)據(jù)過濾出來,直接拋棄,這個時候我們會發(fā)現(xiàn)訓(xùn)練數(shù)據(jù)和我們的測試數(shù)據(jù)之間的分布不太一樣,容易產(chǎn)生過擬合的現(xiàn)象。對此,更好的一種辦法,是把這些噪音數(shù)據(jù)進行修正,變廢為寶,重新利用起來,跟我們的測試數(shù)據(jù)盡量保持分布上的一致,也可以得到更好的效果。
舉一個ETA數(shù)據(jù)改造的例子。一個司機原本按正常軌跡行駛,到了終點位置的時候,他來回繞了很多圈,這其實是因為他在找停車位。像這種case是日常中特別常見的,因為你到了一個目的地附近,就會來回尋找停車位,尤其在北京這種尋找停車位困難的情況下。
一開始,我們定義了一些噪音數(shù)據(jù),遇到類似數(shù)據(jù)直接扔掉,在后續(xù)的訓(xùn)練過程中,我們發(fā)現(xiàn)跟實際的數(shù)據(jù)之間還是有一些差異。這種情況是比較常見的,這個數(shù)據(jù)被扔掉后,會導(dǎo)致整個訓(xùn)練數(shù)據(jù)的偏差比較大。所以,后來我們把這樣的噪音數(shù)據(jù)先挑出來,進行一個截斷,繞圈的部分拋棄,剩下部分提取真值,把軌跡加入到訓(xùn)練樣本中。
機器學習神奇的地方在于,你將一堆數(shù)據(jù)給它、一堆特征給它,它可以炒出一盤好菜。而困難的是,做了一些優(yōu)化以后,很難證明我在這方面做的事情有效,也很難說清楚到底哪個特征的優(yōu)化起到了更好的作用。所以,驗證方面是挺費勁的事情。
很多時候,我們會同時優(yōu)化多個特征,如果上線以后效果變得更差了,都不知道是哪個特征引起的,我們之前被這種情況坑過,因為發(fā)現(xiàn)上線以后結(jié)果變差了,但是線下每個訓(xùn)練的結(jié)果都很好,上線變差了以后沒有辦法解釋,只能先回滾,這對開發(fā)人員來說還是很受打擊的。后來,我們就采用雙模型的方式,我們同時運行著兩個模型——新模型和老模型,兩個模型同時計算,遇到結(jié)果和預(yù)期不一致的時候,可以做diff(一種比較命令),很快能定位到問題。
當然,并非所有特征的上線都需要走這樣一個流程,因為開銷比較大,同時要運行兩套數(shù)據(jù)和兩套模型。目前,我們只是對一些比較重要的特征,或者是特別難以驗證的特征進行雙模型操作,如ETA的實時速度,本身它的真值就很難采集到,優(yōu)化的效果也特別難驗證。對于這樣的一些特征,我們會采用雙模型的方式,同時兩套跑著,同時比較,有問題就比較好定位。
總結(jié):
第一,我們要在態(tài)度上積極擁抱AI技術(shù)。AI模型對于傳統(tǒng)模型來說,大部分領(lǐng)域里都有一種碾壓式的效果,提升特別明顯,需要我們有勇氣去擁抱它。
第二,要有量化一切的意識。所有的數(shù)據(jù)都要量化,說不定哪一天可能就用上了。
第三,要不斷優(yōu)化我們的目標。因為你的目標偏了,最后的結(jié)果肯定也會有偏,所以需要不斷優(yōu)化和迭代訓(xùn)練目標。
第四,數(shù)據(jù)如此重要,我們不能隨意拋棄。有些噪音數(shù)據(jù)也是有價值的。
第五,對于一些驗證上的問題,即訓(xùn)練效果的分析,可以采用雙模型的方式來解決。
會后,江紅英告訴雷鋒網(wǎng)新智駕,對于自動駕駛技術(shù)的研發(fā),目前騰訊內(nèi)部有一個專門的“無人駕駛實驗室”在進行,而她帶領(lǐng)的團隊目前所做出的努力,也隨時準備為后續(xù)自動駕駛模型的一些技術(shù)和應(yīng)用服務(wù)。
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。