介紹
這篇文章旨在以全面和簡潔的方式介紹卷積神經網絡(CNN),目标是建立對這些算法的内部工作的直覺了解。是以,這項工作對于剛從這個主題開始的非數學、非計算機科學背景的讀者來說意味着特别有價值。
我寫這篇文章的靈感來自于我正在參加的Fast.ai課程'Code Deeprs For Coders v3',導師Jeremy Howard鼓勵我們在部落格上講述我們學到的東西。我在這裡分享的知識來自于閱讀各種材料和參加不同的課程的成果,目的是在以醫學影像的學生研究項目。這些文章的主要部分取自我最近完成的這篇論文。
在旅程開始之前,必須采取一些預防措施來對卷積神經網絡進行透視。機器學習(ML)是計算機科學的子領域,通過具有學習能力的算法解決問題。“學習”通過内部元件的自動優化一個稱為參數的權重。适用于ML的問題是兩種形式的預測:回歸-連續值的預測以及分類-通過類成員預測将對象細分為不同的組。
深度學習(DL)又是ML的子域,通過将具有特定架構的算法(稱為神經網絡)應用于機器學習問題來區分。這種架構的靈感來自于自然界中的神經網絡,并且包括-稍微簡化-表示連接配接不同神經元的計算單元和邊緣以及確定資訊流動的神經元。其中存在多種不同類型的神經網絡:人工神經網絡(ANN),專門用于處理表格資料;用于時間序列資料的遞歸神經網絡(RNN),如語音和卷積神經網絡(CNN),特别适用于圖像資料。有了這些基礎知識,我們就可以開始研究後一種類型了。
“解剖”CNN

圖1.示例圖
圖1是網絡的循環示例圖,它的靈感來自LeNet(LeCun等,1998)第一個CNN架構。雖然CNN之間的特定架構不同,但它們的特征在于都有該示例網絡所涵蓋的規定元素。該算法旨在解決二進制分類問題,例如貓與狗之間的差別。
在這一點上,重要的是該圖和緊接着的用于為演練建立架構。是以,不需要完全了解和熟悉所有術語。這些更深入的了解在即将到來的部分中逐漸形成,圖1将作為便于讀者大緻的參考。
從圖1中可以看出,網絡被細分為前向和後向傳遞。在前向傳遞期間,資料通過不同的層(圖1:彩色箭頭)。由二維陣清單示的輸入圖像(圖1:左空矩形)被提供給給出名稱的卷積層。該層識别輸入資料上的輪廓和形狀,并輸出一組特征圖(圖1:垂直條紋矩形)。最大池層成為卷積層的成功之處,它成功的消除了無關緊要的部分,進而縮小了資料。
此後,資料通過平均池化操作,将圖像資料轉換為矢量,進入完全連接配接的層(圖1:水準條紋矩形)。這些圖層在此向量中辨別特定于類的模式,并在此基礎上預測輸入資料的類成員資格。
到目前為止,還沒有學習過,因為這是在向後傳遞中完成的。首先,通過損失函數量化分類誤差,基于損失函數的結果,通過反向傳播和梯度下降來優化前述層中的參數。很明顯更高的疊代次數,即輸入更多訓練樣本圖像,是實作正确分類結果所必需的。完整訓練資料集通過模型的點稱為epoch。
卷積,線性整流函數和最大池化
圖2卷積操作
術語“卷積”描述了特定類型的矩陣計算,其中稱為濾波器的特殊目的矩陣應用于輸入圖像,如圖2所示。濾波器(3x3矩陣)通常是較小的矩陣,在卷積運算中,它被放置在圖像的子部分上:(圖2中的3x3青色圖像子集)。每對相應值的元素乘法和随後對所有乘積的進行求和,産生單個輸出值。換句話說,圖像子集的左上角值與濾波器的左上角值相乘,頂部中間值與相應的頂部中間值相乘,最後所有乘積都相加。之後,濾波器以滑動視窗的方式在輸入圖像的每個拟合子集上執行上述計算的圖像上移動。得到的輸出值被收集在稱為特征圖的輸出矩陣中,其中特征圖中的輸出值的位置(圖2:青色頂部中間值)對應于計算中涉及的輸入圖像子集的位置。
過濾器在圖像上的移動方式取決于步幅和填充。一個步驟描述了每個卷積運算将濾波器移動一個像素,進而産生更小的特征圖(圖2:步幅s=1)。通過向圖像的外邊界添加零像素來抵消特征圖的尺寸減小,稱為填充(圖2:填充=0)。在卷積操作期間,大多數單獨的濾波器應用于輸入圖像,進而産生每個濾波器的特征圖(圖2:濾波器和特征圖後面的多個silhouttes)。換句話說,卷積層輸出與其濾波器計數對應的一疊特征映射。
圖3.卷積操作
可以将濾波器視為專用輪廓檢測器,并且得到的特征圖報告檢測位置。如果過濾器放置在包含邊緣的圖像子部件上,它會将其轉換為特征圖中的高值。換句話說,高特征映射值表示特定位置處的輸入圖像中的輪廓檢測。該過程如圖3所示:如果過濾器到達由黃色和綠色框标記的子部分,則識别基礎輪廓。是以,特征圖也可以被視為圖像并相應地可視化。
圖4.卷積操作示例結果
圖4顯示出了對輸入圖像應用濾波器(圖4:底行)以進行垂直或水準邊緣檢測的結果。
圖5.學習後的過濾器,來自Zeiler和Fergus,2014年
過濾器值是權重、是學習的參數。它們在後向傳遞期間不斷優化,同時更多的資料通過網絡。通過這種方式,實作了調整過程:過濾器學習識别輸入圖像中可用的特定元素,并且可以将其可視化為圖檔本身。而早期圖層中的過濾器(圖5:左)将學習基本像素,如輪廓,後期圖層中的過濾器(圖5:右)将連接配接上遊特征,并學習更複雜的構造,例如眼睛甚至臉部( Zeiler和Fergus,2014)。是以,可以小心地将濾波器與視覺皮層神經元的感受野進行比較。
圖6.整流線性單元(ReLU)
這個被稱為線性整流單元(ReLU)的函數應用于輸出特征圖(圖6)。在令人生畏的名稱下隐藏了一個簡單的門檻值步驟:零以下的所有值都歸零。
圖7.最大池
門檻值化的特征圖被移交給最大池化層(圖7)。這裡,雖然類似于卷積,但實際上發生了更簡單的矩陣計算。過濾器再次以滑動視窗方式放置在要素圖子集上,并提取子集的最高值,将它們保留在精簡輸出要素圖中。目的是丢棄多餘的資料:沒有表示任何輪廓檢測的值被劃掉,而空間資訊大緻保留,這導緻較低的計算成本。
靈感和參考
- Jeremy Howard和Fast.ai 深入學習編碼 器;
- Andrew Ng和deeplearning.ai的 神經網絡和深度學習 ;
- LeCun,Y.,Bottou,L.,Bengio,Y.,Haffner,P.,1998。基于梯度的學習應用于文檔識别;
- Zeiler,MD,Fergus,R.,2014。可視化和了解卷積網絡;
本文由
阿裡雲雲栖社群組織翻譯。
文章原标題《a-guided-tour-through-a-convolutional-neural-network》
作者:marvin petersen
譯者:虎說八道,審校:。文章為簡譯,更為詳細的内容,請檢視
原文。