卷積神經網路導覽
摘要: 關於卷積神經網路最重要的概念都在這裡!
介紹
這篇文章旨在以全面和簡潔的方式介紹卷積神經網路(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)。這裡,雖然類似於卷積,但實際上發生了更簡單的矩陣計算。過濾器再次以滑動視窗方式放置在要素圖子集上,並提取子集的最高值,將它們保留在精簡輸出要素圖中。目的是丟棄多餘的資料:沒有表示任何輪廓檢測的值被劃掉,而空間資訊大致保留,這導致較低的計算成本。