1. 程式人生 > >從整合方法到神經網路:自動駕駛技術中的機器學習演算法有哪些?

從整合方法到神經網路:自動駕駛技術中的機器學習演算法有哪些?

來源:機器之心

編譯:Lj Linjing、蔣思源

物聯網智庫 原創

轉載請註明來源和出處

------   【導讀】------

機器學習演算法可以融合來自車體內外不同感測器的資料,從而評估駕駛員狀況或者對駕駛場景進行分類。本文將粗略講解一下各類用於自動駕駛技術的演算法。

如今,機器學習演算法正大規模地用於解決自動駕駛汽車產業日益增多的問題。結合 ECU (電子控制單元)感測器資料,我們須加強對機器學習方法的利用以迎接新的挑戰。潛在的應用包括利用分佈在車體內外的感測器,比如鐳射探測、雷達、攝像頭或者物聯網(IoT),融合各類資料進行駕駛員狀況評估或者駕駛場景分類。

執行車載輔助系統的相關程式可從資料融合感測系統接收相關資訊進行判斷。比如,如果系統注意到駕駛員有不適的情況出現,其可以令汽車改道去往醫院。這項技術基於機器學習,且能對駕駛員的語音及動作進行識別,同時還有語言翻譯。演算法總的來說可以分為監督式學習和非監督式學習兩大類。二者的區別在於學習方式不同。

監督式學習通過給定的訓練集來學習,該學習過程一直持續到模型達到預設的期望值(即錯誤率達到最小)。監督式學習演算法可以分為迴歸、分類以及異常資料檢測或降維演算法等幾大類。

非監督式學習試圖從可用資料集中學習到其內部結構與模式。這意味著,基於提供的資料,演算法旨在推匯出一種關係,以便根據各個資料之間的相似度來檢測模式或者將資料集內部資料自動分類。無監督演算法很大一部分可以進一步分類為關聯規則學習和聚類演算法等。

強化學習演算法是介於非監督式學習和監督式學習的另外一類機器學習演算法。對於每個訓練樣本來說,監督式學習有對應的類別標籤而非監督式學習沒有。強化學習則是將時間延遲和稀疏標籤作為獎勵機制的一部分。在環境中學習的行為方式取決於獎勵機制的設定。強化學習的目的在於瞭解演算法的優劣勢並對演算法進行改進。該演算法有望用於解決實際應用當中產生的大量問題,涵蓋從人工智慧到工程控制或操作研究的方方面面,而這些都關乎自動駕駛汽車的發展走向。強化學習可分為間接學習和直接學習兩大類。

在自動駕駛技術中,機器學習演算法的主要任務之一就是持續渲染周圍環境並預測周圍環境可能產生的變化。這些可以分解為以下三個子類:

  • 目標檢測

  • 目標辨認或者目標識別分類

  • 目標定位和運動預判

機器學習演算法可大致分為四種:決策矩陣、聚類演算法、模式識別和迴歸演算法。每種可以用於兩個或多個子任務。比如,迴歸演算法可以用於目標定位以及目標預測或者行為預判。


決策矩陣演算法

決策矩陣算法系統地分析、識別及評估資訊本身和值之間的關係,這類演算法主要用於作出決策。汽車是否需要制動或左轉是基於演算法對物體的下一次運動的識別、分類和預測給定的置信度。決策矩陣演算法是由從各種角度獨立訓練,並由各決策模型組成的模型矩陣。其優點是將這些預測結合起來進行總體預測,同時降低決策中錯誤的可能性。AdaBoosting 是其中最常用的一種演算法。

AdaBoosting(Adaptive Boosting 的簡稱)

 AdaBoosting 是將多種學習演算法組合起來,可用於迴歸或者分類。與其他機器學習演算法相比,該演算法克服了過擬合問題,但對異常值和噪音資料通常比較敏感。為了構建出強學習方法,AdaBoost 通常會進行多次迭代,這也是其被稱為『適應性』增強演算法的原因。AdaBoosting 如同其他提升方法一樣通過整合一些弱學習器的學習能力從而進階成一個強學習器。具體到演算法,AdaBoost 在之前學習器的基礎上改變樣本的權重,增加那些之前被分類錯誤的樣本的比重,降低分類正確樣本的比重。之後,學習器將重點關注那些被分類錯誤的樣本。這樣的結果就是我們將得到一個比弱學習器的分類器精度更高的分類器。


AdaBoost 有助於將弱閾值分類器提升為強分類器。上圖具體展示了 AdaBoost 的實現的場景。弱分類器嘗試在資料維度中取得一個理想閾值,使得資料能分為兩類。分類器在迭代以及每個分類步驟之後得到呼叫,改變錯誤分類樣本的權重,從而建立了一個類似強分類器的級聯弱分類器。

聚類演算法

