摘要: 關於卷積神經網絡最重要的概念都在這裏!算法
這篇文章旨在以全面和簡潔的方式介紹卷積神經網絡(CNN),目標是創建對這些算法的內部工做的直觀理解。所以,這項工做對於剛從這個主題開始的非數學、非計算機科學背景的讀者來講意味着特別有價值。網絡
我寫這篇文章的靈感來自於我正在參加的Fast.ai課程'Code Deeprs For Coders v3',導師Jeremy Howard鼓勵咱們在博客上講述咱們學到的東西。我在這裏分享的知識來自於閱讀各類材料和參加不一樣的課程的成果,目的是在以醫學影像的學生研究項目。這些帖子的主要部分取自我最近完成的這篇論文。架構
在旅程開始以前,必須採起一些預防措施來對卷積神經網絡進行透視。機器學習(ML)是計算機科學的子領域,經過具備學習能力的算法解決問題。「學習」經過內部組件的自動優化一個稱爲參數的權重。適用於ML的問題是兩種形式的預測:迴歸-連續值的預測以及分類-經過類成員預測將對象細分爲不一樣的組。框架
深度學習(DL)又是ML的子域,經過將具備特定架構的算法(稱爲神經網絡)應用於機器學習問題來區分。這種架構的靈感來自於天然界中的神經網絡,而且包括-稍微簡化-表示鏈接不一樣神經元的計算單元和邊緣以及確保信息流動的神經元。其中存在多種不一樣類型的神經網絡:人工神經網絡(ANN),專門用於處理表格數據;用於時間序列數據的遞歸神經網絡(RNN),如語音和卷積神經網絡(CNN),特別適用於圖像數據。有了這些基礎知識,咱們就能夠開始研究後一種類型了。機器學習
圖1.示例圖函數
圖1是網絡的循環示例圖,它的靈感來自LeNet(LeCun等,1998)第一個CNN架構。雖然CNN之間的特定架構不一樣,但它們的特徵在於都有該示例網絡所涵蓋的規定元素。該算法旨在解決二元分類問題,例如貓與狗之間的區別。學習
在這一點上,重要的是該圖和緊接着的用於爲演練建立框架。所以,不須要徹底理解和熟悉全部術語。這些更深刻的理解在即將到來的部分中逐漸造成,圖1將做爲便於讀者大體的參考。優化
從圖1中能夠看出,網絡被細分爲前向和後向傳遞。在前向傳遞期間,數據經過不一樣的層(圖1:彩色箭頭)。由二維陣列表示的輸入圖像(圖1:左空矩形)被提供給給出名稱的卷積層。該層識別輸入數據上的輪廓和形狀,並輸出一組特徵圖(圖1:垂直條紋矩形)。最大池層成爲卷積層的成功之處,它成功的消除了可有可無的部分,從而縮小了數據。spa
此後,數據經過平均池化操做,將圖像數據轉換爲矢量,進入徹底鏈接的層(圖1:水平條紋矩形)。這些圖層在此向量中標識特定於類的模式,並在此基礎上預測輸入數據的類成員資格。3d
到目前爲止,尚未學習過,由於這是在向後傳遞中完成的。首先,經過損失函數量化分類偏差,基於損失函數的結果,經過反向傳播和梯度降低來優化前述層中的參數。很明顯更高的迭代次數,即輸入更多訓練樣本圖像,是實現正確分類結果所必需的。完整訓練數據集經過模型的點稱爲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)。這裏,雖然相似於卷積,但實際上發生了更簡單的矩陣計算。過濾器再次以滑動窗口方式放置在要素圖子集上,並提取子集的最高值,將它們保留在精簡輸出要素圖中。目的是丟棄多餘的數據:沒有表示任何輪廓檢測的值被劃掉,而空間信息大體保留,這致使較低的計算成本。