首頁/ 科技/ 正文

機器學習在嵌入式系統中的應用

機器學習已經從一個有趣的研究課題迅速發展成為一個廣泛應用的有效解決方案。其明顯的有效性迅速提高了來自AI理論家社群之外不斷增長的開發人員群體的興趣。在某些方面,機器學習開發能力正在發展到一個廣泛可用的水平,與其他建立在堅實理論基礎上的技術一樣。開發一個有用的、高精度的機器學習應用程式絕非易事。儘管如此,不斷增長的機器學習生態系統極大地減少了對底層演算法深入理解的需求,並使越來越多的嵌入式開發人員對機器學習開發更感興趣,而不是對理論更感興趣。本文試圖重點介紹神經網路模型開發中使用的一些關鍵概念和方法,這本身就是一個極其多樣化的領域,也是嵌入式開發人員可以使用的一種實用機器學習方法。

與機器學習一樣,任何基於深度理論的方法都遵循從研究到工程的熟悉遷移模式。不久前,希望實現三相交流感應電動機精確控制的開發人員需要透過他們自己對相關微分方程組的解決方案來工作。如今,開發人員可以使用庫快速實現高階運動控制系統,這些庫使用非常先進的技術(如磁場定向控制、空間向量調製、梯形控制等)打包完整的電機控制解決方案。除非面臨特殊要求,否則開發人員可以部署複雜的電機控制解決方案,而無需深入瞭解底層演算法或其特定的數學方法。運動控制研究人員繼續用新的理論技術發展這門學科,但嵌入式開發人員可以開發有用的應用程式,依靠庫來抽象底層方法。

在某些方面,機器學習也達到了類似的階段。雖然機器學習演算法研究和機器學習特定硬體的進步繼續取得巨大的進步,但如果對其相關要求和當前限制有適當的瞭解,這些演算法的應用已經發展成為一種實用的工程方法。在這種情況下,機器學習可以產生有用的結果,需要的高階線性代數專業知識少於對目標應用程式資料的可觀理解,並且願意接受一種比傳統軟體開發更具實驗性的開發方法。對機器學習基礎感興趣的嵌入式開發人員會發現他們對細節的興趣完全滿足了。然而,那些幾乎沒有時間或興趣探索理論的人將發現一個不斷增長的機器學習生態系統,它有望簡化有用的機器學習應用程式的開發。

機器學習在嵌入式系統中的應用

機器學習方法

工程師可以找到最佳化的庫來支援廣泛的機器學習,包括無監督學習、強化學習和監督學習。

無監督學習可以揭示大量資料中的模式,但這種方法不能專門將這些模式標記為屬於特定資料類別。但這些技術可能在諸如物聯網等應用中被證明是重要的,以揭示資料集中的異常值或表明存在偏離資料趨勢的情況。例如,在工業應用中,一組機器的感測器讀數在統計上顯著偏離標準值,可能會作為該組機器潛在故障的指標。類似地,在大規模分散式應用程式(如物聯網應用程式)中,如果大量偏離測量的效能引數,可能會暴露出被駭客攻擊的裝置,這些裝置在數百或數千臺裝置的網路中執行正常。

強化學習為應用程式提供了一種透過實驗進行有效學習的方法,使用正反饋(獎勵)學習對事件的成功響應。例如,檢測來自一組機器的異常感測器讀數的強化學習系統可能會嘗試透過採取不同的措施,例如增加冷卻液流量、降低室溫、降低機器負載等,將這些讀數恢復到正常值。在瞭解了哪些操作導致成功後,嵌入式開發人員可以在下次系統看到相同的異常讀數時更快地執行相同的操作。強化學習可能會在大規模複雜應用(如物聯網)中得到越來越多的應用,因為在這些應用中,無法經濟高效地預測所有已實現的執行狀態。

監督學習方法消除了與識別哪一組輸入對應於哪一特定狀態(或物件)相關的猜測。在這種方法中,開發人員明確地標識與特定物件、狀態或條件相對應的輸入值或特徵的組合。在假設的機器示例中,工程師將透過一組n個特徵x來表示感興趣的問題,例如,不同的感測器輸入、機器執行時間、上次服務日期、機器壽命和其他可測量值。根據他們的專業知識,工程師然後建立一個訓練資料集–這些特徵向量(x1 x2…Xn)的多個例項,每個例項都有n個與已知輸出狀態相關的觀測值,或標籤y:

(X)11,x12、…X1N)?y1

(X)21,x22、…X2N)?y2

(X)31,x32、…X3n)?y3

給定這個訓練集,已知測量的特徵值和相應的標籤之間的關係,嵌入式開發人員訓練一個模型(方程組),能夠產生預期的標籤。yk對於每個特徵向量(x1K x2K…XNK )在訓練場。在這個訓練過程中,訓練演算法採用迭代的方法,透過調整構成模型的方程組的引數,將預測的標籤和實際的標籤之間的差異降到最小。每一次透過訓練集,稱為紀元,都會產生一組新的引數,一組與這些引數相關聯的新的預測標籤,以及相關的差異或損失。

相關文章

頂部