天天看點

微軟亞洲研究院鄭宇:用人工智能進行城市人流預測

在貴陽「塊資料」實驗室的一塊大螢幕上,每一分每一秒都在進入新的資料,不停地預測每個區域有多少輛計程車進和出,這是微軟亞洲研究院一個基于雲計算和大資料的系統正實時運轉,貴陽計程車的資料實時上傳作為測試樣本,驗證模型的準确性和有效性。每點一個格子會跳出一個圖表,都能清楚知道整個城市某區域人群流動接下來十幾個小時會呈現什麼狀态,黑色的是已經發生過的計程車進出情況,綠色預測未來部分,藍色是昨天同一時間的情況。而同樣,任何人流預測資料來源,比如手機信号、地鐵刷卡記錄等,都可以通過該系統模型進行運算得到某地将有多少人進和出的結果,并預測到未來十幾個小時的城市人流情況。

微軟亞洲研究院鄭宇:用人工智能進行城市人流預測

「這個系統背後的模型研究,其目标是預測整個城市裡每個區域在未來時刻有多少人進、有多少人出,進而使得管理者能迅速了解每個區域的公共安全狀況,及時采取預警措施。」微軟亞洲研究院主管研究員鄭宇說,直接促使他下決心開展研究的是,2014 年新年夜那場發生在上海的踩踏事件,當時,鄭宇曾在微網誌上呼籲通過基于手機資料的城市異常檢測來避免踩踏悲劇。「如果在上海市踩踏事件之前,我們應用了這樣的系統,就可以提前給群眾發資訊,告知他們這裡會有多少人進來,提醒注意是否需要提前離開。」鄭宇說。

目前,該研究論文《Deep Spatio-Temporal Residual Networks for Citywide Crowd Flows Prediction》已經發表在 AAAI 2017,在鄭宇看來,除了具有推廣應用的社會價值,從技術層面講,「此前還沒有真正意義上為時空資料設計的深度學習算法,這是第一篇論述文章,而未來這個方向的研究還會有更深遠的發展。這個發展不是簡單的拿來 CNN、RNN 就用,一定是基于對時空資料深刻的了解,充分利用時空資料本身的特性。」在北京,鄭宇向《機器之心》解讀了這篇論文的研究方法、過程以及正在積極推進的應用方向。

「傳統的深度學習方法不能直接拿來用」

以往提及人流預測,通常會采取預測個人行為的方法,理想狀态下,隻要統計某個區域每個人去哪裡就能測算出該區域有多少人進、多少人出。但這樣的統計本身有很大的障礙,準确性很難保證,并且涉及隐私。除此之外,傳統方法還有一些基于實體學模型、動力學模型或是土木工程的經典模型等,但這些始終難以應對大規模的人流預測。

我們這套方法首先不涉及隐私,隻要進和出的資料并不需要知道哪個人進和出,然後把整個城市,比如北京劃分成兩千個格子同時預測,并不是一個個進行,它是一種整體性的預測。整體性預測的必要性在于,區域和區域之間具有相關性,不能單獨預測,在預測 A 的時候,其實預測 B 和 C 區域同樣可能産生影響,反之亦然。是以,把深度學習引入進來進行整體預測,與使用傳統方法有很大差別。

但同樣,我們在研究過程中面臨很多困難。首先,會影響人流的因素非常多,與區域裡前一個小時有多少人進和出,周邊區域甚至是很遠的地方有多少人進和出都有關系,比如上海的踩踏事件裡,不少人是從外地搭乘高鐵、地鐵或通過高速公路前往,并不通過周圍區域就直接到達了外灘。還有很多外部因素,包括天氣、事件都會導緻區域人流發生變化。更重要的是,在做預測時,人流具有時空屬性,即時間屬性和空間屬性,這種屬性很特别,它會導緻其他傳統的深度學習方法不能直接拿來用到預測上。

人流作為一種時空屬性資料有特定的屬性。一個城市有很多區組成,一個區有很多街道和社群,天然有層次感,這是空間的差别,在時間次元上,相鄰兩個時間點之間,交通量和人流量是一個平滑變化的趨勢,但周期性有明顯的差别,車流量、人流量是有一個往複的周期性,今天早晨 8 點和昨天早晨 8 點的車流量和人流量趨勢看起來很類似,但今天早晨 8 點和今天中午 12 點的流量差别就會很大,雖然它們之間隻隔了 4 個小時,而兩天早晨之間相隔了 24 小時,時間差更大卻更相似。這都是傳統視訊、圖像中不存在的特性,一般情況下,人不會看了五分鐘視訊又回去看第二分鐘的視訊,這種周期性是在時空資料也就是人流資料中特有的屬性,周期性也不是固定化的而是随着時間的變化呈現趨勢性上揚或下降,比如,天越來越冷,天亮的時間越來越晚,人出門的時間也越來越晚,是以早高峰也會越來越晚,是以周期和趨勢加在一起,使得時空資料和以前的圖像、視訊等資料完全不同,以往使用的方法就會失效。

