理解卷積神經(jīng)網(wǎng)絡(luò)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
人工智能 (AI) 世界正在快速發(fā)展,AI 越來(lái)越多地支持以前無(wú)法實(shí)現(xiàn)或難以實(shí)現(xiàn)的應(yīng)用。
神經(jīng)網(wǎng)絡(luò)是一種系統(tǒng),或者說(shuō)是神經(jīng)元的結(jié)構(gòu),它使人工智能能夠更好地理解數(shù)據(jù),從而解決復(fù)雜的問(wèn)題。雖然網(wǎng)絡(luò)類型多種多樣,但本系列文章將僅關(guān)注卷積神經(jīng)網(wǎng)絡(luò) (CNN)。CNN 的主要應(yīng)用領(lǐng)域是模式識(shí)別和對(duì)輸入數(shù)據(jù)中包含的對(duì)象進(jìn)行分類。CNN 是一種用于深度學(xué)習(xí)的人工神經(jīng)網(wǎng)絡(luò)。這種網(wǎng)絡(luò)由一個(gè)輸入層、幾個(gè)卷積層和一個(gè)輸出層組成。卷積層是最重要的組件,因?yàn)樗鼈兪褂靡唤M獨(dú)特的權(quán)重和過(guò)濾器,使網(wǎng)絡(luò)能夠從輸入數(shù)據(jù)中提取特征。數(shù)據(jù)可以有多種不同的形式,例如圖像、音頻和文本。這種特征提取過(guò)程使 CNN 能夠識(shí)別數(shù)據(jù)中的模式。通過(guò)從數(shù)據(jù)中提取特征,CNN 使工程師能夠創(chuàng)建更有效、更高效的應(yīng)用程序。為了更好地理解 CNN,我們將首先討論經(jīng)典的線性規(guī)劃。
經(jīng)典控制工程中的線性程序執(zhí)行
在控制工程中,任務(wù)在于從一個(gè)或多個(gè)傳感器讀取數(shù)據(jù),處理數(shù)據(jù),根據(jù)規(guī)則做出響應(yīng),并顯示或轉(zhuǎn)發(fā)結(jié)果。例如,溫度調(diào)節(jié)器通過(guò)微控制器單元 (MCU) 每秒測(cè)量一次溫度,微控制器單元從溫度傳感器讀取數(shù)據(jù)。從傳感器獲取的值用作閉環(huán)控制系統(tǒng)的輸入數(shù)據(jù),并在循環(huán)中與設(shè)定溫度進(jìn)行比較。這是由 MCU 運(yùn)行的線性執(zhí)行的示例。該技術(shù)根據(jù)一組預(yù)編程值和實(shí)際值提供結(jié)論性結(jié)果。相比之下,概率在 AI 系統(tǒng)的運(yùn)行中發(fā)揮著作用。
復(fù)雜模式和信號(hào)處理
還有許多應(yīng)用程序需要處理輸入數(shù)據(jù),這些數(shù)據(jù)首先必須由模式識(shí)別系統(tǒng)進(jìn)行解釋。模式識(shí)別可以應(yīng)用于不同的數(shù)據(jù)結(jié)構(gòu)。在我們的示例中,我們將自己限制在一維和二維數(shù)據(jù)結(jié)構(gòu)中。以下是一些示例:音頻信號(hào)、心電圖 (ECG)、光電容積描記器 (PPG)、一維數(shù)據(jù)和圖像的振動(dòng)、熱圖像以及二維數(shù)據(jù)的瀑布圖。
在上述案例中使用的模式識(shí)別,將應(yīng)用程序轉(zhuǎn)換為 MCU 的傳統(tǒng)代碼極其困難。一個(gè)例子是識(shí)別圖像中的物體(例如貓)。在這種情況下,要分析的圖像是來(lái)自早期記錄還是剛剛由相機(jī)傳感器讀取的圖像都沒(méi)有區(qū)別。分析軟件會(huì)根據(jù)規(guī)則搜索可以歸因于貓的模式:典型的尖耳朵、三角形鼻子或胡須。如果可以在圖像中識(shí)別出這些特征,軟件就會(huì)報(bào)告發(fā)現(xiàn)了貓。這里出現(xiàn)了一些問(wèn)題:如果只顯示貓的背面,模式識(shí)別系統(tǒng)會(huì)做什么?如果它沒(méi)有胡須或在事故中失去了腿,會(huì)發(fā)生什么?盡管這些例外不太可能發(fā)生,模式識(shí)別代碼必須檢查大量涵蓋所有可能異常的附加規(guī)則。即使在我們這個(gè)簡(jiǎn)單示例中,軟件設(shè)置的規(guī)則也會(huì)很快變得繁瑣。
機(jī)器學(xué)習(xí)如何取代傳統(tǒng)規(guī)則
人工智能背后的想法是小規(guī)模地模仿人類的學(xué)習(xí)。我們不是制定大量的“如果-那么”規(guī)則,而是模擬一個(gè)通用的模式識(shí)別機(jī)器。這兩種方法之間的關(guān)鍵區(qū)別在于,與一組規(guī)則不同,人工智能不會(huì)提供明確的結(jié)果。機(jī)器學(xué)習(xí)不會(huì)報(bào)告“我在圖片中認(rèn)出了一只貓”,而是得出這樣的結(jié)果:“圖片中有一只貓的概率為 97.5%。它也可能是一只豹子(2.1%)或一只老虎(0.4%)?!边@意味著此類應(yīng)用程序的開(kāi)發(fā)人員必須在模式識(shí)別過(guò)程結(jié)束時(shí)做出決定。為此使用決策閾值。
另一個(gè)區(qū)別是,模式識(shí)別機(jī)器沒(méi)有固定的規(guī)則。相反,它是經(jīng)過(guò)訓(xùn)練的。在這個(gè)學(xué)習(xí)過(guò)程中,神經(jīng)網(wǎng)絡(luò)會(huì)看到大量的貓圖像。最后,這個(gè)網(wǎng)絡(luò)能夠獨(dú)立識(shí)別圖像中是否有貓。關(guān)鍵是未來(lái)的識(shí)別并不局限于已知的訓(xùn)練圖像。這個(gè)神經(jīng)網(wǎng)絡(luò)需要映射到 MCU 中。
模式識(shí)別機(jī)器的內(nèi)部到底是什么樣的?
人工智能中的神經(jīng)元網(wǎng)絡(luò)與人類大腦中的生物神經(jīng)元網(wǎng)絡(luò)相似。一個(gè)神經(jīng)元有多個(gè)輸入和一個(gè)輸出。基本上,這樣的神經(jīng)元只不過(guò)是輸入的線性變換——將輸入乘以數(shù)字(權(quán)重,w)并添加一個(gè)常數(shù)(偏差,b),然后是一個(gè)固定的非線性函數(shù),也稱為激活函數(shù)。[1] 作為網(wǎng)絡(luò)中唯一的非線性組件,此激活函數(shù)用于定義人工神經(jīng)元觸發(fā)的值范圍。神經(jīng)元的功能可以用數(shù)學(xué)方式描述為
其中 f = 激活函數(shù),w = 權(quán)重,x = 輸入數(shù)據(jù),b = 偏差。數(shù)據(jù)可以作為單個(gè)標(biāo)量、向量或矩陣形式出現(xiàn)。圖 1 顯示了一個(gè)具有三個(gè)輸入和一個(gè) ReLU[2] 激活函數(shù)的神經(jīng)元。網(wǎng)絡(luò)中的神經(jīng)元總是按層排列。
圖 1. 一個(gè)具有三個(gè)輸入和一個(gè)輸出的神經(jīng)元。
如上所述,CNN 用于對(duì)輸入數(shù)據(jù)中包含的對(duì)象進(jìn)行模式識(shí)別和分類。CNN 分為多個(gè)部分:一個(gè)輸入層、多個(gè)隱藏層和一個(gè)輸出層。圖 2 中可以看到一個(gè)小型網(wǎng)絡(luò),該網(wǎng)絡(luò)具有三個(gè)輸入、一個(gè)具有五個(gè)神經(jīng)元的隱藏層和一個(gè)具有四個(gè)輸出的輸出層。所有神經(jīng)元輸出都連接到下一層的所有輸入。圖 2 中所示的網(wǎng)絡(luò)無(wú)法處理有意義的任務(wù),在此僅用于演示目的。即使在這個(gè)小型網(wǎng)絡(luò)中,用于描述網(wǎng)絡(luò)的方程中也有 32 個(gè)偏差和 32 個(gè)權(quán)重。
CIFAR 神經(jīng)網(wǎng)絡(luò)是一種廣泛用于圖像識(shí)別任務(wù)的 CNN。它由兩種主要類型的層組成:卷積層和池化層,這兩種層在神經(jīng)網(wǎng)絡(luò)的訓(xùn)練中都得到了很好的利用。卷積層使用一種稱為卷積的數(shù)學(xué)運(yùn)算來(lái)識(shí)別像素值數(shù)組中的模式。如圖 3 所示,卷積發(fā)生在隱藏層中。此過(guò)程重復(fù)多次,直到達(dá)到所需的準(zhǔn)確度。請(qǐng)注意,如果要比較的兩個(gè)輸入值(在本例中為圖像和過(guò)濾器)相似,則卷積運(yùn)算的輸出值總是特別高。這稱為過(guò)濾矩陣,也稱為過(guò)濾內(nèi)核或過(guò)濾器。然后將結(jié)果傳遞到池化層,池化層生成特征圖 - 識(shí)別重要特征的輸入數(shù)據(jù)的表示。這被視為另一個(gè)過(guò)濾矩陣。經(jīng)過(guò)訓(xùn)練后 - 在網(wǎng)絡(luò)的運(yùn)行狀態(tài)下 - 將這些特征圖與輸入數(shù)據(jù)進(jìn)行比較。由于特征圖包含與輸入圖像進(jìn)行比較的對(duì)象類別特定特征,因此只有當(dāng)內(nèi)容相似時(shí),神經(jīng)元的輸出才會(huì)觸發(fā)。通過(guò)結(jié)合這兩種方法,CIFAR 網(wǎng)絡(luò)可用于高精度地識(shí)別和分類圖像中的各種對(duì)象。
圖 2。一個(gè)小型神經(jīng)網(wǎng)絡(luò)。
圖 3. 使用 CIFAR-10 數(shù)據(jù)集訓(xùn)練的 CIFAR 網(wǎng)絡(luò)模型。
CIFAR-10 是常用于訓(xùn)練 CIFAR 神經(jīng)網(wǎng)絡(luò)的一個(gè)特定數(shù)據(jù)集。它包含 60,000 張 32 × 32 彩色圖像,分為 10 個(gè)類別,這些圖像來(lái)自網(wǎng)頁(yè)、新聞組和個(gè)人圖像集等各種來(lái)源。每個(gè)類別有 6000 張圖像,在訓(xùn)練集、測(cè)試集和驗(yàn)證集之間平均分配,使其成為測(cè)試新計(jì)算機(jī)視覺(jué)架構(gòu)和其他機(jī)器學(xué)習(xí)模型的理想數(shù)據(jù)集。
卷積神經(jīng)網(wǎng)絡(luò)與其他類型網(wǎng)絡(luò)的主要區(qū)別在于它們處理數(shù)據(jù)的方式。通過(guò)過(guò)濾,輸入數(shù)據(jù)被依次檢查其屬性。隨著串聯(lián)的卷積層數(shù)量的增加,可識(shí)別的細(xì)節(jié)級(jí)別也會(huì)增加。在第一次卷積之后,該過(guò)程從簡(jiǎn)單的對(duì)象屬性(例如邊緣或點(diǎn))開(kāi)始,在第二次卷積之后繼續(xù)到詳細(xì)結(jié)構(gòu)(例如角、圓、矩形等)。在第三次卷積之后,特征表示類似于圖像中對(duì)象部分的復(fù)雜模式,并且通常是給定對(duì)象類所獨(dú)有的。在我們最初的例子中,這些是貓的胡須或耳朵。特征圖的可視化(如圖 4 所示)對(duì)于應(yīng)用程序本身來(lái)說(shuō)不是必需的,但它有助于理解卷積。
即使是像 CIFAR 這樣的小型網(wǎng)絡(luò),每層也包含數(shù)百個(gè)神經(jīng)元,并且有許多層串聯(lián)在一起。隨著網(wǎng)絡(luò)的復(fù)雜性和規(guī)模的增加,必要的權(quán)重和偏差的數(shù)量也會(huì)迅速增加。在圖 3 所示的 CIFAR-10 示例中,已經(jīng)有 200,000 個(gè)參數(shù)在訓(xùn)練過(guò)程中需要一組確定的值??梢酝ㄟ^(guò)池化層進(jìn)一步處理特征圖,從而減少需要訓(xùn)練的參數(shù)數(shù)量,同時(shí)仍保留重要信息。
圖 4。CNN 的特征圖。
如上所述,在 CNN 中,每次卷積之后,通常都會(huì)進(jìn)行池化(在文獻(xiàn)中也稱為子采樣)。這可以減少數(shù)據(jù)的維度。如果您查看圖 4 中的特征圖,您會(huì)注意到大區(qū)域幾乎不包含任何有意義的信息。這是因?yàn)閷?duì)象不是整個(gè)圖像,而只是其中的一小部分。圖像的其余部分未在此特征圖中使用,因此與分類無(wú)關(guān)。在池化層中,指定池化類型(最大或平均)和窗口矩陣大小。在池化過(guò)程中,窗口矩陣以逐步方式在輸入數(shù)據(jù)上移動(dòng)。例如,在最大池化中,取窗口中的最大數(shù)據(jù)值。所有其他值都將被丟棄。這樣,數(shù)據(jù)數(shù)量不斷減少,最終與卷積一起形成各自對(duì)象類別的獨(dú)特屬性。
然而,這些卷積和池化組的結(jié)果是大量的二維矩陣。為了實(shí)現(xiàn)我們實(shí)際的分類目標(biāo),我們將二維數(shù)據(jù)轉(zhuǎn)換為一個(gè)長(zhǎng)的一維向量。轉(zhuǎn)換是在所謂的扁平層中完成的,其后跟著一個(gè)或兩個(gè)全連接層。最后兩層中的神經(jīng)元類型類似于圖 2 所示的結(jié)構(gòu)。我們的神經(jīng)網(wǎng)絡(luò)的最后一層的輸出數(shù)量與要區(qū)分的類別數(shù)量完全相同。此外,在最后一層,數(shù)據(jù)也被歸一化以產(chǎn)生概率分布(97.5% 為貓,2.1% 為豹,0.4% 為老虎等)。
至此,我們的神經(jīng)網(wǎng)絡(luò)建模就結(jié)束了。但是,內(nèi)核和濾波器矩陣的權(quán)重和內(nèi)容仍然未知,必須通過(guò)網(wǎng)絡(luò)訓(xùn)練來(lái)確定,才能使模型正常工作。