天天看點

【钛坦白】清華大學李建:深度學習在時空大資料分析中的應用(轉載)

本文轉自http://www.tmtpost.com/2579314.html 發于 2017-03-10 13:32,相對較新吧!

以下根據李建在钛坦白的分享實錄整理:

大家好,我是李建,目前是清華大學交叉資訊研究院的助理教授、博士生導師,也是杉數科技的合作科學家。很高興認識大家,并在這裡進行分享。

我先做個簡單的個人介紹。我來自于清華大學交叉資訊研究院,因為我們院是2011年成立的,時間還比較短,可能有些朋友不是很了解。我們院是姚期智院士建立的,姚其智院士是我國唯一的圖靈獎獲得者,圖靈獎是計算機科學的最高獎。他在2005年從普林斯頓大學辭去職位,回國全職到清華創立姚班,也就是我們叉院的大學生班,也被稱為清華大學計算機科學實驗班。大家以後可能會常遇到叉院、姚班的同學、老師,希望多多關照。

我合作的杉數科技,是由斯坦福大學教授葉蔭宇老師和斯坦福大學幾位博士羅小渠、葛東東,王子卓聯合創辦的。葉教授是馮諾伊曼獎的得主,馮諾伊曼獎是運籌管理學裡面最高獎。杉數科技主要為企業提供大資料的解決方案,包括為企業提供優化和機器學習的算法引擎,供應鍊優化,金融方面的比如說風險管理、收益管理,還有定價的一些問題。在算法引擎上,杉數可以幫企業搭建機器學習解決方案,他們開發的機器學習引擎優化算法在單機版上比目前市面上開源的軟體能快幾十倍。

我個人的研究方向是理論計算機科學,主要是算法設計,最近幾年我也做了一些機器學習和深度學習方面的工作。一會兒給大家分享一下我們在深度學習應用在時空大資料分析方面的一些研究工作,和我個人的一些想法和體會。

什麼是時空大資料?

相信大家已經被深度學習刷屏了,它已經在比如圖象識别、語音識别、圍棋、撲克……很多領域取得了巨大的成功,引起了多個領域革命性的變化。我今天要講的跟以上所列都不同,将把重點放在時空大資料分析。

什麼是時空大資料呢?大家請看下面這張圖。時空大資料有很多的種類,比如說GPS的定位資料,比如說網約車 ——滴滴、Uber的訂單的資料,社會網絡上的資料,更宏觀的國民經濟的資料,比如人口密度、人口遷徙的資料。這些資料的共同特點是它既有時間的屬性也有空間的屬性。

【钛坦白】清華大學李建:深度學習在時空大資料分析中的應用(轉載)

我們可以考慮有多個時間序列,其中每個時間序列是由一個不同的空間産生的。每個時間序列自身有時間上的依賴關聯,而這些時間序列之間也有空間的一些關聯。時空大資料的空間上的關聯,跟圖像上的空間關聯有些相似,但也有很多不同,後者的關聯是非常均勻的,或者說具有平移不變性,比如說一隻狗的圖像,在這裡放是一隻狗的圖像,平移一下他還是那一隻狗的圖像。對于時空大資料就不一樣了,比如北京的一條路和天津的一條路,甚至二環上的一條路和三環上的一條路表現可能是完全不一樣的,這裡面還有許多其他的因素在影響。比如說交通,影響交通的有天氣,有PM2.5,有節假日,有其他特殊事件……這些都可能影響我們做預測。多種影響因素導緻資料源可能也有很多,如何整合這些資料源也是一個很大的挑戰。另外一個不同點是,時空大資料有可能噪音非常大。

因為有很多不同的影響因素,是以對一些問題,即使人也很難做出判斷,這和我們看到的圖像分類、機器翻譯很不同,因為對這些問題我們至少人可以把它做得比較好,對于時空大資料的預測問題是人都很難進行判斷的,反而是機器學習能夠做得更好一點。

