首頁 / 資訊中心 / 交通百科/工智能自動(dòng)駕駛汽車中機(jī)器學(xué)習(xí)的深度壓縮與修剪

工智能自動(dòng)駕駛汽車中機(jī)器學(xué)習(xí)的深度壓縮與修剪

發(fā)布時(shí)間:2018-08-06 分類:交通百科

存儲(chǔ)數(shù)據(jù)時(shí),您往往沒有無限的存儲(chǔ)空間,因此需要考慮如何減少數(shù)據(jù)量,但仍保持?jǐn)?shù)據(jù)所代表的含義。如果你過度刪除數(shù)據(jù),那么你可能會(huì)減少數(shù)據(jù)量,但同時(shí)你可能已經(jīng)拋棄了必要的方面而且損失是一件壞事。同樣,您可以嘗試保留數(shù)據(jù),不是修剪它而是壓縮它。壓縮是將事物壓縮在一起并且可以減少總空間量,但同時(shí)您需要考慮您是否可以輕松訪問數(shù)據(jù),因?yàn)樗枰鈮嚎s才能將其恢復(fù)到可讀狀態(tài)。

人工智能

有時(shí)候你只專注于修剪,有時(shí)候你只關(guān)注壓縮,有時(shí)候,同時(shí)進(jìn)行壓縮和修剪是很方便的。從計(jì)算機(jī)的角度來看,壓縮和修剪的操作可能是計(jì)算密集型的,因此您需要確定這樣做是否有效的投資回報(bào)。如果壓縮和修剪的努力是一次性的,那么結(jié)果就會(huì)一次又一次地使用,那么一次性預(yù)先壓縮和修剪的成本就更有可能是值得的。您可能會(huì)減少總體所需的存儲(chǔ)量,并且緊湊性可能會(huì)使數(shù)據(jù)更容易存儲(chǔ),且存儲(chǔ)成本更低。

這和人工智能自動(dòng)駕駛汽車有什么關(guān)系?

在控制論自動(dòng)駕駛汽車研究所,我們正在使用機(jī)器學(xué)習(xí)的深度壓縮和修剪來使神經(jīng)網(wǎng)絡(luò)更緊湊,更便于在自動(dòng)駕駛汽車中使用。

神經(jīng)網(wǎng)絡(luò)的修剪可以追溯到人工神經(jīng)網(wǎng)絡(luò)出現(xiàn)的早期。在20世紀(jì)90年代,許多研究試圖找到修剪神經(jīng)網(wǎng)絡(luò)的方法。最重要的思想是考慮所有可能的神經(jīng)網(wǎng)絡(luò)拓?fù)?,適用于手頭的問題,并從這些變體中選擇一個(gè)在最小的大小上具有相同輸出的變體。不幸的是,試圖通過所有的可能性去尋找“最好的”,通常是不可行的,因?yàn)榇罅康慕M合和排列,將需要審查。因此,有各種各樣的拇指修剪規(guī)則被開發(fā)出來,指導(dǎo)人們進(jìn)行不那么全面的修剪,同時(shí)也試圖找到一個(gè)更小的神經(jīng)網(wǎng)絡(luò),即使它不是最優(yōu)的最小的神經(jīng)網(wǎng)絡(luò)-它至少比它本來可能要小的多。

在發(fā)展神經(jīng)網(wǎng)絡(luò)時(shí),有四個(gè)主要階段:

1、據(jù)需要設(shè)計(jì)神經(jīng)網(wǎng)絡(luò)。

2、神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,以找到合適的。

3、成正在使用的神經(jīng)網(wǎng)絡(luò)。

4、神經(jīng)網(wǎng)絡(luò)用于現(xiàn)實(shí)世界的行動(dòng)。

在進(jìn)行設(shè)計(jì)的第一階段,開發(fā)人員需要考慮諸如有多少層、有多少個(gè)神經(jīng)元、有多少個(gè)突觸(連接)等方面。最外層通常用于接收輸入和提供輸出,因此主要用于外部性目的。神經(jīng)網(wǎng)絡(luò)中的其他層有時(shí)被稱為隱藏層,位于最外層之間。每一層中的神經(jīng)元與該層中的其他神經(jīng)元相互連接,也可以與其他層中的神經(jīng)元相互連接。每個(gè)神經(jīng)元可以有一些扇入連接和一些扇出連接。

對(duì)于一個(gè)給定的問題,你想要使用神經(jīng)網(wǎng)絡(luò),你需要考慮有多少層,多少神經(jīng)元,多少連接,等等。如果你去挑選一些任意大的大小野豬,你可能會(huì)發(fā)現(xiàn),訓(xùn)練的難度可以相當(dāng)高。如果你太保守,沒有足夠的規(guī)模,你將不太可能有成功的神經(jīng)網(wǎng)絡(luò),試圖匹配的問題,并達(dá)到預(yù)期的結(jié)果。

