CNN卷積神經網絡— LeNet(二)

2021-02-20 深度學習科研平臺

卷積神經網絡( Convolutional Neural Network, CNN):
是一種常見的深度學習架構,受生物自然視覺認知機制(動物視覺皮層細胞負責檢測光學信號)啟發而來,是一種特殊的多層前饋神經網絡。它的人工神經元可以響應一部分覆蓋範圍內的周圍單元,對於大型圖像處理有出色表現。
一般神經網絡VS卷積神經網絡:
相同點:卷積神經網絡也使用一種反向傳播算法(BP)來進行訓練
不同點:網絡結構不同。卷積神經網絡的網絡連接具有局部連接、參數共享的特點。
局部連接:是相對於普通神經網絡的全連接而言的,是指這一層的某個節點只與上一層的部分節點相連。
參數共享:是指一層中多個節點的連接共享相同的一組參數。

全連接:連接個數nm 局部連接:連接個數im
參數不共享:參數個數n*m+m 參數共享:參數個數i+1

卷積神經網絡的主要組成:
卷積層(Convolutional layer),卷積運算的目的是提取輸入的不同特徵,第一層卷積層可能只能提取一些低級的特徵如邊緣、線條和角等層級,更多層的網絡能從低級特徵中迭代提取更複雜的特徵。

池化層(Pooling),它實際上一種形式的向下採樣。有多種不同形式的非線性池化函數,而其中最大池化(Max pooling)和平均採樣是最為常見的

全連接層(Full connection), 與普通神經網絡一樣的連接方式,一般都在最後幾層

pooling層的作用:
Pooling層相當於把一張解析度較高的圖片轉化為解析度較低的圖片;
pooling層可進一步縮小最後全連接層中節點的個數,從而達到減少整個神經網絡中參數的目的。

LeNet-5卷積神經網絡模型
LeNet-5:是Yann LeCun在1998年設計的用於手寫數字識別的卷積神經網絡,當年美國大多數銀行就是用它來識別支票上面的手寫數字的,它是早期卷積神經網絡中最有代表性的實驗系統之一。

LenNet-5共有7層(不包括輸入層),每層都包含不同數量的訓練參數,如下圖所示。

LeNet-5中主要有2個卷積層、2個下抽樣層(池化層)、3個全連接層3種連接方式

卷積層
卷積層採用的都是5x5大小的卷積核/過濾器(kernel/filter),且卷積核每次滑動一個像素(stride=1),一個特徵圖譜使用同一個卷積核.
每個上層節點的值乘以連接上的參數,把這些乘積及一個偏置參數相加得到一個和,把該和輸入激活函數,激活函數的輸出即是下一層節點的值

LeNet-5的下採樣層(pooling層)
下抽樣層採用的是2x2的輸入域,即上一層的4個節點作為下一層1個節點的輸入,且輸入域不重疊,即每次滑動2個像素,下抽樣節點的結構如下:

每個下抽樣節點的4個輸入節點求和後取平均(平均池化),均值乘以一個參數加上一個偏置參數作為激活函數的輸入,激活函數的輸出即是下一層節點的值。

卷積後輸出層矩陣寬度的計算:
Outlength=
(inlength-fileterlength+2*padding)/stridelength+1

Outlength:輸出層矩陣的寬度
Inlength:輸入層矩陣的寬度
Padding:補0的圈數(非必要)
Stridelength:步長,即過濾器每隔幾步計算一次結果

LeNet-5第一層:卷積層C1
C1層是卷積層,形成6個特徵圖譜。卷積的輸入區域大小是5x5,每個特徵圖譜內參數共享,即每個特徵圖譜內只使用一個共同卷積核,卷積核有5x5個連接參數加上1個偏置共26個參數。卷積區域每次滑動一個像素,這樣卷積層形成的每個特徵圖譜大小是(32-5)/1+1=28x28。C1層共有26x6=156個訓練參數,有(5x5+1)x28x28x6=122304個連接。C1層的連接結構如下所示。