應用深度學習進行時空大資料挖掘,第一個挑戰就是如何抓住時空的關聯性。這裡面涉及到幾個問題:第一,你用什麼樣的學習架構,監督學習還是非監督學習,還有多任務學習、線上學習、增強學習……很多種方法,你用哪一種架構。這裡并沒有一個很成熟的做法,比如圖像就用CNN;第二,你想用深度學習,什麼樣的網絡結構比較好;第三,我剛才說了有很多的資料源,不同的資料源會産生不同的因子,我們如何構造一個網絡,能夠将這些不同質的因子綜合起來,并且希望這個網絡能夠易于拓展,易于應用;第四,我們可能還要處理一些噪音很大,或者說資料缺失的問題。

深度學習在時空大資料的四個經典應用

  • 網約車供需的預測

任務:一個區域在未來一段時間,有多少個網約車叫車訂單将不會被滿足?

我們這個工作實際上是基于前一段時間滴滴公司的一個大資料競賽。滴滴公司提供了一個月某個城市所有訂單的資料,以及其他的一些比如說天氣、PM2.5,還有一些路況的資訊。具體的任務是,在他給定的幾個區域内,對每個區域,你去預測未來15分鐘有多少個訂單将不會被滿足,也就是說需求減去供給。

這個問題對于滴滴來說很重要,因為如果一個地方有很多訂單沒有被滿足的話,他可能事先去調派一些計程車,使得供需達到平衡。另外對他們定價也有很重要的作用。這樣的問題就是一個典型的時空大資料的預測問題。這個訂單既有時間的屬性,也有空間的屬性,另外還有其他許多因素。這個問題并不簡單,有很多資料源,有些資料源資料缺失也比較嚴重。

這裡面我們發現有很多挑戰,比如下面這張圖中,這兩個不同的位置的需求模式是非常不一樣的。而且,有一些突發的事件,像需求突然增大,想抓住這種突然增大的趨勢,也是有一定難度的。

【钛坦白】清華大學李建:深度學習在時空大資料分析中的應用(轉載)

傳統的方法,比較常用的有線性回歸、邏輯回歸、支援向量級、gradient boosting、随機森林等,這些方法在實際應用想要達到比較好的效果,一個很重要的工作就是要做很大量的特征工程,就是挖掘很多有預測能力的特征,有時甚至是很奇怪的特征,這些特征是可能對預測有幫助的因子。想達到一個非常有競争力的效果,通常需要做很多很多這樣不同的因子,而且有些因子實際上看起來并沒有什麼道理,或者講不清楚有什麼道理,但有時也有一定效果。一般來說參加這種機器學習比賽的隊伍大多用gradient boosting的方法,很多隊伍都做了大量人工的因子,有的甚至都做了幾百個因子。我們用深度學習的初衷,就是它有自己提取特征的能力,我們希望減小特征工程的人工的工作量,希望是隻做一些基本的特征工程,也能達到一個非常有競争力的預測的準确度。

同時我們也希望做一個比較易用的架構,使得我們比較容易的将不同類型的資料整合起來,比如說訂單資料、日期資料、位置資料、天氣等資料,都是不同質的,有些是數值型的,有些是種類,應該有一個方法,把它們的資訊非常容易的都綜合在一起。此外,每個資料源裡面不同的資料有不同的預測能力,你得把裡面的資訊都抽取出來。再者,這些子產品也希望比較靈活的,你可以往裡添加子產品,也就是添加資料源,有時有些資訊可能是備援資訊,它并沒有提供新的預測能力,即使添加了這個子產品,也不會增加你的準确度,但是你也希望它不會影響降低準确度。

下面這張圖,就是我們後面做的深度學習的一個大的網絡架構的示意圖。大家可以看到,我們有幾個大的子產品,每一個子產品處理不同類型的資料。order part就是處理訂單資料,Environment part處理環境資訊,如路況、天氣等,還有Identify part就是處理時間,位置的ID就是我們要預測的時間和地點。我們最後是得到了一個端到端的一個模型,就是說我們能夠直接将這些原始資料做簡單的處理統計,然後就可以輸入到這個網絡裡,然後這個網絡就會從不同的資料源裡抓取有預測能力的資訊,最後給出比較準确的預測。

【钛坦白】清華大學李建:深度學習在時空大資料分析中的應用(轉載)

