專訪微軟亞洲研究院鄭宇:用人工智慧進行城市人流預測
在貴陽「塊數據」實驗室的一塊大屏幕上,每一分每一秒都在進入新的數據,不停地預測每個區域有多少輛計程車進和出,這是微軟亞洲研究院一個基於雲計算和大數據的系統正實時運轉,貴陽計程車的數據實時上傳作為測試樣本,驗證模型的準確性和有效性。每點一個格子會跳出一個圖表,都能清楚知道整個城市某區域人群流動接下來十幾個小時會呈現什麼狀態,黑色的是已經發生過的計程車進出情況,綠色預測未來部分,藍色是昨天同一時間的情況。而同樣,任何人流預測數據來源,比如手機信號、地鐵刷卡記錄等,都可以通過該系統模型進行運算得到某地將有多少人進和出的結果,並預測到未來十幾個小時的城市人流情況。
「這個系統背後的模型研究,其目標是預測整個城市裡每個區域在未來時刻有多少人進、有多少人出,從而使得管理者能迅速了解每個區域的公共安全狀況,及時採取預警措施。」微軟亞洲研究院主管研究員鄭宇說,直接促使他下決心開展研究的是,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」的問題。事實上,融合依然是一個富有挑戰性的難題,異構時空數據的融合仍值得深入研究。
接下來,對於這個模型本身,我們會繼續提升,現在只是做到了預測每個區域有多少人進和出,體現出不同區域之間的關係,下個階段,我們需要同時把每個區域的進和出以及區域和區域之間的進出轉移數量都算出來。
而深度學習在時空數據方面的應用,已經是我們組的重點研究方向。人工智慧也有它的局限性,並不是像大家想像的那樣無所不能,目前看來,我認為利用深度學習來解決大規模物流調度問題的時機已經比較成熟,同時它也會對一系列調度問題產生影響,比如共享單車、外賣、快遞等等。
機器之心原創
推薦閱讀:
※為什麼用 USB 拷文件的速度遠低於理論值?
※如何看待微軟最新為surface book和surface pro 4推送的更新?
※微軟為什麼放棄開發FoxPro軟體?
※根據最新公布的具體詳細參數,如何評價微軟最新的 VR 頭顯?在當前市場競爭力如何?
※如何看待“MSDN 我告诉你”重新开启并添加了捐助按钮?
TAG:微软Microsoft | 人工智能 |