如果我們直接使用傳統 RNN,要考慮周期性和趨勢性,輸入的資料必須很長,如果隻使用最近兩三個小時的資料,就無法展現周期性,也不可能展現趨勢性。要展現周期性至少需要 24 小時以上,而趨勢性甚至需要幾個月的資料,如果把 RNN 作為模型,這麼長的資料作為輸入,那麼 RNN 模型會變的非常大、非常複雜,最後很難訓練,效果也不會好。我們也和 LSTM 做了比較發現,我們資料用的幀數更少,結果反而更好。

「我們設計出一個特殊的網絡模型」

我們在北京市的計程車 GPS 軌迹上面做了驗證,大概用了約 3 萬多輛計程車長達 5 年的資料,同時我們也利用紐約公開的自行車租賃資料做了驗證。一方面,我們通過政府合作項目來擷取開放給我們的資料,另一方面,我們也要好好利用公開資料。再将這些瑣碎的資料轉變成有規律的、能夠對深度學習作為輸入的格式,通過空間的劃分和折射,變成一個二維矩陣,使它能夠作為深度學習模型的輸入。這個轉換過程很重要,涉及到不同資料之間的多元化融合,這裡需要一些時空資料經驗。

基于對時空資料深刻的了解,我們設計出一個特殊的網絡模型。在這個結構裡,我們隻需要抽取一些關鍵幀,比如說昨天同一時刻,前天同一時刻,其他時間我們可以不做輸入,大概隻要用幾十幀的關鍵幀作為輸入,就可以展現出我們幾個月裡所包含的周期性和趨勢性,使得我們的網絡結構大大簡化,但訓練的品質和效果卻大大提高,這是很關鍵的一點。

具體而言,我們把城市劃分成均勻且不相交的網格,比如劃分成一個個一平方公裡的網格,然後輸入人流資料(包括手機、計程車軌迹等)投射在網格裡面,計算出每個格子裡有多少人進和出。紅色越亮的地方就表示人越多,一幀的圖像比如說是二維圖像,如果有很多時間點就可以持續生成圖檔,同時我們有對應的事件和天氣資訊,這就構成了資料的輸入,把時空資料轉換成這樣一個模式。

微軟亞洲研究院鄭宇:用人工智能進行城市人流預測

有了這樣的資料之後,再對時間特性進行模拟。我們把最近幾個小時、幾幀的資料,輸入到時空殘差網絡裡面,模拟相鄰時刻變化的平滑過程,然後把對應時間點昨天、前天的資料輸入來模拟周期性,再把更遠的時間點對應的讀數拿進來,模拟一個趨勢性,分别模拟了三個時間屬性。這三個殘差網絡結構都是深度殘差網絡,然後做第一次融合,再把外部事件、天氣等因素拿進來進行二次融合,得到一個結果。

接着,再進行空間屬性模拟。深度卷積神經網絡的過程就是把區域劃成格子之後,對相關區域進行卷積運算得到一個值,你可以認為,通過一次卷積之後把周圍區域人流的相關性抓住了,卷積多次後把更遠地方的區域屬性都卷積到一起,如果你想捕捉很遠的地方,意味着你的卷積網絡層次必須要比較深,隻有一層抓不到很遠地方的相關性。之是以要這樣做,是因為之前有提到,很多人可能從外地很遠的地方通過高鐵或高速公路直接抵達,不會經過你所覆寫到的周邊區域。

一旦網絡層次比較深,訓練會變得非常複雜,基于卷積神經網絡,我們引入了深度殘差網絡結構來做人流預測,用來幫助深度卷積網絡提高訓練精度,使用這種方法的靈感也來源于我們的前同僚孫劍此前的研究。從目前的驗證結果來看,這項研究效果最好的是 24 層,但這與不同應用和資料規模都有關系。

微軟亞洲研究院鄭宇:用人工智能進行城市人流預測

此外,在融合相似性、周期性和趨勢性這三個子產品時,相比于直接的融合,我們提出的基于參數矩陣的融合方法考慮到了每個區域的時間特性的強度不同,是以取得了更好的結果。在最近的研究中,我們已經考慮了門限機制去調控,而非簡單的相加,很期待會有更好的實驗結果。而 XExt 這部分的輸入,已經做過歸一化或 one-hot coding,之後經過 FC(或加 embedding)後可以緩解「numerical scales」的問題。事實上,融合依然是一個富有挑戰性的難題,異構時空資料的融合仍值得深入研究。

接下來,對于這個模型本身,我們會繼續提升,現在隻是做到了預測每個區域有多少人進和出,展現出不同區域之間的關系,下個階段,我們需要同時把每個區域的進和出以及區域和區域之間的進出轉移數量都算出來。

而深度學習在時空資料方面的應用,已經是我們組的重點研究方向。人工智能也有它的局限性,并不是像大家想象的那樣無所不能,目前看來,我認為利用深度學習來解決大規模物流排程問題的時機已經比較成熟,同時它也會對一系列排程問題産生影響,比如共享單車、外賣、快遞等等。

©本文為機器之心原創,轉載請聯系本公衆号獲得授權。

繼續閱讀