讓我們假設(shè)你正在設(shè)計(jì)一個(gè)神經(jīng)網(wǎng)絡(luò)來嘗試識(shí)別路標(biāo)。這個(gè)神經(jīng)網(wǎng)絡(luò)將是人工智能自動(dòng)駕駛汽車系統(tǒng)的一部分。當(dāng)圖像呈現(xiàn)給神經(jīng)網(wǎng)絡(luò)時(shí),您希望神經(jīng)網(wǎng)絡(luò)能夠準(zhǔn)確地找到路標(biāo)。自動(dòng)駕駛汽車有攝像頭,可以拍照,并將照片發(fā)送到車載神經(jīng)網(wǎng)絡(luò)。然后,神經(jīng)網(wǎng)絡(luò)試圖確定前面是否有停車標(biāo)志,并提醒人工智能系統(tǒng)的其他部分,這樣自動(dòng)駕駛汽車就會(huì)適當(dāng)?shù)赝O聛怼?

車載神經(jīng)網(wǎng)絡(luò)將消耗存儲(chǔ)空間和處理器時(shí)間,以完成對(duì)自動(dòng)駕駛汽車攝像頭產(chǎn)生的圖像進(jìn)行分析的工作。自動(dòng)駕駛汽車上的計(jì)算機(jī)需要足夠強(qiáng)大,能夠容納神經(jīng)網(wǎng)絡(luò),并且速度足夠快,以確保神經(jīng)網(wǎng)絡(luò)能夠及時(shí)地進(jìn)行匹配。如果攝像機(jī)提供了一個(gè)路標(biāo)的圖像,如果自動(dòng)駕駛汽車正以較快的速度向前行駛,如果神經(jīng)網(wǎng)絡(luò)花了太長的時(shí)間來判斷該標(biāo)志是否是停車標(biāo)志,那么自動(dòng)駕駛汽車的人工智能可能會(huì)直接穿過停車標(biāo)志,因?yàn)閺纳窠?jīng)網(wǎng)絡(luò)獲得路標(biāo)分析結(jié)果的時(shí)間太晚了。

考慮到自動(dòng)駕駛汽車需要數(shù)以噸計(jì)的神經(jīng)網(wǎng)絡(luò)來分析來自相機(jī)、激光雷達(dá)和聲納等設(shè)備的各種輸入,你就會(huì)開始意識(shí)到車載計(jì)算機(jī)的數(shù)量和它們的存儲(chǔ)需求是相當(dāng)令人望而生畏的。另外,還要考慮所有這些計(jì)算機(jī)的能量需求。你需要有一個(gè)巨大的電池或其他能源生產(chǎn)的自動(dòng)駕駛汽車的元素,只是為所有的電腦所需的車載。

因此,總的來說,將神經(jīng)網(wǎng)絡(luò)的規(guī)模保持在盡可能小的范圍內(nèi)是至關(guān)重要的。但是,這必須以一種不過分限制它們的工作方式來完成。如果我們修剪和壓縮一個(gè)路標(biāo)神經(jīng)網(wǎng)絡(luò),使它很小,但如果它在識(shí)別路標(biāo)方面做得很差,假設(shè)它只能在某些時(shí)候找出一個(gè)停車標(biāo)志,那么我們將把自動(dòng)駕駛汽車的其他部分和乘員置于更高的風(fēng)險(xiǎn)中。

因此,開發(fā)人員在設(shè)計(jì)階段必須設(shè)法衡量他們認(rèn)為使用的大小是合理的。然后,在訓(xùn)練階段,他們對(duì)大樣本數(shù)據(jù)進(jìn)行神經(jīng)網(wǎng)絡(luò)訓(xùn)練,看看神經(jīng)網(wǎng)絡(luò)對(duì)數(shù)據(jù)的訓(xùn)練效果如何。你希望神經(jīng)網(wǎng)絡(luò)達(dá)到一種泛化的狀態(tài),這樣一旦投入使用,它就能很好地工作。如果神經(jīng)網(wǎng)絡(luò)與訓(xùn)練數(shù)據(jù)“相適應(yīng)”,這意味著神經(jīng)網(wǎng)絡(luò)在訓(xùn)練集上做得很好,但一旦投入使用,它就可能做得不好(因?yàn)檫^于專注于訓(xùn)練數(shù)據(jù))。

在神經(jīng)網(wǎng)絡(luò)得到充分的訓(xùn)練后,開發(fā)人員就會(huì)做一些最終的完成方面的工作,以準(zhǔn)備好在持續(xù)的基礎(chǔ)上使用神經(jīng)網(wǎng)絡(luò)。在某些情況下,神經(jīng)網(wǎng)絡(luò)將是稀疏的,例如有大量未使用的神經(jīng)元或未使用的連接,等等。大多數(shù)開發(fā)人員傾向于在達(dá)到這個(gè)完成階段時(shí)考慮修剪。他們可能沒有意識(shí)到,在設(shè)計(jì)階段,他們可能已經(jīng)在做修剪工作了,也就是說,也許他們最初在N+1大小時(shí)就可以建立一個(gè)N大小的神經(jīng)網(wǎng)絡(luò),而是選擇了N+1,換句話說,他們只是在開始時(shí)決定在進(jìn)入訓(xùn)練階段時(shí)大小會(huì)是多少。

