【技術文章】訓練卷積神經網路:什麼是機器學習? (一)
摘要
隨著人工智慧(AI)技術的快速發展,AI可以支援以前無法實現或者難以實現的應用越來越多。有鑑於此,本系列文章將解釋卷積神經網絡(CNN)及其對人工智能和機器學習的意義。 CNN是一種能夠從複雜數據中提取特徵的強大工具,例如識別聲音訊號或圖像訊號中的複雜模式就是其應用之一。本文討論了CNN相對於典型線性規劃的優勢,後續文章《訓練卷積神經網絡:什麼是機器學習? ——第二部分》將討論如何訓練CNN模型,系列文章的第三部分將討論一個特定用例,並使用專門的AI微控制器對模型進行測試。
什麼是卷積神經網路?
神經網路是一種由神經元組成的系統或結構,它使AI能夠更好地理解數據,進而解決複雜問題。雖然神經網路有許多種類型,但本系列文章將只關注卷積神經網路(CNN),其主要應用領域是對輸入數據的模式識別和對象分類。 CNN是一種用於深度學習的人工神經網路。這種網路由輸入層、若干卷積層和輸出層組成。卷積層是最重要的部分,它們使用一組獨特的權重和濾波器,使得網絡可以從輸入數據中提取特徵。數據可以是許多不同的形式,如影像、聲音和文字。這種提取特徵的過程使CNN能夠識別數據中的模式,進而讓工程師能夠創建更有效和高效的應用。為了更好地理解CNN,我們首先將討論典型的線性規劃。
典型控制技術中的線性規劃
控制技術的任務是藉助感測器讀取數據並進行處理,然後根據規則做出回應,最後顯示或發送結果。 例如,溫度調節器每秒鐘測量一次溫度,通過微控制器單元(MCU)讀取溫度感測器的數據。 該數值用於閉環控制系統的輸入,並與設定的溫度進行比較。 這就是一個藉助MCU執行線性規劃的例子,這種技術通過比較預程式設計值和實際值來給出明確的結論。 相比之下,AI系統通常依據概率論來發揮作用。
複雜模式和訊號處理
許多應用所使用的輸入數據必須首先由模式識別系統加以判別。模式識別可以應用於不同的數據結構。本文討論的例子限定為一維或二維的數據結構,比如聲音訊號、心電圖(ECG)、光體積變化描記圖(PPG)、一維的振動數據或波形、熱圖像、二維的瀑布圖數據。
在上述模式識別中,將應用通過MCU的代碼來實現是極其困難的。一個例子是識別圖像中的具體對象(例如貓):這種情況下無法區分要分析的圖像是早先攝影的,還是剛剛由從相機讀取的。分析軟體基於一些特定的規則來判斷圖片中是否有貓:比如說貓必須有典型的尖耳朵、三角形的鼻子和鬍鬚。如果可以在圖像中識別出這些特徵,軟體便可以報告在圖像中發現了貓。但是這存在一些問題:如果圖像只顯示了貓的背面,模式識別系統會怎麼辦?如果貓沒有鬍鬚或者在事故中失去了腿,會發生什麼?儘管這些異常情況不太可能出現,但模式識別的代碼將不得不考慮所有可能的異常情況,從而增加大量額外的規則。即使在這個簡單的例子中,軟體設置的規則也會變得非常複雜。
機器學習如何取代典型規則
AI背後的核心思想是在小範圍內模仿人類進行學習。它不依賴於制訂大量的if-then規則,而是建立一個通用的模式識別的機器模型。這兩種方法的關鍵區別在於,與一套複雜的規則相比,AI不會提供明確的結果。 AI不會明確報告:「我在圖像中識別出了一隻貓」,而是提供類似這樣的結論:「圖像中有一隻貓的概率為97.5%,它也可能是豹(2.1%)或老虎(0.4%)。 」這意味著在模式識別的過程結束時,應用的開發人員必須通過決策門檻數值做出決定。
另一個區別是AI並不依賴固定的規則,而是要經過訓練。訓練過程需要將大量貓的圖像展示給神經網路以供其學習。最終,神經網路將能夠獨立識別圖像中是否有貓。關鍵是,未來AI可以不侷限於對已知的訓練圖像進行識別,這神經網路需要被映射到MCU中。
AI的模式識別內部究竟是什麼?
AI的神經元網路類似於人腦的生物神經元網路。一個神經元有多個輸入,但只有一個輸出。基本上,這些神經元都是輸入的線性變換——將輸入乘以數字(權重,w)並加上一個常數(偏差,b),然後通過一個固定的非線性函數產生輸出,該函數也被稱為激勵函數1。作為網路中唯一的非線性部分,函數用於定義人工神經元值的激勵範圍。神經元的功能在數學上可以描述為
其中,f為激勵函數,w為權重,x為輸入數據,b為偏差。數據可以是單獨的標量、向量或矩陣。圖1顯示了一個神經元,它擁有三個輸入和一個激勵函數ReLU2。網路中的神經元總是分層排列的。
圖1.擁有三個輸入和一個輸出的神經元
如上所述,CNN用於輸入數據的模式識別和對象分類。 CNN分為不同的部分:一個輸入層、多個隱藏層和一個輸出層。圖2顯示了一個小型網絡,它包含一個具有三個輸入的輸入層、一個具有五個神經元的隱藏層和一個具有四個輸出的輸出層。所有神經元的輸出都連接到下一層的所有輸入。圖2所示的網路不具有現實意義,這裡僅用於演示說明目的。即使對於這個小型網路,用於描述網路的方程式中也具有32個偏差和32個權重。
CIFAR神經網路是一種廣泛用於圖像識別的CNN。它主要由兩種類型的層組成:卷積層和池化層,這兩種層分別使用卷積和池化兩種方法,在神經網路的訓練中非常有效。卷積層使用一種被稱為卷積的數學運算來識別像素值數組的模式。卷積發生在隱藏層中,如圖3所示。卷積會重複多次直至達到所需的精度水平。這裡要注意的是,如果要比較的兩個輸入值(本例是輸入圖像和過濾器)相似,則卷積運算的輸出值總會特別高,過濾器有時也被稱為卷積核。然後,結果被傳遞到池化層提取特徵生成一個特徵圖,表徵輸入數據的重要特徵,稱為池化。池化層的運行需要依賴另一個過濾器,稱為池化過濾器。訓練後,在網路運行的狀態下,特徵圖與輸入數據進行比較。由於特徵圖保留了特定的特徵,所以只有當內容相似時,神經元的輸出才會被觸發。通過組合使用卷積和池化,CIFAR網絡可用於高精度地識別和分類圖像中的各種對象。
圖2. 一個小型神經網路
圖3.用CIFAR-10數據集訓練的CIFAR網路模型
CIFAR-10是一個特定數據集,通常用於訓練CIFAR神經網絡。它由60000幅32×32彩色圖像組成,分為10個類別。這些圖像是從各種來源收集的,例如網頁、新聞和個人圖像集。每個類別包含6000幅圖像,平均分配在訓練集、測試集和驗證集中,使其成為測試計算機視覺和其他機器學習模型的理想圖像集。
卷積神經網路和其他類型網路的主要區別在於處理數據的方式。卷積神經網路通過過濾依次檢查輸入數據的屬性。卷積層的數量越多,可以識別的細節就越精細。在第一次卷積之後,該過程從簡單的對象屬性(如邊或點)開始進行第二次卷積以識別詳細的結構,如角、圓、矩形等。在第三次卷積之後,特徵就可以表示某些複雜的模式,它們與圖像中對象的某些部分相似,並且對於給定對象來說通常是唯一的。在我們最初的例子中,這些特徵就是貓的鬍鬚或耳朵。特徵圖的可視化(如圖4所示)對於應用本身而言並不是必需的,但它有助於幫助理解卷積。
即使是像CIFAR這樣的小型網路,每層也有數百個神經元,並且有許多串聯連接的層。隨著網絡的複雜度和規模的增加,所需的權重和偏移數量也迅速增長。圖3所示的CIFAR-10範例已經有20萬個參數,每個參數在訓練過程中都需要一組確定的值。特徵圖可以由池化層進一步處理,以減少需要訓練的參數數量並保留重要訊息。
圖4. CNN的特徵圖
如上所述,在CNN中的每次卷積之後,通常會發生池化,在一些文獻中也常被稱為子採樣。它有助於減少數據的維度。圖4中的特徵圖裡面的很多區域包含很少甚至不含有意義的訊息。這是因為對像只是圖像的一小部分,並不構成整幅圖像。圖像的其餘部分未在特徵圖中使用,因此與分類無關。在池化層中,池化類型(最大值池化或均值池化)和池化窗口矩陣的大小均被指定。在池化過程中,窗口矩陣逐步在輸入數據上移動。例如,最大值池化會選取窗口中的最大數據值而丟棄其它所有的值。這樣,數據量不斷減少,最終形成各個對像類別的唯一屬性。
卷積和池化的結果是大量的二維矩陣。為了實現我們真正的目標即分類,我們需要將二維數據轉換成一個很長的一維向量。轉換是在所謂的壓平層中完成的,隨後是一個或兩個全連接層。全連接層的神經元類似於圖2所示的結構。神經網路最後一層的輸出要與需要區分的類別的數量一致。此外,在最後一層中,數據還被歸一化以產生一個概率分佈(97.5%的貓,2.1%的豹,0.4%的虎,等等)。
這就是神經網路建模的全過程。然而,卷積核與濾波器的權重和內容仍然未知,必須通過網路訓練來確定使模型能夠運作。這將在後續文章《訓練卷積神經網絡:什麼是機器學習? ——第二部分》中說明。第三部分將解釋我們上文討論過的神經網路(例如識別貓)的硬體實現,我們將使用ADI公司開發的帶硬體CNN加速器的 MAX78000 人工智慧微控制器來演示。
註解:
1 通常使用sigmoid、tanh或ReLU函數。
2 ReLU:修正線性單元。對於該函數,輸入值為負時,輸出為零;輸入值大於零時,輸出值為輸入值。
聯繫我們
ADI所有產品請洽【 安馳科技 】
安馳科技|ADI亞德諾半導體網站:https://anstekadi.com
安馳科技 LINE 官方帳號:https://lin.ee/5gcKNi7
安馳科技 Facebook 官方帳號:https://www.facebook.com/ANStek3528
申請樣品與技術支援:https://www.surveycake.com/s/dQ3Y2
與我聯絡:marketing@anstek.com.tw