我們這裡面用了一個小技巧,就是在不同子產品之間用了一個residual link,就是殘差的連接配接,這個連接配接是由深度殘差網絡這個工作啟發得到的,深度殘差網絡在钛坦白昨天的分享中秦濤博士也提到了(相關文章:http://www.tmtpost.com/2578654.html),是微軟亞洲研究院做的一個很有名的工作,他們用這種殘差的連接配接可以訓練幾百甚至上千層深度學習的網絡。我們這裡面的殘差連結是從他們的工作受啟發,但是我們的目的有所不同,一是為了友善優化,這是跟他們一樣的。但另外一點,我們是希望能夠使這些子產品更容易的進行添加和删除。比如說你現在添加一個子產品你直接加進來,比如裡面有一個子產品沒有什麼有預測能力的資訊,實際上等價于一個權重為零的層,相當于資訊直接從這個子產品跳過去了,也不影響你的預測能力。

我們每個子產品有不同的設計方法,下面這張圖是我們訂單資料的一個大緻的結構。我們希望對比較典型的幾個不同資料類型,設計比較通用和易用的幾個網絡結構來處理這些資料。

【钛坦白】清華大學李建:深度學習在時空大資料分析中的應用(轉載)

另外,在實際案例中,周一的訂單和周二的訂單、周日的訂單的模式可能是完全不同的。一種方法是把周一的資料拿過來訓練一個模型,對周二資料拿過來訓練一個模型,我們的做法是,把他們都加在一起進行訓練,但是給他們每一天有一個不同的權重,這個網絡會自動的把這些權重學出來。

【钛坦白】清華大學李建:深度學習在時空大資料分析中的應用(轉載)

下面這張圖就是我們神經網絡的預測效果,跟其他傳統方法進行了比較,我們用的一樣的特征。我們網絡的一個前期的版本參加了滴滴的預測大賽,一共有1600多個隊伍參加,我們獲得了第二名。而且據我們所知,在前十名隊伍裡面隻有我們一個隊伍是用的深度學習的方法。是以說在時空大資料預測方面,深度學習還是有很潛力的。在比賽以後,我們又把這個網絡的子產品化、易用性、準确度做了進一步的提升。

【钛坦白】清華大學李建:深度學習在時空大資料分析中的應用(轉載)

下面這張圖顯示的是供給減去需求的曲線,大家可以看到,有很多突然出現的波峰,表示一個突發的打車高峰,比如說一個突發的事件來了,突然這個地方有很多打車的人,結果沒有打到,就會有一個峰值。虛線是真實的值,藍線是我們的預測,紅線是大家常用的gradient boosting的方法預測的值。大家可以看到,神經網絡抓這種峰值的能力還是比較強的。

【钛坦白】清華大學李建:深度學習在時空大資料分析中的應用(轉載)

同時我們認為,這個技術還可以應用到其他的供需、流量預測的這類問題上。杉數科技目前正在幫助國内某大型物流公司解決供應鍊問題,流量預測也是其中的一個很重要的環節,我作為杉數的合作科學家也在一起幫助解決這樣的一個問題。深度學習是我們認為解決這個問題的一個非常好的解決方案。

  • 出行時間的預測

任務:對給定的路徑和出發時間,預估到達終點所用的時間

這個任務具體是,你給定一個點作為起點,給定另外一個點作為終點,給出你起始的時間,我們要預測你走這條路需要花多少時間。實際上目前比如說百度地圖、滴滴這些應用上都有這樣的功能。現在出行時間的預測是根據當時的路況,但是假如我們從清華到朝陽的某個地方,路線比較長,可能當時某一段路是比較堵的,但我們開到那邊其實已經不堵了,實際上我們實際的出行時間就比當時的預測要短。是以我們考慮用機器學習的方法來進行預測,而不是隻用當時的路況進行預測。

前段時間有個資料城堡大資料預測比賽。在這個比賽裡面,資料和前面的供需預測有很多相似的地方,但有一點重要的不同,就是要考慮軌迹的資料。也就是訓練資料包含很多曆史上開車的軌迹,這些軌迹都是GPS點,這些點上有時間的屬性和空間的屬性。

下面這張圖是我們的大緻的網絡結構。這個結構跟我們前面的有些相似,也是子產品化的,就是每種不同類的資料我們有一個子產品去處理它。這裡一個重要的不同就是有一個處理軌迹資料的新的子產品(在圖右上角),我們應用的是兩層的LSTM結構,還有一些其他的技巧,比如說剛才提到的殘差網絡連接配接的這樣一些技巧來連接配接子產品。

【钛坦白】清華大學李建:深度學習在時空大資料分析中的應用(轉載)

下面這張圖,就是我們深度神經網絡的預測效果,最後我們這個比賽是拿到了第三名。雖然不是第一,但是我們認為達到了預期的效果。首先我們并沒有花很多精力去做特征工程,這是跟其他隊伍非常不一樣的。另外我認為我們這種子產品化設計是比較通用的。另外我們的準确率也很有競争力,前幾名的的準确率都是非常非常接近的。

【钛坦白】清華大學李建:深度學習在時空大資料分析中的應用(轉載)
  • 商店選址

任務:預測在什麼地方開店比較好

這個項目我們沒有用到深度學習,但這是一個應用時空大資料比較好的例子。這是我們跟百度的大資料研究院合作的一個項目,應用了百度移動端的資料還有百度糯米、百度地圖的一些資料。我們主要的目的是商店選址。比如說你想開一個咖啡店,我們來幫助你選擇在什麼地方開店比較好。

我們基于的思想,大緻就是首先來預測這些不同地點的供給以及需求。這個需求是可以通過比如百度的資料得到的,比如說你在某一個地方搜了一下星巴克,意味着很大可能這有一個需求。供給就是已經開的店,這些店形成了一種競争,可能已經能夠提供一些服務滿足一些需求了。我們想找的就是供需差别最大的,哪些地方我有很大的需求,但是供給仍然不足。

我們的工作主要分四步:

  • 通過百度的資料預測供給;
  • 找出已經有的店,然後計算出一個競争的模型,就是每個地方你會有多少相似的店跟你競争,然後這些店已經能夠吸收多少需求;
  • 找出這種供給和需求差比較大的一些這些地點,然後進行聚類,找出聚類的中心;
  • 實際的進行選址。

我們做完這個項目做了一些實地的調研。下面這張圖,我們預測了一個地點适合開海底撈,其實在我們做這個工作前面兩個月就開了一家店海底撈,距離我們預測的地點非常近:

【钛坦白】清華大學李建:深度學習在時空大資料分析中的應用(轉載)

下面這張圖是星巴克的例子。實際新開的點距離我們預測的地方隻差200米:

【钛坦白】清華大學李建:深度學習在時空大資料分析中的應用(轉載)
  • 預測到訪

任務:在一個地點,會進哪家店

我們有使用者移動端的很多GPS資料,也有一些到店登入Wifi的資料,還有百度糯米的其他類相關的資料,我們目的是給定他目前的地點,我們想去預測他實際上是去了哪個店。

這件事情你可能認為挺簡單,已經知道了地點你還不知道去了哪個店,但是實際上并不是那麼簡單,比如說你去了大悅城,裡面有很多家店。你隻知道一個大緻的GPS位址,這個該怎麼預測?我們預測的依據實際上是這個使用者的曆史資訊,這個使用者可能曆史上去過某些店,将來很可能也去一些相似的店,另外有些相關性,比如說某些使用者和某些使用者的軌迹非常相似,有相關性,這種資訊也會幫助我們進行預測。

這個預測我們也是用的深度神經網絡,我們應用了跟前面很相似的處理軌迹資訊的子產品,最後也達到了比較好的效果。下面這張圖就是我們這個方法預測的準确率,三就代表我們預測三個裡面有多少準确的。預測一個基本上可以做到50%左右的準确率,如果預測5個就比較高,就可以做到80%的準确率。

【钛坦白】清華大學李建:深度學習在時空大資料分析中的應用(轉載)

時空大資料的其他一些研究方向

我下面簡單談一下其他相關的問題,和我們計劃下一步做的一些東西,不一定是深度學習。其中一個就是線上學習和增強學習。我剛才說的都是用時空大資料來做分析和預測,在現實應用中,預測隻是幫助我們來進行決策。現在一般的方法是将預測和決策進行分離。我們先進行預測,然後再進行決策。決策往往是一個優化問題。

但是我們現在想利用線上學習和增強學習這些強大的工具,将預測和決策這兩個東西結合起來。另外線上學習能夠得到這個預測和決策的關系。一般說來,我們當然預測的越準确越好。但實際上有時候不需要預測到多準确,或者隻對問題的某個方面而不是全部有好的預測,就已經可以做很好的決策了。

在線上學習裡面有一個很著名的問題叫專家問題,就是說假設一個遊戲有T輪,有N個不同的專家,每個專家在每一輪都會給我們一些不同的建議,我們每一輪要決定聽哪個專家的。但是在那個專家做建議的時候我們實際上不知道他這個建議好還是差的。我們隻知道以前這個專家做的建議都是好還是不好。線上學習會告訴我們每輪去聽哪個專家的建議。最後我們想達到一個什麼效果呢?我們可以達到在整個T輪中,我們的表現可以和最好的那個專家差不多。

專家問題有一個變種,就是下面這張圖檔。這個圖檔上面的人物是一個非常著名的資訊論學家,他叫Thomas Cover,前幾年過世了。他有一篇很著名的文章叫《Universal Portfolios》,可能翻譯成普遍投資組合。這個是個什麼問題呢?實際上跟專家問題非常相關的,他實際上考慮的是一個大家更感興趣的問題就是股票的投資組合,就是說我現在假設有N個股票,我怎麼樣來進行投資,在這個股票中分散我的投資。目标是使得我最後的效果跟最好的那個股票比都不差。

【钛坦白】清華大學李建:深度學習在時空大資料分析中的應用(轉載)

Thomas Cover用的是很巧妙的乘法權重調整的方法,然後在不同股票資料中間做投資組合。實際上,不同股票資料也可以被認為是一種時空大資料,就是我們每個股票是個時間序列,不同股票之間也有一個空間上的相關性,比如說相同闆塊的股票表現有一定的相似性,不同闆塊獨立性就比較強,這個是空間關聯性。Thomas Cover就為我們預測加決策的這個線上學習方法提供了一個很好的基礎。在當時,Thomas Cover因為這個算法非常興奮,就根據他的算法去開了一個對沖基金,好像效果還是不錯的。

線上學習還有一個很著名的問題叫多臂老虎機問題。假設我們有N個不同的老虎機,每個老虎機實際上是有一個獎勵的機率分布。你可以把它想成一個随機變量,你每拉一次老虎機,相當于從随機變量中取一個樣本。你是希望找到最好的老虎機,也就是平均獎勵最高的老虎機,這個實際上就是一個學習和決策結合的這樣一個過程。事先我們并不知道這些老虎機的機率分布,我們需要學習,但最後我們需要決策把最好的老虎機找出來。

多臂老虎機問題的算法告訴我們一件什麼事情呢?就是說我們實際上并不需要都把所有的老虎機都學習得很好,我們不需要對所有老虎機的估計準确率都很高,我們隻需要對比較好的老虎機的準确率比較高就可以,就可以做很好的決策了,而那些比較差的我們不需要學習到多好。那麼這個多臂老虎機問題也是控制優化,線上學習裡面一個很經典的問題,也有很多很多的應用,我認為也是我們做時空資料學習加決策的這樣一個很好的架構。

另外一個我認為比較有意義的時空大資料的研究方向就是生成模型。比如說我們如何虛拟的生成訂單資料,或者我們虛拟生成交通流量,或者虛拟市場交易資料。那麼有了這個生成模型,我們才能說我們完全了解了這個模型。一方面生成模型能幫助我們了解,另一方面我們如果有了生成模型,我們就能夠用它來模拟新的環境。另外能用它來生成新的資料,來進行訓練,就相當于是增多了我們的訓練資料,也可以用來測試新的場景。有很多傳統的時間序列和空間計量經濟的模型,比如說時間序列模型,大家可能知道線性的ARMA模型還有GARCH模型,比如還有一些随機過程,比如說空間點過程模型,但是這些模型都是相對簡單,可能很難抓住一個實際複雜的有很多因素決定的過程,其中有很多非線性的特征和細節。我們可能需要利用深度學習生成模型去抓住這種複雜的過程。比如說用深度學習裡的authencoder,比如說更新的對抗生成網絡這樣一些生成模型。

(本文獨家首發钛媒體,根據清華大學交叉資訊研究院助理教授、博士生導師、杉數科技科學家李建在钛坦白上的分享整理)

繼續閱讀