機器學習已經(jīng)從一個有趣的研究課題迅速發(fā)展成為一個廣泛應(yīng)用的有效解決方案。其明顯的有效性迅速提高了來自AI理論家社區(qū)之外不斷增長的開發(fā)人員群體的興趣。在某些方面,機器學習開發(fā)能力正在發(fā)展到一個廣泛可用的水平,與其他建立在堅實理論基礎(chǔ)上的技術(shù)一樣。開發(fā)一個有用的、高精度的機器學習應(yīng)用程序絕非易事。盡管如此,不斷增長的機器學習生態(tài)系統(tǒng)極大地減少了對底層算法深入理解的需求,并使越來越多的嵌入式開發(fā)人員對機器學習開發(fā)更感興趣,而不是對理論更感興趣。本文試圖重點介紹神經(jīng)網(wǎng)絡(luò)模型開發(fā)中使用的一些關(guān)鍵概念和方法,這本身就是一個極其多樣化的領(lǐng)域,也是嵌入式開發(fā)人員可以使用的一種實用機器學習方法。
與機器學習一樣,任何基于深度理論的方法都遵循從研究到工程的熟悉遷移模式。不久前,希望實現(xiàn)三相交流感應(yīng)電動機精確控制的開發(fā)人員需要通過他們自己對相關(guān)微分方程組的解決方案來工作。如今,開發(fā)人員可以使用庫快速實現(xiàn)高級運動控制系統(tǒng),這些庫使用非常先進的技術(shù)(如磁場定向控制、空間矢量調(diào)制、梯形控制等)打包完整的電機控制解決方案。除非面臨特殊要求,否則開發(fā)人員可以部署復雜的電機控制解決方案,而無需深入了解底層算法或其特定的數(shù)學方法。運動控制研究人員繼續(xù)用新的理論技術(shù)發(fā)展這門學科,但嵌入式開發(fā)人員可以開發(fā)有用的應(yīng)用程序,依靠庫來抽象底層方法。
在某些方面,機器學習也達到了類似的階段。雖然機器學習算法研究和機器學習特定硬件的進步繼續(xù)取得巨大的進步,但如果對其相關(guān)要求和當前限制有適當?shù)牧私猓@些算法的應(yīng)用已經(jīng)發(fā)展成為一種實用的工程方法。在這種情況下,機器學習可以產(chǎn)生有用的結(jié)果,需要的高級線性代數(shù)專業(yè)知識少于對目標應(yīng)用程序數(shù)據(jù)的可觀理解,并且愿意接受一種比傳統(tǒng)軟件開發(fā)更具實驗性的開發(fā)方法。對機器學習基礎(chǔ)感興趣的嵌入式開發(fā)人員會發(fā)現(xiàn)他們對細節(jié)的興趣完全滿足了。然而,那些幾乎沒有時間或興趣探索理論的人將發(fā)現(xiàn)一個不斷增長的機器學習生態(tài)系統(tǒng),它有望簡化有用的機器學習應(yīng)用程序的開發(fā)。
機器學習方法
工程師可以找到優(yōu)化的庫來支持廣泛的機器學習,包括無監(jiān)督學習、強化學習和監(jiān)督學習。
無監(jiān)督學習可以揭示大量數(shù)據(jù)中的模式,但這種方法不能專門將這些模式標記為屬于特定數(shù)據(jù)類別。但這些技術(shù)可能在諸如物聯(lián)網(wǎng)等應(yīng)用中被證明是重要的,以揭示數(shù)據(jù)集中的異常值或表明存在偏離數(shù)據(jù)趨勢的情況。例如,在工業(yè)應(yīng)用中,一組機器的傳感器讀數(shù)在統(tǒng)計上顯著偏離標準值,可能會作為該組機器潛在故障的指標。類似地,在大規(guī)模分布式應(yīng)用程序(如物聯(lián)網(wǎng)應(yīng)用程序)中,如果大量偏離測量的性能參數(shù),可能會暴露出被黑客攻擊的設(shè)備,這些設(shè)備在數(shù)百或數(shù)千臺設(shè)備的網(wǎng)絡(luò)中運行正常。
強化學習為應(yīng)用程序提供了一種通過實驗進行有效學習的方法,使用正反饋(獎勵)學習對事件的成功響應(yīng)。例如,檢測來自一組機器的異常傳感器讀數(shù)的強化學習系統(tǒng)可能會嘗試通過采取不同的措施,例如增加冷卻液流量、降低室溫、降低機器負載等,將這些讀數(shù)恢復到正常值。在了解了哪些操作導致成功后,嵌入式開發(fā)人員可以在下次系統(tǒng)看到相同的異常讀數(shù)時更快地執(zhí)行相同的操作。強化學習可能會在大規(guī)模復雜應(yīng)用(如物聯(lián)網(wǎng))中得到越來越多的應(yīng)用,因為在這些應(yīng)用中,無法經(jīng)濟高效地預測所有已實現(xiàn)的運行狀態(tài)。
監(jiān)督學習方法消除了與識別哪一組輸入對應(yīng)于哪一特定狀態(tài)(或?qū)ο?相關(guān)的猜測。在這種方法中,開發(fā)人員明確地標識與特定對象、狀態(tài)或條件相對應(yīng)的輸入值或特征的組合。在假設(shè)的機器示例中,工程師將通過一組n個特征x來表示感興趣的問題,例如,不同的傳感器輸入、機器運行時間、上次服務(wù)日期、機器壽命和其他可測量值。根據(jù)他們的專業(yè)知識,工程師然后創(chuàng)建一個訓練數(shù)據(jù)集–這些特征向量(x1 x2…Xn)的多個實例,每個實例都有n個與已知輸出狀態(tài)相關(guān)的觀測值,或標簽y:
(X)11,x12、…X1N)?y1
(X)21,x22、…X2N)?y2
(X)31,x32、…X3n)?y3
…
給定這個訓練集,已知測量的特征值和相應(yīng)的標簽之間的關(guān)系,嵌入式開發(fā)人員訓練一個模型(方程組),能夠產(chǎn)生預期的標簽。yk對于每個特征向量(x1K x2K…XNK )在訓練場。在這個訓練過程中,訓練算法采用迭代的方法,通過調(diào)整構(gòu)成模型的方程組的參數(shù),將預測的標簽和實際的標簽之間的差異降到最小。每一次通過訓練集,稱為紀元,都會產(chǎn)生一組新的參數(shù),一組與這些參數(shù)相關(guān)聯(lián)的新的預測標簽,以及相關(guān)的差異或損失。