這里的要點(diǎn)是,您可以在任何階段進(jìn)行修剪。在最初設(shè)計(jì)神經(jīng)網(wǎng)絡(luò)時(shí),你基本上可以做修剪。一旦神經(jīng)網(wǎng)絡(luò)正在進(jìn)行訓(xùn)練,你可以做修剪,看看它如何影響訓(xùn)練。而且,一旦神經(jīng)網(wǎng)絡(luò)被訓(xùn)練,在完成階段,你可以做修剪。

修剪的類型包括:

1、少層數(shù)(這通常是最劃算的)。

2、減連接的數(shù)目。

3、少神經(jīng)元的數(shù)目。

4、掉加權(quán)數(shù)。

5、他方面。

如果你能以某種方式消除整個(gè)神經(jīng)網(wǎng)絡(luò)層,那么就減少神經(jīng)網(wǎng)絡(luò)的規(guī)模和復(fù)雜性而言,這往往是最大的回報(bào)。話雖如此,但減少整個(gè)層的可能性通常較小。另外,我不想誤導(dǎo)你,因?yàn)槟憧赡苡幸粋€(gè)層,一開始是相當(dāng)少的,因此通過刪除該層的修剪量可能沒有你能夠修剪的連接或神經(jīng)元等的數(shù)量那么大的回報(bào)。每個(gè)神經(jīng)網(wǎng)絡(luò)都有它自己的形狀,因此修剪的收益取決于這個(gè)形狀。

在假設(shè)修剪很容易的時(shí)候,你也應(yīng)該小心。

你有沒有試過修剪一棵在你家周圍長滿了的樹或灌木?把它砍掉,你一開始就想。如果你這樣做,你會(huì)發(fā)現(xiàn)有時(shí)樹木或灌木會(huì)受到傷害,無法再長出來。修剪的方法有時(shí)是正確的,有時(shí)是錯(cuò)誤的。神經(jīng)網(wǎng)絡(luò)也是如此。如果你用錯(cuò)誤的方法修剪,你將開始失去擁有神經(jīng)網(wǎng)絡(luò)的意義。因此,在修剪過程中,您需要檢查神經(jīng)網(wǎng)絡(luò)對(duì)您所承擔(dān)的每個(gè)修剪操作的敏感性。

除了修剪,開發(fā)人員還應(yīng)該考慮如何可能壓縮神經(jīng)網(wǎng)絡(luò)。例如,如果查看用于神經(jīng)元的權(quán)重,有時(shí)會(huì)發(fā)現(xiàn)有些權(quán)重為零(在這種情況下,這些神經(jīng)元是可能修剪的候選),或接近于零(更多的候選修剪),或具有一個(gè)通常重復(fù)的值,您可能會(huì)對(duì)它們進(jìn)行壓縮。用于神經(jīng)網(wǎng)絡(luò)壓縮的最流行的壓縮技術(shù)之一是應(yīng)用Huffman編碼。從本質(zhì)上說,Huffman編碼技術(shù)采用頻繁出現(xiàn)的代碼,例如在神經(jīng)網(wǎng)絡(luò)中反復(fù)使用相同的權(quán)重,并生成一個(gè)大小更短的替代代碼,但仍然在需要時(shí)返回原始代碼(這稱為無損數(shù)據(jù)壓縮)。

在人工智能自動(dòng)駕駛汽車的情況下,修剪和壓縮最有可能對(duì)一種被稱為卷積神經(jīng)網(wǎng)絡(luò)的神經(jīng)網(wǎng)絡(luò)有很大的回報(bào),這是一種用于圖像分析和視覺模式匹配的神經(jīng)網(wǎng)絡(luò)。我們已經(jīng)在人工智能自動(dòng)駕駛汽車的路標(biāo)分析神經(jīng)網(wǎng)絡(luò)和行人檢測神經(jīng)網(wǎng)絡(luò)上看到了這種良好的工作。

對(duì)于許多人工智能自動(dòng)駕駛汽車開發(fā)人員來說,他們目前主要是在努力制造適用于人工智能自動(dòng)駕駛汽車的神經(jīng)網(wǎng)絡(luò),而不太關(guān)心神經(jīng)網(wǎng)絡(luò)是否會(huì)占用大量的存儲(chǔ)空間或花費(fèi)大量的處理時(shí)間。一旦他們的神經(jīng)網(wǎng)絡(luò)在現(xiàn)場工作,對(duì)這些開發(fā)人員來說,這將變得更加明顯,這是一個(gè)巨大的飛躍。