深度学习的非主流应用
Taxi Trajectory Prediction競賽冠軍訪談:深度學(xué)習(xí)的"非主流"應(yīng)用
發(fā)表于12小時前| 527次閱讀| 來源Kaggle| 0 條評論| 作者Kaggle Team
深度學(xué)習(xí)機(jī)器學(xué)習(xí)數(shù)據(jù)可視化計算機(jī)視覺MLP width="22" height="16" src="http://hits.sinajs.cn/A1/weiboshare.html?url=http%3A%2F%2Fwww.csdn.net%2Farticle%2F2015-08-01%2F2825361&type=3&count=&appkey=&title=%E5%87%BA%E7%A7%9F%E8%BD%A6%E7%BA%BF%E8%B7%AF%E9%A2%84%E6%B5%8B%EF%BC%88Taxi%20Trajectory%20Prediction%EF%BC%89%E7%AB%9E%E8%B5%9B%E4%B8%AD%EF%BC%8C%E4%B8%80%E4%B8%AA%E5%9B%A2%E9%98%9F%E4%BD%BF%E7%94%A8%E5%9C%A8MILA%E5%AE%9E%E9%AA%8C%E5%AE%A4%E5%BC%80%E5%8F%91%E7%9A%84%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E5%B7%A5%E5%85%B7%E8%B5%A2%E5%BE%97%E4%BA%86%E7%AC%AC%E4%B8%80%E5%90%8D%E3%80%82%E5%9C%A8%E8%BF%99%E7%AF%87%E9%87%87%E8%AE%BF%E6%96%87%E7%AB%A0%E4%B8%AD%EF%BC%8C%E4%BB%96%E4%BB%AC%E5%88%86%E4%BA%AB%E4%BA%86%E8%AE%B8%E5%A4%9A%E5%85%B3%E4%BA%8E%E8%BF%99%E6%AC%A1%E7%AB%9E%E8%B5%9B%E7%9A%84%E6%83%85%E5%86%B5%E5%92%8C%E4%BB%96%E4%BB%AC%E8%8E%B7%E8%83%9C%E7%9A%84%E6%96%B9%E5%BC%8F%E3%80%82&pic=&ralateUid=&language=zh_cn&rnd=1438607535476" frameborder="0" scrolling="no" allowtransparency="true">摘要:出租車線路預(yù)測(Taxi Trajectory Prediction)競賽中,一個團(tuán)隊使用在MILA實(shí)驗室開發(fā)的深度學(xué)習(xí)工具贏得了第一名。在這篇采訪文章中,他們分享了許多關(guān)于這次競賽的情況和他們獲勝的方式。出租車線路預(yù)測(Taxi?Trajectory?Prediction)是Kaggle?2015 ECML?PKDD機(jī)器學(xué)習(xí)會議的兩場競賽中的第一場。一個團(tuán)隊使用他們在MILA實(shí)驗室開發(fā)的深度學(xué)習(xí)工具在競賽中贏得了第一名。在這篇文章中,他們分享了許多關(guān)于這次競賽的情況和他們獲勝的方式。
想了解2015 ECML?PKDD 出租車競賽的情況,可以點(diǎn)擊這里閱讀關(guān)于“Blue?Taxi”的文章,Blue?Taxi是 Taxi?Trip?Time?Prediction競賽的第三名。
來自381個團(tuán)隊的459位數(shù)據(jù)專家針對預(yù)測出租車乘客可能在哪下車進(jìn)行競賽
基本信息
目標(biāo)任務(wù)特別簡單:我們將要通過出租車的起點(diǎn)(GPS定位點(diǎn))和一些其他的元數(shù)據(jù)信息(日期,時間,出租車號碼,客戶信息)來預(yù)測出租車的目的地。
所有的訓(xùn)練數(shù)據(jù)都是發(fā)生在2013-2014年波爾圖出租車的行駛路線,涉及442輛出租車大概170萬的路線信息。你可以在Kaggle的首頁上找到這次競賽的信息,點(diǎn)擊這里。
在繼續(xù)講解之前,先來看看2個視頻,是使用我們設(shè)計的模型對兩輛出租車行駛路線的預(yù)測情況。
用我們最優(yōu)的模型預(yù)測目的地,測試車輛按照我們預(yù)測的地點(diǎn)行駛。第一個視頻中,我們可以很清楚的看到我們設(shè)計的模型已經(jīng)學(xué)習(xí)到了機(jī)場的位置。
在數(shù)據(jù)方面你們遇到過哪些主要困難?
有好幾種,例如:
- 出租側(cè)軌跡是可變長度序列,最短的時候是0(比如當(dāng)數(shù)據(jù)丟失的時候),最長的時候大概是5000GPS點(diǎn)(相當(dāng)于20個小時的車程!)。
- 數(shù)據(jù)的特征是非常多樣化的:尤其是特定的元數(shù)據(jù)是離散的(出租車號碼和客戶id),而其他的則是高度結(jié)構(gòu)化的(日期,時間),還有GPS的軌跡是連續(xù)的坐標(biāo)序列。
- 作為現(xiàn)實(shí)世界的數(shù)據(jù),數(shù)據(jù)之間有諸多矛盾,比如行車時間持續(xù)多達(dá)16個小時,或者是出租車開到了伊朗:)。伊朗的坐標(biāo)點(diǎn)肯定是由錯誤的GPS校準(zhǔn)產(chǎn)生的。總的來說,因為不精確的GPS定位,訓(xùn)練軌跡將會有許多噪聲。
在參加這次挑戰(zhàn)之前你們都有什么專業(yè)背景?
我們?nèi)齻€是 蒙特利爾學(xué)習(xí)算法研究所(MILA,前身是LISA)的學(xué)生,它是由Yoshua?Bengio教授領(lǐng)導(dǎo)的專門從事深度神經(jīng)網(wǎng)絡(luò)研究的實(shí)驗室。我們兩個是實(shí)習(xí)生(Alex和étienne),計算機(jī)科學(xué)專業(yè),Alexandre是一年級博士生,在機(jī)器學(xué)習(xí)(ML)方面有更多的專業(yè)知識。這次競賽中所使用到的機(jī)器學(xué)習(xí)技術(shù)、技巧和工具都是我們在MILA實(shí)驗室開發(fā)的,用實(shí)驗室開發(fā)的編程框架(Theano,?Blocks)實(shí)現(xiàn)了獨(dú)特的深度神經(jīng)網(wǎng)絡(luò)。
有沒有什么領(lǐng)域知識助你們成功?
沒有,我們之前沒有任何關(guān)于波爾圖和它那出租車的領(lǐng)域知識。
你們是怎么在Kaggle開始競賽的?
對我們?nèi)齻€來說,這是我們第一次(莊重地)參加Kaggle的競賽。作為MILA實(shí)驗室的學(xué)生,我們更喜歡嘗試一些“非主流”的深度學(xué)習(xí)(DL)技術(shù),而不是已經(jīng)成熟的深度學(xué)習(xí)技術(shù)(比如計算機(jī)視覺,NLP,語音技術(shù))。
技術(shù)方面
你們一般化的方法是什么?
我們想設(shè)計一個全能的機(jī)器學(xué)習(xí)方法,盡可能減少手工操作,理想情況下我們希望達(dá)到無需預(yù)處理或者特征提取,無需后置處理并且不用模型組合。
我們嘗試了幾種方法,全部都是基于神經(jīng)網(wǎng)絡(luò)的。結(jié)果是復(fù)雜的模型表現(xiàn)得并沒有簡單模型那么出色,這是非常奇怪的。
能講講你們?nèi)俚哪莻€模型嗎?
圖1:我們?nèi)倌P偷募軜?gòu)圖。我們嘗試用遞歸神經(jīng)網(wǎng)絡(luò)替換MLP,但是表現(xiàn)并不是很好。更深層的網(wǎng)絡(luò)也同樣沒有提升效果。
我們?nèi)俚哪P图軜?gòu)是基于 多層感知器(MLP)的,感知器是一種最簡單的神經(jīng)網(wǎng)絡(luò)架構(gòu)。更確切地說,感知器是由一個輸入層(輸入大小是固定的),一個或多個隱藏層(計算輸入數(shù)據(jù))和一個輸出層(輸出預(yù)測結(jié)果)組成。
當(dāng)然,我們需要調(diào)整一下MLP讓它適用于這個任務(wù):
- 軌跡是可變長度的,而MLP的輸入是定長的。我們?yōu)榇俗鋈缦滦薷?#xff0c;只用前5個和后5個軌跡數(shù)據(jù)點(diǎn)作為MLP的輸入。結(jié)果表明,這些數(shù)據(jù)點(diǎn)確實(shí)是軌跡最重要的部分,而中間部分的數(shù)據(jù)點(diǎn)并沒有這么重要。
- 考慮到元數(shù)據(jù)(時間和客戶信息),我們使用了一種在自然語言模型中訓(xùn)練文字嵌入廣泛使用的方式。我們使用這種方式(當(dāng)然不是嵌入文字)學(xué)習(xí)為每條元數(shù)據(jù)值(一天中的第幾刻鐘,一年中的第幾周,客戶ID等)嵌入向量,然后將這些嵌入數(shù)據(jù)作為MLP的附屬輸入。
- 最開始我們嘗試直接預(yù)測輸出坐標(biāo)(x,y),但是實(shí)際上,我們采用另外一種方式獲得了顯著的效果,這種方式增加了一些預(yù)處理過程。更確切地說,我們首先在所有訓(xùn)練軌跡的目的地上使用聚類算法得到了大概3392個熱門目的地數(shù)據(jù)點(diǎn)。MLP的倒數(shù)第二層是一個softmax,它用來預(yù)測這3392個數(shù)據(jù)點(diǎn)成為出租車目的地的概率。因為這個任務(wù)是要預(yù)測單個目的地點(diǎn),所以我們計算這3392個目標(biāo)的平均值,然后用softmax層返回的概率作為權(quán)值。
隨后我們訓(xùn)練模型將預(yù)測和實(shí)際地點(diǎn)的誤差最小化。我們使用了隨機(jī)梯度下降而且我們還將繼續(xù)使用。
你們對數(shù)據(jù)最深刻的了解是什么?
圖2:所有訓(xùn)練軌跡的GPS數(shù)據(jù)點(diǎn)的熱點(diǎn)圖。可以注意到,這里并沒有印上地圖,只有GPS數(shù)據(jù)點(diǎn),這揭露了波爾圖的公路網(wǎng)。
從可視化角度看,這個挑戰(zhàn)很有意思。在競賽的開始,我們計算出了波爾圖出租車最常去的區(qū)域的熱點(diǎn)圖(圖2)。正如你所看到的,我們可以很清晰的認(rèn)出主干公路、機(jī)場、火車站、市中心和郊區(qū)。這些發(fā)現(xiàn)讓我們覺得我們應(yīng)該為模型提供相當(dāng)于數(shù)據(jù)分布的前期數(shù)據(jù)。這讓我們考慮將目的地聚類。
你們對你們的任何發(fā)現(xiàn)感到驚訝嗎?
只是出于好奇心,我們在嵌入數(shù)據(jù)的時候使用 t-SNE,我們可以將每條元數(shù)據(jù)轉(zhuǎn)化成2維空間中的值(原始的嵌入空間有10個維度),這為我們理解每條元數(shù)據(jù)值如何影響預(yù)測提供了良好的視覺觀察(如果一個人想要在數(shù)量上評估單條元數(shù)據(jù)的重要性,那么他可以只用這一個特定的元數(shù)據(jù)作為訓(xùn)練模型的輸入)。特別地,圖3和圖4分別顯示了嵌入每天第幾刻鐘和每年第幾周作為附屬輸入的預(yù)測結(jié)果。
圖3:在出租車行駛了的時間里,嵌入了每小時中的每刻鐘的數(shù)據(jù)得到了以t-SNE?2D形式顯示的預(yù)測結(jié)果(一天中有96刻鐘,所以有96個點(diǎn),每個點(diǎn)代表了特定的刻鐘時間)。上圖表明,每個刻鐘數(shù)據(jù)本身都很重要。
圖4:在出租車行駛了的時間里,嵌入了每年中的每周數(shù)據(jù)得到了以t-SNE?2D形式顯示的預(yù)測結(jié)果(一年中有52周,所以有52個點(diǎn),每個點(diǎn)代表了特定的周)。
你們是如何處理數(shù)據(jù)的?
訓(xùn)練數(shù)據(jù)包括:完成軌跡,而測試數(shù)據(jù)集只包含局部軌跡。這意味著GPS數(shù)據(jù)序列在輸入到網(wǎng)絡(luò)之前需要剪枝。理想的解決辦法是去掉所有在不同時間的軌跡信息。這樣會有1億條訓(xùn)練實(shí)例,對它們進(jìn)行shuffle操作,我們就可以更好地發(fā)揮隨機(jī)梯度下降的性能,但是這樣做的代價可能太大了。所以我們隨機(jī)地循環(huán)遍歷170萬條訓(xùn)練實(shí)例,然后動態(tài)地隨機(jī)去掉100條數(shù)據(jù)。
你們使用什么工具?
我們使用在MILA實(shí)驗室開發(fā)的庫文件,也就是 Theano(一個類似numpy的庫文件,用來加速GPU處理)和 Blocks(可以說是建立在Theano之上的一個近現(xiàn)代深度學(xué)習(xí)框架)。我們非常感謝它們的開發(fā)者們。
我們的源碼和運(yùn)行說明可以在我們的github上下載,點(diǎn)擊這里。
在這次競賽中你們是怎么安排時間的?
正如前面所說,我們的實(shí)現(xiàn)方法只做了很少的特征提取工作。我們在通過數(shù)據(jù)可視化理解數(shù)據(jù)上花了少量時間,我們大多數(shù)時間都在思考如何設(shè)計神經(jīng)網(wǎng)絡(luò)架構(gòu)并且如何使用Blocks去實(shí)現(xiàn)它們。
用你們的方法訓(xùn)練數(shù)據(jù)和預(yù)測各需要多少時間?
我們的模型是使用隨機(jī)梯度下降訓(xùn)練的,意味著它需要逐個考慮數(shù)據(jù)集中的每條數(shù)據(jù)——或者更確切地說,每批200條訓(xùn)練數(shù)據(jù)——許多次。比如,在一次迭代中,遍歷所有的數(shù)據(jù)所花的時間取決于模型的復(fù)雜度。用我們最好的模型,在GTX?680上做一次迭代需要幾個小時,訓(xùn)練它則要半天。
你們還嘗試過哪些模型?
圖5:內(nèi)存式網(wǎng)絡(luò)。RELU層可以由遞歸神經(jīng)網(wǎng)絡(luò)代替。在我們的實(shí)驗中,候選軌跡是隨機(jī)抽取的,但是手工編碼的相似度函數(shù)也可以使用。
我們嘗試了更為復(fù)雜的神經(jīng)網(wǎng)絡(luò)架構(gòu),比如遞歸神經(jīng)網(wǎng)絡(luò)和一些與內(nèi)存網(wǎng)絡(luò)相關(guān)的架構(gòu)。令人吃驚的是,將所有軌跡作為輸入的遞歸架構(gòu)并沒有改進(jìn)預(yù)測結(jié)果。內(nèi)存網(wǎng)絡(luò)架構(gòu)(圖5)是基于學(xué)習(xí)相似度函數(shù)的,相似度函數(shù)從訓(xùn)練數(shù)據(jù)中提取候選軌跡然后度量它們的權(quán)重。
Bios
Alexandre?de?Brébisson是蒙特利爾MILA實(shí)驗室的博士生,師從Pascal?Vincent教授和Yoshua?Bengio教授。
étienne?Simon?是ENS?Cachan計算機(jī)科學(xué)專業(yè)的學(xué)生,目前是蒙特利爾MILA實(shí)驗室的實(shí)習(xí)生,師從Yoshua?Bengio教授。
Alex?Auvolat?是ENS?Paris計算機(jī)科學(xué)專業(yè)的學(xué)生,目前是蒙特利爾MILA實(shí)驗室的實(shí)習(xí)生,師從Pascal?Vincent教授和Yoshua?Bengio教授。
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的深度学习的非主流应用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 帮Facebook把用户做到7亿的那个人
- 下一篇: 梳理百年深度学习发展史-七月在线机器学习