LeNet-5第二層:池化層S2
S2層是一個下採樣層(為什麼是下採樣?利用圖像局部相關性的原理,對圖像進行子抽樣,可以減少數據處理量同時保留有用信息)。C1層的6個28x28的特徵圖譜分別進行以2x2為單位的下抽樣得到6個14x14((28-2)/2+1)的圖。每個特徵圖譜使用一個下抽樣核。5x14x14x6=5880個連接。S2層的網絡連接結構如下右圖

LeNet-5第三層:卷積層C3
C3層是一個卷積層,卷積和和C1相同,不同的是C3的每個節點與S2中的多個圖相連。C3層有16個10x10(14-5+1)的圖,每個圖與S2層的連接的方式如下表 所示。C3與S2中前3個圖相連的卷積結構見下圖.這種不對稱的組合連接的方式有利於提取多種組合特徵。該層有(5x5x3+1)x6 + (5x5x4 + 1) x 3 + (5x5x4 +1)x6 + (5x5x6+1)x1 = 1516個訓練參數,共有1516x10x10=151600個連接。

LeNet-5第四層:池化層S4
S4是一個下採樣層。C3層的16個10x10的圖分別進行以2x2為單位的下抽樣得到16個5x5的圖。5x5x5x16=2000個連接。連接的方式與S2層類似,如下所示。

LeNet-5第五層:全連接層C5
C5層是一個全連接層。由於S4層的16個圖的大小為5x5,與卷積核的大小相同,所以卷積後形成的圖的大小為1x1。這裡形成120個卷積結果。每個都與上一層的16個圖相連。所以共有(5x5x16+1)x120 = 48120個參數,同樣有48120個連接。C5層的網絡結構如下所示。

LeNet-5第六層:全連接層F6
F6層是全連接層。F6層有84個節點,對應於一個7x12的比特圖,該層的訓練參數和連接數都是(120 + 1)x84=10164.

LeNet-5第七層:全連接層Output
Output層也是全連接層,共有10個節點,分別代表數字0到9,如果節點i的輸出值為0,則網絡識別的結果是數字i。採用的是徑向基函數(RBF)的網絡連接方式。假設x是上一層的輸入,y是RBF的輸出,則RBF輸出的計算方式是:

yi的值由i的比特圖編碼(即參數Wij)確定。yi越接近於0,則標明輸入越接近於i的比特圖編碼,表示當前網絡輸入的識別結果是字符i。該層有84x10=840個設定的參數和連接。連接的方式如上圖.

以上是LeNet-5的卷積神經網絡的完整結構,共約有60,840個訓練參數,340,908個連接。一個數字識別的效果如圖所示

LeNet-5的訓練算法
訓練算法與傳統的BP算法差不多。主要包括4步,這4步被分為兩個階段:
第一階段,向前傳播階段:
a)從樣本集中取一個樣本(X,Yp),將X輸入網絡;
b)計算相應的實際輸出Op。
在此階段,信息從輸入層經過逐級的變換,傳送到輸出 層。這個過程也是網絡在完成訓練後正常運行時執行的過程。在此過程中,網絡執行的是計算(實際上就是輸入與每層的權值矩陣相點乘,得到最後的輸出結果):
Op=Fn(…(F2(F1(XpW(1))W(2))…)W(n))
第二階段,向後傳播階段
a)算實際輸出Op與相應的理想輸出Yp的差;
b)按極小化誤差的方法反向傳播調整權矩陣。

卷積神經網絡的優點
卷積網絡較一般神經網絡在圖像處理方面有 如下優點
a)輸入圖像和網絡的拓撲結構能很好的吻
合;
b)特徵提取和模式分類同時進行,並同時在
訓練中產生;
c)權重共享可以減少網絡的訓練參數,使神
經網絡結構變得更簡單,適應性更強。
總結
卷積網絡在本質上是一種輸入到輸出的映射,它能夠學習大量的輸入與輸出之間的映射關係,而不需要任何輸入和輸出之間的精確的數學表達式。

通過對LeNet-5的網絡結構的分析,可以直觀地了解一個卷積神經網絡的構建方法,可以為分析、構建更複雜、更多層的卷積神經網絡做準備。

LaNet-5的局限性
CNN能夠得出原始圖像的有效表徵,這使得CNN能夠直接從原始像素中,經過極少的預處理,識別視覺上面的規律。然而,由於當時缺乏大規模訓練數據,計算機的計算能力也跟不上,LeNet-5 對於複雜問題的處理結果並不理想。