遇到某些情況(比如系統採集的影象不清晰,難以用於定位和檢測;或者使用分類演算法有可能跟丟檢測物件),系統無法對目標進行分類並彙總報告。其原因也許包括資料不連貫,資料樣本太少或影象解析度低等。聚類演算法能夠專門從資料中發現結構,通過分層和設定質心點的方法來建模。所有方法都旨在利用資料的內在結構將資料分門別類,且保證每類的資料擁有最高的相似性。K-均值聚類、層次聚類和多類神經網路是其中最具代表性的演算法。

K-均值聚類

K-均值聚類是一種十分出名的聚類演算法。該演算法將樣本聚類成 k 個叢集(cluster),k 用於定義各叢集的 k 個質心點。如果一個點比其他任何質心點更接近該簇初始的質心點,那麼這個點就存在於該簇類中。質心點的更新則根據計算當前分配的資料點到簇類的歐氏距離來進行。將資料點歸於某個叢集則取決於當前的質心點是哪些。

K-means 演算法示意圖。叉表示各叢集質心點,點表示訓練資料(a)原始資料集(b) 隨機設定的初始質心點(c-f) 兩輪迭代之後的資料分佈。每個訓練資料在每次迭代中分配給最接近的聚類質心點,將該類資料的均值作為聚類質心,更新聚類質心點。

模式識別演算法(分類)

高階駕駛輔助系統(ADAS)的感測器獲得的影象由各種環境資料組成,但確定物件類別須濾掉影象。所以我們需要濾除無關資料來實現。在分類物件之前,模式識別在資料集中是很重要的一步。這種演算法被稱為資料簡化演算法。

資料簡化演算法有助於減少物件的邊和聚合線(擬合為線段和圓弧)。直到在某個結點,聚合線與邊連成一條直線,此後出現一條新的聚合線。圓弧和形似圓弧的線也類似。各種影象的特徵(圓弧和線段)組合起來,用於確定某一物體的特徵。

相較於 PCA(主成分分析法)和 HOG(定向梯度直方圖),支援向量機(Support Vector Machines)是高階駕駛輔助系統(ADAS)中常用的識別演算法。與此同時,K 近鄰(KNN)和貝葉斯決策法則也同樣經常用到。

支援向量機(SVM)

支援向量機(SVM)主要在於如何定義決策邊界或分離超平面。SVM 的超平面會在保留最大間隔的情況下把不同類別的資料分隔開。在如下示意圖中,資料分屬紅綠兩類。一個超平面將紅綠資料分開。任何落在左側的新物件都將標記為紅色,落在右側的都將標記為綠色。

迴歸演算法

該演算法非常適用於對事件的預測。迴歸分析對兩個或者兩個以上變數之間的關係進行評估,並核對出變數在不同程度上產生的影響。通常有以下三種指標:

  • 迴歸曲線的樣式

  • 因變數的型別

  • 自變數的數量

影象訊號(攝像機或雷達)的啟動和定位在高階輔助駕駛系統中起著重要的作用。對於任何演算法而言,最大的挑戰在於開發基於影象特徵選擇及預測的模型。

給定物體在影象中的位置與該影象,迴歸演算法可以利用環境的重複性創建出一個關係統計模型。該模型允許影象取樣,並提供快速線上檢測和離線學習模式。它還可以進一步擴充套件到其他物體而無需大量人工建模。作為線上實時輸出以及對物體存在的反饋,演算法將自動返回該物體的位置。

迴歸演算法亦可用於短期預測和長期學習。可以用於自動駕駛的迴歸演算法包括決策森林迴歸,神經網路迴歸和貝葉斯迴歸等。

神經網路迴歸

神經網路可以用於迴歸、分類或者非監督式學習。這類演算法可以基於無監督將未經標註的資料進行分類,或者在監督訓練之後用來預測後續的數值。神經網路通常使用 logistic 迴歸作為網路的最後一層將連續性的據轉換成 1 或 0 這樣的離散型變數。

上圖中可以看到,『x』 是輸入資料,特徵從網路結構的輸入層開始傳遞。在向後傳遞沒經過一條邊時,每一個特徵值『x』會被乘以一個相應的權重『w』。所有乘積之和將通過一個啟用函式 ReLU 使結果可用於非線性分類。ReLU 十分常用,它不像 sigmoid 函式那樣在淺層梯度情況下易趨於飽和(當輸入非常大或者非常小的時候,神經元的梯度是接近於 0 的。如果這樣,大部分神經元可能都會處在飽和狀態而令梯度消失,這會導致網路變的很難學習)。ReLU 為每個隱藏神經元提供一個啟用輸出並傳遞到下一個輸出神經元中。這意味著執行迴歸的神經網路包含單個輸出節點,且該節點將先前層的啟用數值總和乘以 1。圖中的神經網路預測『y_hat』便是結果。『y_hat』是所有 x 對映的因變數。我們以這種方式使用神經網路,從而通過與 y(單個因變數)相關的 x(多個自變數)而預測連續值結果。