一文看懂自動(dòng)駕駛中應(yīng)用的機(jī)器學(xué)習(xí)算法
機(jī)器學(xué)習(xí)算法已經(jīng)被廣泛應(yīng)用于自動(dòng)駕駛各種解決方案,電控單元中的傳感器數(shù)據(jù)處理大大提高了機(jī)器學(xué)習(xí)的利用率,也有一些潛在的應(yīng)用,比如利用不同外部和內(nèi)部的傳感器的數(shù)據(jù)融合(如激光雷達(dá)、雷達(dá)、攝像頭或物聯(lián)網(wǎng)),評估駕駛員狀況或?yàn)轳{駛場景分類等。
在 KDnuggets 網(wǎng)站最近發(fā)表的一篇文章中,作者 Savaram Ravindra 將自動(dòng)駕駛中機(jī)器學(xué)習(xí)算法主要分為四類,即決策矩陣算法、聚類算法、模式識別算法和回歸算法。
我們跟他一起看看,這些算法都是怎樣應(yīng)用的。
算法概覽
我們先設(shè)想這樣一個(gè)自動(dòng)駕駛場景——汽車的信息娛樂系統(tǒng)接收傳感器數(shù)據(jù)融合系統(tǒng)的信息,如果系統(tǒng)發(fā)現(xiàn)司機(jī)身體有恙,會(huì)指導(dǎo)無人車開往附近的醫(yī)院。
這項(xiàng)應(yīng)用以機(jī)器學(xué)習(xí)為基礎(chǔ),能識別司機(jī)的語音、行為,進(jìn)行語言翻譯等。所有這些算法可以分為兩類:監(jiān)督學(xué)習(xí)和無監(jiān)督學(xué)習(xí),二者的區(qū)別在它們學(xué)習(xí)的方法。
監(jiān)督學(xué)習(xí)算法利用訓(xùn)練數(shù)據(jù)集學(xué)習(xí),并會(huì)堅(jiān)持學(xué)到達(dá)到所要求的置信度(誤差的最小概率)。監(jiān)督學(xué)習(xí)算法可分為回歸、分類和異常檢測或維度縮減問題。
無監(jiān)督學(xué)習(xí)算法會(huì)在可用數(shù)據(jù)中獲取價(jià)值。這意味著算法能找到數(shù)據(jù)的內(nèi)部聯(lián)系、找到模式,或者根據(jù)數(shù)據(jù)間的相似程度將數(shù)據(jù)集劃分出子集。無監(jiān)督算法可以被粗略分類為關(guān)聯(lián)規(guī)則學(xué)習(xí)和聚類。
強(qiáng)化學(xué)習(xí)算法是另一類機(jī)器學(xué)習(xí)算法,這種學(xué)習(xí)方法介于監(jiān)督學(xué)習(xí)和無監(jiān)督學(xué)習(xí)之間。
監(jiān)督學(xué)習(xí)會(huì)給每個(gè)訓(xùn)練樣例目標(biāo)標(biāo)簽,無監(jiān)督學(xué)習(xí)從來不會(huì)設(shè)立標(biāo)簽——而強(qiáng)化學(xué)習(xí)就是它們的平衡點(diǎn),它有時(shí)間延遲的稀疏標(biāo)簽——也就是未來的獎(jiǎng)勵(lì)。
每個(gè) agent 會(huì)根據(jù)環(huán)境獎(jiǎng)勵(lì)學(xué)習(xí)自身行為。了解算法的優(yōu)點(diǎn)和局限性,并開發(fā)高效的學(xué)習(xí)算法是強(qiáng)化學(xué)習(xí)的目標(biāo)。
在自動(dòng)駕駛汽車上,機(jī)器學(xué)習(xí)算法的主要任務(wù)之一是持續(xù)感應(yīng)周圍環(huán)境,并預(yù)測可能出現(xiàn)的變化。
我們不妨分成四個(gè)子任務(wù):
- 檢測對象
- 物體識別及分類
- 物體定位
- 運(yùn)動(dòng)預(yù)測
機(jī)器學(xué)習(xí)算法也可以被寬松地分為四類:
- 決策矩陣算法
- 聚類算法
- 模式識別算法
- 回歸算法
機(jī)器學(xué)習(xí)算法和任務(wù)分類并不是一一對應(yīng)的,比如說,回歸算法既可以用于物體定位,也可以用于對象檢測和運(yùn)動(dòng)預(yù)測。
決策矩陣算法
決策矩陣算法能系統(tǒng)分析、識別和評估一組信息集和值之間關(guān)系的表現(xiàn),這些算法主要是用戶決策。車輛的制動(dòng)或轉(zhuǎn)向是有依據(jù)的,它依賴算法對下一個(gè)運(yùn)動(dòng)的物體的識別、分類、預(yù)測的置信水平。
決策矩陣算法是由獨(dú)立訓(xùn)練的各種決策模型組合起來的模型,某種程度上說,這些預(yù)測組合在一起構(gòu)成整體的預(yù)測,同時(shí)降低決策的錯(cuò)誤率。AdaBoosting 是最常用的算法。
AdaBoost
Adaptive Boosting 算法也可以簡稱為 AdaBoost,它是多種學(xué)習(xí)算法的結(jié)合,可應(yīng)用于回歸和分類問題。
與其他機(jī)器學(xué)習(xí)算法相比,它克服了過擬合問題,并且對異常值和噪聲數(shù)據(jù)非常敏感。
AdaBoost 需要經(jīng)過多次迭代才能創(chuàng)造出強(qiáng)學(xué)習(xí)器,它具有自適應(yīng)性。學(xué)習(xí)器將重點(diǎn)關(guān)注被分類錯(cuò)誤的樣本,最后再通過加權(quán)將弱學(xué)習(xí)器組合成強(qiáng)學(xué)習(xí)器。
AdaBoost 幫助弱閾值分類器提升為強(qiáng)分類器。上面的圖像描繪了如何在一個(gè)可以理解性代碼的單個(gè)文件中實(shí)現(xiàn) AdaBoost 算法。該函數(shù)包含一個(gè)弱分類器和 boosting 組件。
弱分類器嘗試在數(shù)據(jù)維數(shù)中找到理想閾值,并將數(shù)據(jù)分為 2 類。分類器迭代時(shí)調(diào)用數(shù)據(jù),并在每個(gè)分類步驟后,改變分類樣本的權(quán)重。
因此,它實(shí)際創(chuàng)建了級聯(lián)的弱分類器,但性能像強(qiáng)分類器一樣好。
聚類算法
有時(shí),系統(tǒng)獲取的圖像不清楚,難以定位和檢測對象,分類算法有可能丟失對象。在這種情況下,它們無法對問題分類并將其報(bào)告給系統(tǒng)。
造成這種現(xiàn)象可能的原因包括不連續(xù)數(shù)據(jù)、極少的數(shù)據(jù)點(diǎn)或低分辨率圖像。K-means 是一種常見的聚類算法。
K-means
K-means 是著名的聚類算法,它從數(shù)據(jù)對象中選擇任意 k 個(gè)對象作為初始聚類中心,再根據(jù)每個(gè)聚類對象的均值(中心對象)計(jì)算出每個(gè)對象與中心對象的距離,然后根據(jù)最小距離重新劃分對象,最后重新計(jì)算調(diào)整后的聚類的均值。
下圖形象描述了 K-means 算法。其中:
- (a)表示原始數(shù)據(jù)集。
- (b)表示隨機(jī)初始聚類中心。
- (c-f)表示運(yùn)行 2 次 k-means 迭代演示。
模式識別算法(分類)
通過高級駕駛輔助系統(tǒng)(ADAS)中的傳感器獲得的圖像由各種環(huán)境數(shù)據(jù)組成,圖像過濾可以用來決定物體分類樣例,排除無關(guān)的數(shù)據(jù)點(diǎn)。
在對物體分類前,模式識別是一項(xiàng)重要步驟,這種算法被定義為數(shù)據(jù)簡化算法。數(shù)據(jù)簡化算法可以減少數(shù)據(jù)集的邊緣和折線(擬合線段)。
PCA(原理分量分析)和 HOG(定向梯度直方圖),支持向量機(jī)(Support Vector Machines,SVM)是 ADAS 中常用的識別算法。
我們也經(jīng)常用到 K 最近鄰(KNN,K-NearestNeighbor)分類算法和貝葉斯決策規(guī)則。
支持向量機(jī)(SVM)
SVM 依賴于定義決策邊界的決策層概念。決策平面分隔由不同的類成員組成的對象集。
下面是一個(gè)示意圖,在這里,物體要么屬于紅色類要么綠色類,分隔線將彼此分隔開。落在左邊的新物體會(huì)被標(biāo)記為紅色,落在右邊就被標(biāo)記為綠色。
回歸算法
這種算法的專長是預(yù)測事件,回歸分析會(huì)對兩個(gè)或更多變量之間的關(guān)聯(lián)性進(jìn)行評估,并對不同規(guī)模上的變量效果進(jìn)行對照。
回歸算法通常由三種度量標(biāo)準(zhǔn)驅(qū)動(dòng):
- 回歸線的形狀
- 因變量的類型
- 因變量的數(shù)量
在無人車的驅(qū)動(dòng)和定位方面,圖像在 ADAS 系統(tǒng)中扮演著關(guān)鍵角色。對于任何算法來說,最大的挑戰(zhàn)都是如何開發(fā)一種用于進(jìn)行特征選取和預(yù)測的、基于圖像的模型。
回歸算法利用環(huán)境的可重復(fù)性來創(chuàng)造一個(gè)概率模型,這個(gè)模型揭示了圖像中給定物體位置與該圖像本身間的關(guān)系。
通過圖形采樣,此概率模型能夠提供迅速的在線檢測,同時(shí)也可以在線下進(jìn)行學(xué)習(xí)。模型還可以在不需要大量人類建模的前提下被進(jìn)一步擴(kuò)展到其他物體上。
算法會(huì)將某一物體的位置以一種在線狀態(tài)下的輸出和一種對物體存在的信任而返回。
回歸算法同樣可以被應(yīng)用到短期預(yù)測和長期學(xué)習(xí)中,在自動(dòng)駕駛上,則尤其多用于決策森林回歸、神經(jīng)網(wǎng)絡(luò)回歸以及貝葉斯回歸。
回歸神經(jīng)網(wǎng)絡(luò)
神經(jīng)網(wǎng)絡(luò)可以被用在回歸、分類或非監(jiān)督學(xué)習(xí)上。它們將未標(biāo)記的數(shù)據(jù)分組并歸類,或者監(jiān)督訓(xùn)練后預(yù)測連續(xù)值。
神經(jīng)網(wǎng)絡(luò)的最后一層通常通過邏輯回歸將連續(xù)值變?yōu)樽兞?0 或 1。
在上面的圖表中,x 代表輸入,特征從網(wǎng)絡(luò)中的前一層傳遞到下一層。許多 x 將輸入到最后一個(gè)隱藏層的每個(gè)節(jié)點(diǎn),并且每一個(gè) x 將乘以相關(guān)權(quán)重 w。
乘積之和將被移動(dòng)到一個(gè)激活函數(shù)中,在實(shí)際應(yīng)用中我們經(jīng)常用到 ReLu 激活函數(shù)。它不像 Sigmoid 函數(shù)那樣在處理淺層梯度問題時(shí)容易飽和。