2006年起,人們設計了很多方法,想要克服難以訓練深度CNN的困難。其中,最著名的是 Krizhevsky et al.提出了一個經典的CNN 結構,並在圖像識別任務上取得了重大突破。其方法的整體框架叫做 AlexNet,與 LeNet-5 類似,但要更加深一些。

相關焦點

  • CNN卷積神經網絡實例(基於pytorch)
    1.關於卷積神經網絡卷積神經網絡(Convolutional Neural Network,CNN) 是一種具有局部連接、權重共享等特徵的深層前饋神經網絡
  • Matlab編程之——卷積神經網絡CNN代碼解析
    deepLearnToolbox-master是一個深度學習matlab包,裡面含有很多機器學習算法,如卷積神經網絡CNN,深度信念網絡DBN,
  • 卷積神經網絡的前世今生
    在前述章節的基礎上,本章將主要介紹訓練卷積神經網絡和深度神經網絡的重要方法與技巧,深度神經網絡的遷移學習策略,以及如何訓練深度神經網絡以解決實際問題等內容。RBF 輸出的值越接近於0,表示當前網絡的輸入越接近於i,即越接近於i 的ASCII 編碼,該層一共包含84×10=840 個可學習參數。卷積神經網絡在本質上是在不需要獲取輸入和輸出之間精確的數學表達的情況下,學習從輸入數據到目標輸出的複雜映射,卷積神經網絡的優勢在於能夠很好地利用圖像的二維結構信息,LeNet-5 在銀行支票手寫體字符識別問題上得到成功應用。
  • 小白學CNN以及Keras的速成
    二、開始學習CNN在理解CNN之前,我們有必要先理解一下什麼是神經網絡,這樣才能開始了解更高級的卷積神經網絡。要學習神經網絡當然有很多途徑,網上不少的大牛寫了很多攻略,有的推崇從理論到工程完成深度學習,有的希望從工程出發發現問題,解決問題。
  • 教程 | 基於Matlab的卷積神經網絡(CNN)
    原文連結:https://blog.csdn.net/walegahaha/article/details/51603040原文標題:卷積神經網絡
  • 【深度學習】卷積神經網絡-CNN簡單理論介紹
    當然,這裡默認讀者對神經網絡有一定的了解和認識,如果有疑問可留言,本文也不介紹太多關於數學的內容,以便於讀者理解,如有需要後期更新相關數學推導。1 卷積神經網絡簡介通常有:當然也還包括神經網絡常用的激活層,正則化層等。
  • 數據分析之道|CNN卷積神經網絡之文本分類
    卷積神經網絡(Convolutional Neural Networks, CNN)
  • 卷積神經網絡(CNN)綜述
    卷積神經網絡概念2. 卷積神經網絡的特點   2.1 局部區域連接   2.2 權值共享   2.3 降採樣3. 卷積神經網絡的結構   3.1 卷積層   3.2 池化層4. 卷積神經網絡的研究進展1.
  • 用於圖像分割的卷積神經網絡:從R-CNN到Mask R-CNN
    選自Athelas作者:Dhruv Parthasarathy機器之心編譯參與:王宇欣、hustcxy、黃小天卷積神經網絡(CNN)的作用遠不止分類那麼簡單!在本文中,我們將看到卷積神經網絡(CNN)如何在圖像實例分割任務中提升其結果。
  • 卷積神經網絡(CNN)新手指南
    然而最經典的,或者說最流行的神經網絡使用範例是將其用於圖像處理領域。提到圖像處理,本文主要介紹的是如何使用卷積神經網絡來進行圖像分類。以類似的方式計算機能夠進行圖像分類任務,通過尋找低層次的特徵如邊緣和曲線,然後運用一系列的卷積層建立一個更抽象的概念。這是卷積神經網絡應用的一個總體概述,接下來我們來探討下細節。生物聯繫首先要稍微普及下一點背景知識,當你第一次聽到卷積神經網絡這個詞時,你也許會想這是是不與神經科學或者生物學有關?恭喜你,猜對了一部分。
  • CNN卷積神經網絡
    CNN卷積神經網絡卷積神經網絡通常包含以下幾種層:卷積層(Convolutional layer),卷積神經網路中每層卷積層由若干卷積單元組成
  • 卷積神經網絡算法的一個實現
    卷積神經網絡CNN是Deep Learning的一個重要算法,在很多應用上表現出卓越的效果,[1]中對比多重算法在文檔字符識別的效果,結論是CNN優於其他所有的算法。CNN在手寫體識別取得最好的效果,[2]將CNN應用在基於人臉的性別識別,效果也非常不錯。前段時間我用BP神經網絡對手機拍照圖片的數字進行識別,效果還算不錯,接近98%,但在漢字識別上表現不佳,於是想試試卷積神經網絡。
  • 卷積神經網絡(CNN)
    1.卷積神經網絡是在CNN也運用前向傳播與反向傳播求解參數卷積神經網絡(Convolutional Neural Networks,CNN)由若干個卷積層和池化層組成的深度神經網絡,它屬於深度神經網絡的一個特例,它用於圖像識別和自然語言處理
  • 一文讀懂卷積神經網絡CNN
    卷積神經網絡簡介(Convolutional Neural Networks,簡稱CNN)卷積神經網絡是近年發展起來,並引起廣泛重視的一種高效識別方法。現在,CNN已經成為眾多科學領域的研究熱點之一,特別是在模式分類領域,由於該網絡避免了對圖像的複雜前期預處理,可以直接輸入原始圖像,因而得到了更為廣泛的應用。K.Fukushima在1980年提出的新識別機是卷積神經網絡的第一個實現網絡。隨後,更多的科研工作者對該網絡進行了改進。
  • CNN卷積神經網絡層級結構
    在傳統的神經網絡中,比如多層感知機(MLP),其輸入通常是一個特徵向量:需要人工設計特徵,然後將這些特徵計算的值組成特徵向量,在過去幾十年的經驗來看,人工找到的特徵並不是怎麼好用,特徵有時多了(需要PCA降維),特徵有時少了(容易過擬合),有時選擇的特徵根本就不起作用(真正起作用的特徵在浩瀚的未知裡面)。這就是為什麼在過去卷積神經網絡一直被SVM等完虐的原因。
  • 輕鬆學pytorch-構建卷積神經網絡
    大家好,這個是我的pytorch學習筆記第三篇,主要是使用pytorch來構建一個簡單的卷積神經網絡,完成mnist手寫字符識別。涉及到主要知識點是如何使用torch.nn.Module這個基類來實現一個網絡結構定義。這個基類中最重要的是實現自己的forward方法,這個也是自定義網絡結構的實現方法。
  • 如何設計卷積神經網絡CNN?
    所以設計網絡結構還真是一件非常費事費力的事情。如何設計CNN網絡架構資料匯總在inception和resnet網絡提出並相對完善以後,網絡結構的設計就不再爆發式出現了,這兩大類網路涵蓋了大部分應用的卷積網絡結構。!很有用——基於CNN的圖形分類綜合設計指南對於大多數應用來說,應該使用遷移學習而不是從頭訓練網絡。
  • 卷積神經網絡(CNN)介紹與實踐
    - 來源:http://cs231n.github.io/classification/為了「教會」一種算法如何識別圖像中的對象,我們使用特定類型的人工神經網絡:卷積神經網絡(CNN)。他們的名字源於網絡中最重要的一個操作:卷積。卷積神經網絡受到大腦的啟發。
  • 從零開始實現卷積神經網絡CNN
    二是待識別圖片裡面物體的位置會變化。假設我們需要判斷一張寵物圖片是貓還是狗,不管這隻寵物位於圖片的什麼位置,從什麼角度拍的,全身照還是大頭照,模型要都能夠準確識別出來它是貓還是狗,但是傳統的神經網絡沒法適應這種變化,因為模型的每一個參數幾乎與圖片裡面每一個像素位置聯繫了起來,圖片內容一旦發生扭曲或者變形,都會導致模型輸出變化很大。而
  • 卷積神經網絡CNN:卷積的來源和原理
    卷積神經網絡(Convolutional Neural Network,簡稱為CNN或ConvNet)是一種具有