【導讀】隨著(zhù)人工智能(AI)技術(shù)的快速發(fā)展,AI可以越來(lái)越多地支持以前無(wú)法實(shí)現或者難以實(shí)現的應用。本系列文章基于此解釋了卷積神經(jīng)網(wǎng)絡(luò )(CNN)及其對人工智能和機器學(xué)習的意義。CNN是一種能夠從復雜數據中提取特征的強大工具,例如識別音頻信號或圖像信號中的復雜模式就是其應用之一。本文討論了CNN相對于經(jīng)典線(xiàn)性規劃的優(yōu)勢,后續文章《訓練卷積神經(jīng)網(wǎng)絡(luò ):什么是機器學(xué)習?——第二部分》將討論如何訓練CNN模型,系列文章的第三部分將討論一個(gè)特定用例,并使用專(zhuān)門(mén)的AI微控制器對模型進(jìn)行測試。
什么是卷積神經(jīng)網(wǎng)絡(luò )?
神經(jīng)網(wǎng)絡(luò )是一種由神經(jīng)元組成的系統或結構,它使AI能夠更好地理解數據,進(jìn)而解決復雜問(wèn)題。雖然神經(jīng)網(wǎng)絡(luò )有許多種類(lèi)型,但本系列文章將只關(guān)注卷積神經(jīng)網(wǎng)絡(luò )(CNN),其主要應用領(lǐng)域是對輸入數據的模式識別和對象分類(lèi)。CNN是一種用于深度學(xué)習的人工神經(jīng)網(wǎng)絡(luò )。這種網(wǎng)絡(luò )由輸入層、若干卷積層和輸出層組成。卷積層是最重要的部分,它們使用一組獨特的權重和濾波器,使得網(wǎng)絡(luò )可以從輸入數據中提取特征。數據可以是許多不同的形式,如圖像、音頻和文本。這種提取特征的過(guò)程使CNN能夠識別數據中的模式從而讓工程師能夠創(chuàng )建更有效和高效的應用。為了更好地理解CNN,我們首先將討論經(jīng)典的線(xiàn)性規劃。
經(jīng)典控制技術(shù)中的線(xiàn)性規劃
控制技術(shù)的任務(wù)是借助傳感器讀取數據并進(jìn)行處理,然后根據規則做出響應,最后顯示或發(fā)送結果。例如,溫度調節器每秒鐘測量一次溫度,通過(guò)微控制器單元(MCU)讀取溫度傳感器的數據。該數值用于閉環(huán)控制系統的輸入,并與設定的溫度進(jìn)行比較。這就是一個(gè)借助MCU執行線(xiàn)性規劃的例子,這種技術(shù)通過(guò)比較預編程值和實(shí)際值來(lái)給出明確的結論。相比之下,AI系統通常依據概率論來(lái)發(fā)揮作用。
復雜模式和信號處理
許多應用所使用的輸入數據必須首先由模式識別系統加以判別。模式識別可以應用于不同的數據結構。本文討論的例子限定為一維或二維的數據結構,比如音頻信號、心電圖(ECG)、光電容積脈搏波(PPG)、一維的振動(dòng)數據或波形、熱圖像、二維的瀑布圖數據。
在上述模式識別中,將應用通過(guò)MCU的代碼來(lái)實(shí)現是極其困難的。一個(gè)例子是識別圖像中的具體對象(例如貓):這種情況下無(wú)法區分要分析的圖像是很早攝錄的,還是剛剛由從相機讀取的。分析軟件基于一些特定的規則來(lái)判斷圖片中是否有貓:比如說(shuō)貓必須有典型的尖耳朵、三角形的鼻子和胡須。如果可以在圖像中識別出這些特征,軟件便可以報告在圖像中發(fā)現了貓。但是這存在一些問(wèn)題:如果圖像只顯示了貓的背面,模式識別系統會(huì )怎么辦?如果貓沒(méi)有胡須或者在事故中失去了腿,會(huì )發(fā)生什么?盡管這些異常情況不太可能出現,但模式識別的代碼將不得不考慮所有可能的異常情況,從而增加大量額外的規則。即使在這個(gè)簡(jiǎn)單的例子中,軟件設置的規則也會(huì )變得非常復雜。
機器學(xué)習如何取代經(jīng)典規則
AI背后的核心思想是在小范圍內模仿人類(lèi)進(jìn)行學(xué)習。它不依賴(lài)于制定大量的if-then規則,而是建立一個(gè)通用的模式識別的機器模型。這兩種方法的關(guān)鍵區別在于,與一套復雜的規則相比,AI不會(huì )提供明確的結果。AI不會(huì )明確報告"我在圖像中識別出了一只貓",而是提供類(lèi)似這樣的結論:"圖像中有一只貓的概率為97.5%,它也可能是豹子(2.1%)或老虎(0.4%)。"這意味著(zhù)在模式識別的過(guò)程結束時(shí),應用的開(kāi)發(fā)人員必須通過(guò)決策閾值做出決定。
另一個(gè)區別是AI并不依賴(lài)固定的規則,而是要經(jīng)過(guò)訓練。訓練過(guò)程需要將大量貓的圖像展示給神經(jīng)網(wǎng)絡(luò )以供其學(xué)習。最終,神經(jīng)網(wǎng)絡(luò )將能夠獨立識別圖像中是否有貓。關(guān)鍵的一點(diǎn)是,未來(lái)AI可以不局限于已知的訓練圖像開(kāi)展識別。該神經(jīng)網(wǎng)絡(luò )需要映射到MCU中。
AI的模式識別內部到底是什么?
AI的神經(jīng)元網(wǎng)絡(luò )類(lèi)似于人腦的生物神經(jīng)元網(wǎng)絡(luò )。一個(gè)神經(jīng)元有多個(gè)輸入,但只有一個(gè)輸出?;旧?,這些神經(jīng)元都是輸入的線(xiàn)性變換——將輸入乘以數字(權重w)并加上一個(gè)常數(偏置b),然后通過(guò)一個(gè)固定的非線(xiàn)性函數產(chǎn)生輸出,該函數也被稱(chēng)為激活函數1。作為網(wǎng)絡(luò )中唯一的非線(xiàn)性部分,激活函數用于定義人工神經(jīng)元值的激活范圍。神經(jīng)元的功能在數學(xué)上可以描述為
其中,f為激活函數,w為權重,x為輸入數據,b為偏置。數據可以是單獨的標量、向量或矩陣。圖1顯示了一個(gè)神經(jīng)元,它擁有三個(gè)輸入和一個(gè)激活函數ReLU2。網(wǎng)絡(luò )中的神經(jīng)元總是分層排列的。
圖1.擁有三個(gè)輸入和一個(gè)輸出的神經(jīng)元
如上所述,CNN用于輸入數據的模式識別和對象分類(lèi)。CNN分為不同的部分:一個(gè)輸入層、若干隱藏層和一個(gè)輸出層。圖2顯示了一個(gè)小型網(wǎng)絡(luò ),它包含一個(gè)具有三個(gè)輸入的輸入層、一個(gè)具有五個(gè)神經(jīng)元的隱藏層和一個(gè)具有四個(gè)輸出的輸出層。所有神經(jīng)元的輸出都連接到下一層的所有輸入。圖2所示的網(wǎng)絡(luò )不具有現實(shí)意義,這里僅用于演示說(shuō)明。即使對于這個(gè)小型網(wǎng)絡(luò ),用于描述網(wǎng)絡(luò )的方程中也具有32個(gè)偏置和32個(gè)權重。
CIFAR神經(jīng)網(wǎng)絡(luò )是一種廣泛用于圖像識別的CNN。它主要由兩種類(lèi)型的層組成:卷積層和池化層,這兩種層分別使用卷積和池化兩種方法,在神經(jīng)網(wǎng)絡(luò )的訓練中非常有效。卷積層使用一種被稱(chēng)為卷積的數學(xué)運算來(lái)識別像素值數組的模式。卷積發(fā)生在隱藏層中,如圖3所示。卷積會(huì )重復多次直至達到所需的精度水平。如果要比較的兩個(gè)輸入值(本例是輸入圖像和濾波器)相似,那么卷積運算的輸出值總會(huì )特別高。濾波器有時(shí)也被稱(chēng)為卷積核。然后,結果被傳遞到池化層提取特征生成一個(gè)特征圖,表征輸入數據的重要特征,稱(chēng)為池化。池化層的運行需要依賴(lài)另一個(gè)濾波器,稱(chēng)為池化濾波器。訓練后,在網(wǎng)絡(luò )運行的狀態(tài)下,特征圖與輸入數據進(jìn)行比較。由于特征圖保留了特定的特征,所以只有當內容相似時(shí),神經(jīng)元的輸出才會(huì )被觸發(fā)。通過(guò)組合使用卷積和池化,CIFAR網(wǎng)絡(luò )可用于高精度地識別和分類(lèi)圖像中的各種對象。
圖2.一個(gè)小型神經(jīng)網(wǎng)絡(luò )
圖3.用CIFAR-10數據集訓練的CIFAR網(wǎng)絡(luò )模型
CIFAR-10是一個(gè)特定數據集,通常用于訓練CIFAR神經(jīng)網(wǎng)絡(luò )。它由60000幅32×32彩色圖像組成,分為10個(gè)類(lèi)別。這些圖像是從各種來(lái)源收集的,例如網(wǎng)頁(yè)、新聞和個(gè)人圖像集。每個(gè)類(lèi)別包含6000幅圖像,平均分配在訓練集、測試集和驗證集中,使其成為測試計算機視覺(jué)和其他機器學(xué)習模型的理想圖像集。
卷積神經(jīng)網(wǎng)絡(luò )和其他類(lèi)型網(wǎng)絡(luò )的主要區別在于處理數據的方式。卷積神經(jīng)網(wǎng)絡(luò )通過(guò)濾波依次檢查輸入數據的屬性。卷積層的數量越多,可以識別的細節就越精細。在第一次卷積之后,該過(guò)程從簡(jiǎn)單的對象屬性(如邊或點(diǎn))開(kāi)始進(jìn)行第二次卷積以識別詳細的結構,如角、圓、矩形等。在第三次卷積之后,特征就可以表示某些復雜的模式,它們與圖像中對象的某些部分相似,并且對于給定對象來(lái)說(shuō)通常是唯一的。在我們最初的例子中,這些特征就是貓的胡須或耳朵。特征圖的可視化(如圖4所示)對于應用本身而言并不是必需的,但它有助于幫助理解卷積。
即使是像CIFAR這樣的小型網(wǎng)絡(luò ),每層也有數百個(gè)神經(jīng)元,并且有許多串行連接的層。隨著(zhù)網(wǎng)絡(luò )的復雜度和規模的增加,所需的權重和偏置數量也迅速增長(cháng)。圖3所示的CIFAR-10示例已經(jīng)有20萬(wàn)個(gè)參數,每個(gè)參數在訓練過(guò)程中都需要一組確定的值。特征圖可以由池化層進(jìn)一步處理,以減少需要訓練的參數數量并保留重要信息。
圖4.CNN的特征圖
如上所述,在CNN中的每次卷積之后,通常會(huì )發(fā)生池化,在一些文獻中也常被稱(chēng)為子采樣。它有助于減少數據的維度。圖4中的特征圖里面的很多區域包含很少甚至不含有意義的信息。這是因為對象只是圖像的一小部分,并不構成整幅圖像。圖像的其余部分未在特征圖中使用,因此與分類(lèi)無(wú)關(guān)。在池化層中,池化類(lèi)型(最大值池化或均值池化)和池化窗口矩陣的大小均被指定。在池化過(guò)程中,窗口矩陣逐步在輸入數據上移動(dòng)。例如,最大值池化會(huì )選取窗口中的最大數據值而丟棄其它所有的值。這樣,數據量不斷減少,最終形成各個(gè)對象類(lèi)別的唯一屬性。
卷積和池化的結果是大量的二維矩陣。為了實(shí)現我們真正的目標即分類(lèi),我們需要將二維數據轉換成一個(gè)很長(cháng)的一維向量。轉換是在所謂的壓平層中完成的,隨后是一個(gè)或兩個(gè)全連接層。全連接層的神經(jīng)元類(lèi)似于圖2所示的結構。神經(jīng)網(wǎng)絡(luò )最后一層的輸出要與需要區分的類(lèi)別的數量一致。此外,在最后一層中,數據還被歸一化以產(chǎn)生一個(gè)概率分布(97.5%的貓,2.1%的豹,0.4%的虎,等等)。
這就是神經(jīng)網(wǎng)絡(luò )建模的全過(guò)程。然而,卷積核與濾波器的權重和內容仍然未知,必須通過(guò)網(wǎng)絡(luò )訓練來(lái)確定使模型能夠工作。這將在后續文章《訓練卷積神經(jīng)網(wǎng)絡(luò ):什么是機器學(xué)習?——第二部分》中說(shuō)明。第三部分將解釋我們上文討論過(guò)的神經(jīng)網(wǎng)絡(luò )(例如識別貓)的硬件實(shí)現,我們將使用ADI公司開(kāi)發(fā)的帶硬件CNN加速器的 MAX78000 人工智能微控制器來(lái)演示。
1 通常使用sigmoid、tanh或ReLU函數。
2 ReLU:修正線(xiàn)性單元。對于該函數,輸入值為負時(shí),輸出為零;輸入值大于零時(shí),輸出值為輸入值。
免責聲明:本文為轉載文章,轉載此文目的在于傳遞更多信息,版權歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權問(wèn)題,請聯(lián)系小編進(jìn)行處理。
推薦閱讀:
電能質(zhì)量監測第2部分:符合標準的電能質(zhì)量?jì)x表的設計考慮因素