0
本文作者: 奕欣 | 2017-01-21 10:14 |
MIT 緊跟時(shí)代步伐,開設(shè)的 6.S094 課程名為《為自動(dòng)駕駛構(gòu)建深度學(xué)習(xí)》的課程,旨在教學(xué)生們?yōu)樽詣?dòng)駕駛搭建一個(gè)深度學(xué)習(xí)系統(tǒng),授課者為 Lex Fridman。課程要求學(xué)生擁有基本的編程知識(shí)(最好是 Python)。
全課只有九節(jié)一小時(shí)的課程,于 1 月 9 日開課,今天就結(jié)課啦。而且!據(jù)雷鋒網(wǎng)從議程表上了解到,從開課一直到 1 月 16 日,官網(wǎng)表示會(huì)陸續(xù)放出 PPT 及視頻文件,雷鋒網(wǎng)會(huì)持續(xù)關(guān)注。
DeepTesla 與 DeepTraffic 就是 MIT 這門課程里面的兩個(gè)重點(diǎn)培訓(xùn)內(nèi)容,
前者直接以端到端模型訓(xùn)練一個(gè)自動(dòng)駕駛的起動(dòng)模型;
后者以游戲化的方式模擬汽車在高速公路上行駛,而我們的目標(biāo)就是(沒有蛀牙)訓(xùn)練一個(gè)神經(jīng)網(wǎng)絡(luò),利用強(qiáng)化學(xué)習(xí)控制紅車,并讓它的速度盡可能提升到最快(也就是超車?yán)?!速度與激情)。
那么首先我們得先補(bǔ)補(bǔ)課,為什么要采用循環(huán)神經(jīng)網(wǎng)絡(luò)呢?主要鑒于它能夠?qū)⑤敵鲋匦伦鰹檩斎朐俅芜M(jìn)入神經(jīng)網(wǎng)絡(luò)中進(jìn)行訓(xùn)練,也就是擁有所謂的「記憶」。
強(qiáng)化學(xué)習(xí)的一個(gè)典型例子就是 DeepMind 訓(xùn)練機(jī)器玩 Atari,雖然機(jī)器并不知道游戲規(guī)則,但每一次游戲都能讓機(jī)器得到一次分?jǐn)?shù)的反饋,而目標(biāo)就是讓得分最大化。
美國人每年要浪費(fèi) 80 億小時(shí)在堵車上,因此如果能采用自動(dòng)駕駛系統(tǒng),讓老司機(jī)們解放雙手,想必真真是極好的。
DeepTesla 通過一個(gè)簡單的演示呈現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)的端到端轉(zhuǎn)向。頂端呈現(xiàn)的四個(gè)指標(biāo)呈現(xiàn)的是前向傳遞及后向傳遞所需的時(shí)間,以及目前網(wǎng)絡(luò)已經(jīng)訓(xùn)練的示例,還有網(wǎng)絡(luò)的當(dāng)前狀態(tài)(是處于訓(xùn)練數(shù)據(jù)?還是在提取數(shù)據(jù)?)。
下方的圖表呈現(xiàn)的是損失函數(shù),我們都知道,正常狀態(tài)下隨著時(shí)間的推移,損失函數(shù)的值應(yīng)該會(huì)越來越小。
而在編輯器下方還有一個(gè)可視化圖層的功能,用戶可以在網(wǎng)絡(luò)中看到每個(gè)圖層的處理情況。如果加載了特斯拉視頻,隨著視頻內(nèi)容的增加,神經(jīng)網(wǎng)絡(luò)的訓(xùn)練效果也會(huì)變得更好。
下方兩個(gè)小的方向盤及旁邊的數(shù)值指的是實(shí)際值(藍(lán)色)與系統(tǒng)預(yù)測(cè)值(白色)的對(duì)比。是不是非常智能?
以第一次加載 DeepTesla 為例:我們整個(gè)網(wǎng)絡(luò)大小為(200,66,3)的輸入層,表示寬度為200,高度66,涵蓋三個(gè)通道(紅綠藍(lán))。緊接著有一個(gè)卷積層、一個(gè)合并層與一個(gè)輸出神經(jīng)元。
ConvNetJS為我們提供了幾種訓(xùn)練算法,具體能夠在這里找到。
整個(gè) DeepTraffic 游戲?qū)嶋H上是在網(wǎng)格上運(yùn)行,但你也可以通過選擇不同的模式,讓網(wǎng)格呈現(xiàn)出來。
每輛車周圍的方格表示的是它自身的速度,而橙色區(qū)域指的是該車輛可能的行駛方位。
比如在安全系統(tǒng)中,車輛周圍會(huì)出現(xiàn)一個(gè) H 型的區(qū)域,橙色表示相對(duì)安全,而紅色表示周圍已經(jīng)有車在附近車道,此時(shí)紅色小車不能越到紅色區(qū)域。如果你提升了小車的速度,那么這個(gè)區(qū)域也會(huì)隨之變化,畢竟如果有車擋在你的面前,為了保證安全,你一定會(huì)減緩速度(這與我們這個(gè)小游戲的目標(biāo)相反)。
編程頁面主要分為三塊,一是實(shí)時(shí)的道路模擬情況,還能調(diào)整自己車輛的行駛速度,以提升測(cè)試速度;二是編程頁面,在這里可以修改神經(jīng)網(wǎng)絡(luò)的具體代碼;第三部分會(huì)顯示目前神經(jīng)網(wǎng)絡(luò)的狀態(tài),還能將代碼保存、重置或下載。
代碼區(qū)的這幾個(gè)變量可以控制網(wǎng)絡(luò)的輸入大小,更多的輸入也就意味著更復(fù)雜的交通環(huán)境,也意味著需要更長的學(xué)習(xí)時(shí)間及更大的學(xué)習(xí)難度。
整個(gè)代理由一個(gè)名為「learn」的函數(shù)所控制,該函數(shù)能夠接受當(dāng)前的狀態(tài)(以一個(gè)扁平陣列呈現(xiàn)),而所得到的反饋為行車速度,也就是以 mph 為單位的平均速度。
函數(shù)最基本的形式(告訴代理,讓車輛維持現(xiàn)狀,不需要變道或減速)大概長這樣:
而既然這是一個(gè)追求速度的「比賽」,那么你需要通過神經(jīng)網(wǎng)絡(luò)控制車輛,比如:
在初始代碼中,已經(jīng)提供了上述內(nèi)容。當(dāng)然,你可以自行對(duì)數(shù)據(jù)進(jìn)行預(yù)處理,并將這些狀態(tài)輸入網(wǎng)絡(luò),但不需要在這上面花太多時(shí)間。
這個(gè)地方就是你施展「才華」的地方——這是一個(gè)隱藏層里的一個(gè)神經(jīng)元示例。
下圖呈現(xiàn)的是最終的回歸層,它決定了最終的執(zhí)行環(huán)節(jié)將會(huì)呈現(xiàn)怎樣的結(jié)果。
在 Q-Learning 里還提供了一些其它選擇,可以在 Github 上找到。
最后一步就是創(chuàng)建“大腦”。
如果點(diǎn)擊了 run training,那么可以訓(xùn)練神經(jīng)網(wǎng)絡(luò),并以 30 倍于實(shí)時(shí)的速度實(shí)現(xiàn)單線程運(yùn)行,隨后訓(xùn)練網(wǎng)絡(luò)的結(jié)果會(huì)以可視化的形式呈現(xiàn)在電腦上,學(xué)生們也可以做一些即時(shí)反饋和改進(jìn)。
該網(wǎng)站上的評(píng)估鍵可以直接運(yùn)行同樣的任務(wù),也就相當(dāng)于小測(cè)驗(yàn)。通過每次 30 分鐘的 10 次運(yùn)行,最后將計(jì)算出每次車輛的平均速度,并取中值做為結(jié)果。而且,本地測(cè)試的評(píng)估會(huì)受到其它車輛出現(xiàn)的情況的影響,所以本地的測(cè)試只能做為參考。
值得一提的是,F(xiàn)ridman 老師表示這些車都有著安全系統(tǒng),所以不需要擔(dān)心車的反應(yīng)速度不夠快,它們不會(huì)因?yàn)槟阃蝗徊倏丶铀贉p速而出車禍的。(老師入戲好深……)
Fridman 還在主頁上公布了一個(gè)神經(jīng)網(wǎng)絡(luò)訓(xùn)練排名榜,目前有三位同學(xué)取得了很不錯(cuò)的成績,甚至還有比老師訓(xùn)練得好的,太厲害了。
老師說了,如果速度不能提上 60km/h,那你明天就不要來上課了(誤)。不過排行榜今天就截止統(tǒng)計(jì)啦,所以大家如果測(cè)試了比排行榜更高的分?jǐn)?shù),歡迎告訴雷鋒網(wǎng)小編呀,我們會(huì)找你做硬創(chuàng)公開課的。
以上只是對(duì) MIT 課程的簡單介紹,雷鋒網(wǎng)會(huì)做后續(xù)關(guān)注。
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。