本文旨在為硬件和嵌入式工程師介紹機器學習 (ML) 的背景,了解它是什么、它是如何工作的、它為何重要以及 TinyML 如何融入其中。
機器學習是一個永遠存在且經常被誤解的技術概念。這種實踐是使用復雜的處理和數學技術使計算機能夠找到大量輸入和輸出數據之間的相關性的科學,幾十年來一直存在于我們對技術的集體意識中。近年來,科學爆炸式增長,得益于以下方面的改進:
計算能力
圖形處理單元 (GPU) 架構支持的并行處理
用于大規模工作負載的云計算
事實上,該領域一直專注于桌面和基于云的使用,以至于許多嵌入式工程師沒有過多考慮 ML 如何影響他們。在大多數情況下,它沒有。
然而,隨著TinyML或微型機器學習(在微控制器和單板計算機等受限設備上的機器學習)的出現,ML 已經與所有類型的工程師相關,包括從事嵌入式應用程序的工程師。除此之外,即使您熟悉 TinyML,對一般機器學習有一個具體的了解也很重要。
在本文中,我將概述機器學習、它的工作原理以及它對嵌入式工程師的重要性。
什么是機器學習?
作為人工智能 (AI) 領域的一個子集,機器學習是一門專注于使用數學技術和大規模數據處理來構建可以找到輸入和輸出數據之間關系的程序的學科。作為一個總稱,人工智能涵蓋了計算機科學中的一個廣泛領域,專注于使機器能夠在沒有人工干預的情況下“思考”和行動。它涵蓋了從“通用智能”或機器以與人類相同的方式思考和行動的能力,到專門的、面向任務的智能,這是 ML 的范疇。
我聽說過去定義 ML 的最強大的方法之一是與經典計算機編程中使用的傳統算法方法進行比較。在經典計算中,工程師向計算機提供輸入數據——例如數字 2 和 4——以及將它們轉換為所需輸出的算法——例如,將 x 和 y 相乘得到 z。當程序運行時,會提供輸入,然后應用算法來產生輸出。這可以在圖 1 中看到。
圖 1.在經典方法中,我們向計算機提供輸入數據和算法并要求答案。
另一方面,ML 是向計算機呈現一組輸入和輸出并要求計算機識別“算法”(或模型,使用 ML 術語)每次將這些輸入轉換為輸出的過程。通常,這需要大量輸入以確保模型每次都能正確識別正確的輸出。
例如,在圖 2 中,如果我向 ML 系統提供數字 2 和 2 以及預期輸出 4,它可能會決定算法總是將這兩個數字相加。但是,如果我隨后提供數字 2 和 4 以及預期輸出 8,模型將從兩個示例中了解到正確的方法是將兩個提供的數字相乘。
圖 2.使用 ML,我們擁有數據(輸入)和答案(輸出),并且需要計算機通過確定輸入和輸出如何以適用于整個數據集的方式關聯來推導各種算法。
鑒于我正在使用一個簡單的示例來定義一個復雜的字段,此時您可能會問:為什么要費心將簡單的字段復雜化?為什么不堅持我們經典的算法計算方法?
答案是傾向于機器學習的這類問題通常不能通過純粹的算法方法來表達。沒有簡單的算法可以給計算機一張圖片并要求它確定其中是否包含貓或人臉。相反,我們利用 ML 并為其提供數千張包含貓和人臉的圖片(作為像素集合),兩者都沒有,并且通過學習如何將這些像素和像素組與預期輸出相關聯來開發模型。當機器看到新數據時,它會根據之前看到的所有示例推斷輸出。這部分過程,通常稱為預測或推理,是機器學習的魔力。
這聽起來很復雜,因為它是。在嵌入式和物聯網 (IoT) 系統的世界中,機器學習越來越多地被用于幫助機器視覺、異常檢測和預測性維護等領域。在每個領域,我們收集大量數據——圖像和視頻、加速度計讀數、聲音、熱量和溫度——用于監控設施、環境或機器。然而,我們經常難以將這些數據轉化為我們可以采取行動的洞察力。條形圖很好,但是當我們真正想要的是能夠在機器中斷和離線之前預測機器需要服務的能力時,簡單的算法方法是行不通的。
機器學習開發循環
進入機器學習。在有能力的數據科學家和機器學習工程師的指導下,這個過程從數據開始。也就是說,我們的嵌入式系統創建的海量數據。ML 開發過程的第一步是收集數據并在將其輸入模型之前對其進行標記。標簽是一個關鍵的分類步驟,也是我們將一組輸入與預期輸出相關聯的方式。
ML 中的標簽和數據收集
例如,一組加速度計 x、y 和 z 值可能對應于機器處于空閑狀態,另一組可能表示機器運行良好,第三組可能對應于問題。在圖 3 中可以看到高級描述。
圖 3.ML 工程師在數據收集過程中使用標簽對數據集進行分類。
數據收集和標記是一個耗時的過程,但對于正確處理至關重要。雖然 ML 領域有幾項創新利用預訓練模型來抵消一些工作和新興工具來簡化從真實系統中收集數據,但這是一個不能跳過的步驟。世界上沒有任何機器學習模型能夠可靠地告訴您您的機器或設備是否運行良好或即將發生故障,而無需查看來自該機器或其他類似機器的實際數據。
機器學習模型開發、訓練、測試、提煉
數據收集后,接下來的步驟是模型開發、訓練、測試和細化。這個階段是數據科學家或工程師創建一個程序,該程序攝取大量收集的輸入數據,并使用一種或多種方法將其轉換為預期的輸出。解釋這些方法可以填滿卷,但足以說明大多數模型對其輸入執行一組轉換(例如,向量和矩陣乘法)。此外,他們將相互調整每個輸入的權重,以找到一組與預期輸出可靠相關的權重和函數。
該過程的這個階段通常是迭代的。工程師將調整模型、使用的工具和方法,以及在模型訓練期間運行的迭代次數和其他參數,以構建能夠可靠地將輸入數據與正確輸出(也稱為標簽)相關聯的東西。一旦工程師對這種相關性感到滿意,他們就會使用訓練中未使用的輸入來測試模型,以了解模型在未知數據上的表現。如果模型在這個新數據上表現不佳,工程師會重復循環,如圖 4 所示,并進一步細化模型。
圖 4.模型開發是一個包含許多步驟的迭代過程,但它從數據收集開始。
一旦模型準備就緒,它就會被部署并可用于針對新數據進行實時預測。在傳統 ML 中,模型被部署到云服務中,以便它可以被正在運行的應用程序調用,該應用程序提供所需的輸入并從模型接收輸出。應用程序可能會提供一張圖片并詢問是否有人在場或一組加速度計讀數,并詢問模型這組讀數是否對應于空閑、運行或損壞的機器。
正是在這個過程中,TinyML 如此重要且如此具有開創性。
那么 TinyML 適合在哪里呢?
如果還不清楚,機器學習是一個數據密集型過程。當您嘗試通過相關性導出模型時,您需要大量數據來提供該模型。數百個圖像或數千個傳感器讀數。事實上,模型訓練的過程是如此密集、如此專業,以至于幾乎任何中央處理單元 (CPU)都會占用大量資源,無論它的性能如何。相反,在 ML 中如此常見的向量和矩陣數學運算與圖形處理應用程序沒有什么不同,這就是為什么 GPU 已成為模型開發如此受歡迎的選擇。
鑒于對強大計算的需求,云已成為卸載訓練模型工作并托管它們以進行實時預測的事實上的場所。雖然模型訓練是并且仍然是云的領域,特別是對于嵌入式和物聯網應用程序,但我們越能將實時預測的能力轉移到捕獲數據的地方,我們的系統就會越好。在微控制器上運行模型時,我們獲得了內置安全性和低延遲的好處,以及在本地環境中做出決策和采取行動的能力,而無需依賴互聯網連接。
這是 TinyML 的領域,Edge Impulse等平臺公司正在構建基于云的傳感器數據收集工具和 ML 架構,以輸出專為微控制器單元 (MCU)構建的緊湊、高效模型。從STMicroelectronics到Alif Semiconductor,越來越多的芯片供應商正在構建具有類似 GPU 計算能力的芯片,這使得它們非常適合在收集數據的地方與傳感器一起運行 ML 工作負載。
對于嵌入式和物聯網工程師來說,現在正是探索機器學習世界的最佳時機,從云到最小的設備。我們的系統只會變得越來越復雜,處理的數據比以往任何時候都多。將 ML 帶到邊緣意味著我們可以處理這些數據并更快地做出決策。
審核編輯 黃昊宇
-
數據
+關注
關注
8文章
6892瀏覽量
88828 -
機器學習
+關注
關注
66文章
8377瀏覽量
132409
發布評論請先 登錄
相關推薦
評論