?
本文旨在為硬件和嵌入式工程師提供機器學習(ML)的背景,它是什么,它是如何工作的,它為什么重要,以及 TinyML 是如何適應的
機器學習是一個始終存在并經(jīng)常被誤解的技術(shù)概念。數(shù)十年來,使用復雜處理和數(shù)學技術(shù)使計算機能夠發(fā)現(xiàn)大量輸入和輸出數(shù)據(jù)之間的相關(guān)性的實踐一直存在于我們對技術(shù)的集體意識中。近年來,隨著以下方面的進步,科學技術(shù)得到了迅猛發(fā)展:
計算能力
面向大規(guī)模工作負載的云計算
事實上,這個領(lǐng)域已經(jīng)如此專注于桌面和基于云計算的應用,以至于許多嵌入式工程師沒有太多考慮機器學習如何影響他們。大多數(shù)情況下,并沒有。
然而,隨著 TinyML 或微型機器學習(在微控制器和單板計算機等受限設備上的機器學習)的出現(xiàn),機器學習已經(jīng)與所有類型的工程師相關(guān),包括那些從事嵌入式應用的工程師。此外,即使您熟悉 TinyML,對機器學習有一個通用的具體理解也是很重要的。
在本文中,我將概述機器學習,它是如何工作的,以及為什么它對嵌入式工程師很重要。
什么是機器學習?
機器學習是人工智能(AI)領(lǐng)域的一個子集,是一門利用數(shù)學技術(shù)和大規(guī)模數(shù)據(jù)處理來構(gòu)建程序,以發(fā)現(xiàn)輸入和輸出數(shù)據(jù)之間關(guān)系的學科。作為一個總括性的術(shù)語,人工智能涵蓋了計算機科學的廣泛領(lǐng)域,其重點是使機器能夠在沒有人類干預的情況下“思考”和行動。它涵蓋了一切,從“一般智能”或機器按照人類的方式思考和行動的能力,到專門的、面向任務的智能,這就是機器學習的范疇。
我過去聽到的機器學習定義的最強大的方法之一是與傳統(tǒng)的、用于經(jīng)典計算機編程的算法方法相比較。在經(jīng)典計算中,工程師向計算機提供輸入數(shù)據(jù)ーー例如,數(shù)字2和4ーー以及將它們轉(zhuǎn)換為所需輸出的算法ーー例如,用 x 和 y 乘以 z。當程序運行時,提供輸入,并應用該算法產(chǎn)生輸出。
?
在一個經(jīng)典的方法中,我們向計算機提供輸入數(shù)據(jù)和算法,并要求得到答案
另一方面,機器學習是向計算機提供一組輸入和輸出,并要求計算機識別“算法”(或用機器學習的說法稱為模型)的過程,這種算法每次都將這些輸入轉(zhuǎn)化為輸出。通常,這需要大量的輸入,以確保模型每次都能正確地識別正確的輸出。
例如,如果我向 ML 系統(tǒng)提供數(shù)字2和2以及預期的輸出4,它可能會決定該算法總是將這兩個數(shù)字相加。但是,如果我然后提供數(shù)字2和4以及8的預期輸出,模型將從兩個例子中學到,正確的方法是將提供的兩個數(shù)字相乘。
?
有了機器學習,我們就有了數(shù)據(jù)(輸入)和答案(輸出) ,并且需要計算機通過確定輸入和輸出如何以對整個數(shù)據(jù)集為真的方式相互關(guān)聯(lián)來推導出一種排序算法
假設我使用一個簡單的示例來定義一個復雜的字段,那么您可能會問: 為什么一個人要費心將不復雜的字段復雜化呢?為什么不堅持我們經(jīng)典的算法計算方法呢?
答案是,傾向于機器學習的一類問題往往不能通過純算法的方法來表達。沒有一種簡單的算法可以給計算機一張圖片,然后讓計算機判斷圖片中是否包含貓或人臉。相反,我們利用機器學習,給它數(shù)以千計的圖片(作為像素的集合)與貓,和人的臉,兩者都沒有,和一個模型開發(fā)通過學習如何關(guān)聯(lián)這些像素和像素組與預期的輸出。當機器看到新的數(shù)據(jù)時,它會根據(jù)之前看到的所有示例推斷出一個輸出。這部分過程,通常稱為預測或推斷,是機器學習的魔力。
聽起來很復雜,因為事實就是如此。在嵌入式和物聯(lián)網(wǎng)(IoT)系統(tǒng)領(lǐng)域,機器學習越來越多地被用于機器視覺、異常檢測和預測性維護等領(lǐng)域。在每一個區(qū)域中,我們收集大量的數(shù)據(jù)ーー圖像和視頻、加速度計讀數(shù)、聲音、熱量和溫度ーー用于監(jiān)測設施、環(huán)境或機器。然而,我們常常很難將這些數(shù)據(jù)轉(zhuǎn)化為我們可以采取行動的洞察力。條形圖固然不錯,但是如果我們真正想要的是能夠在機器故障和脫機之前預測到它需要服務,那么簡單的算法方法是不行的。
機器學習開發(fā)回路
進入機器學習。在有能力的數(shù)據(jù)科學家和機器學習工程師的指導下,這個過程從數(shù)據(jù)開始。也就是說,我們嵌入式系統(tǒng)產(chǎn)生的大量數(shù)據(jù)。機器學習開發(fā)過程的第一步是收集數(shù)據(jù),并在數(shù)據(jù)輸入模型之前對其進行標記。標記是一個關(guān)鍵的分類步驟,也是我們將一組輸入與預期輸出關(guān)聯(lián)起來的方式。
機器學習中的標記與數(shù)據(jù)采集
例如,一組加速度計 x、 y 和 z 值可能對應于機器處于空閑狀態(tài),另一組可能意味著機器運行良好,第三組可能對應于問題。在中可以看到一個高級描述。
?
數(shù)據(jù)收集和標記是一個耗時的過程,但對于正確處理數(shù)據(jù)至關(guān)重要。雖然機器學習領(lǐng)域有一些創(chuàng)新,利用預先訓練的模型來抵消一些工作和新興的工具來簡化從實際系統(tǒng)收集數(shù)據(jù),但這是一個不容忽視的步驟。世界上沒有任何機器學習模型能夠可靠地告訴你,你的機器或設備是否運行良好,或者在沒有看到來自該機器或其他類似機器的實際數(shù)據(jù)的情況下即將崩潰。
機器學習模型的開發(fā)、訓練、測試、提煉
數(shù)據(jù)收集之后,接下來的步驟是模型開發(fā)、培訓、測試和細化。在這個階段,數(shù)據(jù)科學家或工程師創(chuàng)建一個程序,該程序接收收集到的大量輸入數(shù)據(jù),并使用一種或多種方法將其轉(zhuǎn)換為預期的輸出。解釋這些方法可以填滿容量,但是只要說明大多數(shù)模型對其輸入執(zhí)行一組轉(zhuǎn)換(例如,向量和矩陣乘法)就足夠了。此外,他們還將調(diào)整每個輸入的權(quán)重,以便找到一組與預期輸出可靠相關(guān)的權(quán)重和函數(shù)。
過程的這個階段通常是迭代的。工程師將調(diào)整模型、工具和使用的方法,以及在模型訓練期間運行的迭代次數(shù)和其他參數(shù),以建立可靠的輸入數(shù)據(jù)與正確輸出(即標簽)的關(guān)聯(lián)。一旦工程師對這種相關(guān)性感到滿意,他們就使用訓練中未使用的輸入來測試模型,以了解模型在未知數(shù)據(jù)上的表現(xiàn)。如果模型在這個新數(shù)據(jù)上表現(xiàn)不佳,工程師會重復所示的循環(huán),并進一步細化模型。
?
一旦模型準備就緒,就可以部署它并對新數(shù)據(jù)進行實時預測。在傳統(tǒng)的機器學習中,模型被部署到云服務中,以便運行中的應用程序可以調(diào)用它,該應用程序提供所需的輸入并接收來自模型的輸出。應用程序可能會提供一張圖片,詢問是否有人在場,或者詢問一組加速計讀數(shù),并詢問模型這組讀數(shù)是否與一臺空閑的、正在運行的或壞掉的機器相對應。
在這個過程中 TinyML 是如此重要,如此開創(chuàng)性。
那么 TinyML 適合哪里呢?
如果還不清楚的話,機器學習是一個數(shù)據(jù)密集型的過程。當您試圖通過相關(guān)性獲得模型時,需要大量數(shù)據(jù)來為該模型提供信息。數(shù)以百計的圖像或數(shù)以千計的傳感器讀數(shù)。事實上,模型訓練的過程是如此密集,如此專業(yè)化,以至于幾乎任何中央處理器(CPU)都要占用大量的資源,無論它有多高性能。相反,在機器學習中非常常見的向量和矩陣數(shù)學操作與圖形處理應用程序并無不同,這就是為什么 GPU 已經(jīng)成為模型開發(fā)的流行選擇。
鑒于對強大計算能力的需求,云已經(jīng)成為事實上卸載訓練模型工作并托管它們進行實時預測的場所。雖然模型訓練仍然是云計算的領(lǐng)域,特別是對于嵌入式和物聯(lián)網(wǎng)應用程序,但是我們越能夠?qū)崟r預測數(shù)據(jù)捕獲的位置,我們的系統(tǒng)就會越好。當我們在微控制器上運行模型時,我們獲得了內(nèi)置安全性和低延遲的好處,以及在本地環(huán)境下做決定和采取行動的能力,而不需要依賴互聯(lián)網(wǎng)連接。
這是 TinyML 的領(lǐng)域,像 Edge Impulse 這樣的平臺公司正在構(gòu)建基于云的傳感器數(shù)據(jù)收集工具和機器學習架構(gòu),這些架構(gòu)輸出為微控制器單元(MCU)專門設計的緊湊、高效的模型。從意法半導體到阿里夫半導體(Alif Semiconductor) ,越來越多的硅廠商正在制造具有類似于 gpu 的計算能力的芯片,這使得它們能夠完美地在傳感器旁邊運行機器學習工作負載,而這正是數(shù)據(jù)收集的地方。
對于嵌入式和物聯(lián)網(wǎng)工程師來說,現(xiàn)在是探索機器學習世界的最佳時機,從云到最小的設備。我們的系統(tǒng)越來越復雜,處理的數(shù)據(jù)也越來越多。把機器學習帶到邊緣意味著我們可以處理這些數(shù)據(jù),更快地做出決定。
審核編輯:湯梓紅
評論
查看更多