LeNet-5 卷積神經網路論文筆記-Gradient-Based Learning Applied to Document Recognition第Ⅰ、Ⅱ部分 筆記
文章目錄
- LeNet-5 卷積神經網路論文筆記-Gradient-Based Learning Applied to Document Recognition第Ⅰ、Ⅱ部分 筆記
- 文章介紹
- 理論基礎及現狀
- 損失函式,聚焦在模型在訓練集和測驗集上的表現差異,
- 論文中提到的方法,正則化 regularization
- B.Gradient-Based Learning ,基于梯度的學習
- 隨機梯度下降演算法 -- 即使到當前,仍是在機器學習中最常用的方法
- C. Gradient Back Propagation 梯度反向傳播
- 反向傳播演算法
- 卷積神經網路與傳統全連接神經網路的差異和表現上的優點
- 大量的引數,帶來過擬合的風險,以及訓練的成本增加,
- 全連接層完全忽略了輸入的拓撲結構
- Convolutional Networks 卷積網路 三大核心思想
- 區域感受野 local Reception field
- 子采樣層 Subsampling layer
- 權值共享
- LeNet - 5 模型結構
- 總結
文章介紹
LeNet:《Gradient-Based Learning Applied to Document Recognition》 作為CNN的開山之作,廣為人知,也是手寫體識別經典論文,發表于1998年
文章發表于1998年,首次提出卷積神經網路的概念,在這之前關于神經網路的研究都處于全連接神經網路的階段,全連接神經網路的提出開啟了神經網路研究的新階段,其中提出的關于CNN的三大核心思想在當前的神經網路研究中不斷推陳出新,作者提出的 LeNet-5 為師姐最早的卷積神經網路之一,
1998年,作者Yann LeCun等人回顧了紙上手寫字符識別的各種方法,并使用標準手寫數字來識別基準任務,對這些模型進行了比較,結果表明該網路優于所有其他模型,并發表了本文,
原文篇幅很大,不僅詳細介紹了LeNet-5 ,以及卷積神經網路,還介紹了其在不同技術以及應用,因為知識底蘊有限,故主要閱讀了第一二部分,作者在第一部分詳細介紹了此前機器學習、神經網路的基礎,第二部分詳細介紹了卷積神經網路以及 LeNet-5,
在最后,我附上了在我讀這篇論文程序中對我有很大幫助的博客、文章,
LeNet論文的翻譯與CNN三大核心思想的解讀 : 我是自己一邊看原文,不懂的地方谷歌翻譯,還是不明白的地方我會看這篇博客,作者敘述的很詳細,本文中有很多地方的翻譯我直接采用了博主的翻譯,在這里強推一波,博主是 : qianqing13579
理論基礎及現狀
在卷積神經網路提出之前,領域能對單個模式識別任務主要分為兩個模塊來完成,如下圖,

- 特征提取器,將對系統的輸入提前特,將他們表示為低緯度的向量或符號,
- 分類模塊,這里的機器學習也主要對分類模塊進行訓練,
但這種方法有極大的局限性,
損失函式,聚焦在模型在訓練集和測驗集上的表現差異,
介紹了機器學習的目標:
計算: Y p = F ( Z p , W ) Y^p = F(Z^p,W) Yp=F(Zp,W)
其中 Z p Z^p Zp為第 p p p次輸入的特征(原文中翻譯為 pattern), W W W 表示系統中可調引數的集合,也可稱為權重, Y p Y^p Yp 為模型的輸出, 另外還有 $ D^p$ 為第 p p p 次輸入對應的期望輸出,或者為實際輸出,
定義了損失函式: E p = D ( D p , F ( W , Z p ) ) E^p = D(D^p,F(W,Z^p)) Ep=D(Dp,F(W,Zp)) ,式中的第一個D 是指計算 D p D^p Dp 與 F ( W , Z p ) F(W,Z^p) F(W,Zp) 的差異,
損失函式在訓練集中的平均值為 E t r a i n E_{train} Etrain? ,在測驗集中的損失函式平均值為 E t e s t E_{test} Etest?.(測驗集與訓練集互不相交)
兩者之差定義為: E t e s t ? E t r a i n = k ( h p ) α E_{test} - E_{train} = k (\frac{h}{p})^α Etest??Etrain?=k(ph?)α
P是指訓練集中樣本的數量, h 是是衡量機器的“有效容量”或復雜程度的指標,α 在0.5到 1 之間,k是一個常數,
我們期望這個差值越小越好,越小則證明模型的泛化能力越強,模型在真實世界上的表現可能越好,兩者之差越大,則證明模型的表現越差,出現了過擬合的現象,論文中提到,兩者間的差距,總會伴隨著訓練樣本集的增大而減小,
This gap always decreases when the number of training samples increases.
這也是早期的機器學習的一大阻力,即難以從真實世界中收集到足夠大的訓練集,
論文中提到的方法,正則化 regularization
在實際上,降低過擬合風險是通過最小化
E t r a i n + β H ( W ) E_{train} + βH(W) Etrain?+βH(W)
來實作的,將此式子作為基礎 loss function 的替代,最小化這個函式,來抑制過擬合的風險,并以此來期望模型得到一個好的表現,
H ( W ) H(W) H(W)稱為正則函式 (H(w) is called a regulation function and β is a constant), β為一個常數,作為超參,
通過最小化 E t r a i n + β H ( W ) E_{train} + βH(W) Etrain?+βH(W) ,實際上就是限制引數 W W W 的變化,抑制 W W W 的變化范圍,來減少對模型過擬合的影響,
B.Gradient-Based Learning ,基于梯度的學習
已經知道我們目標在于,最小化損失函式的輸出,即讓模型的輸出與期望輸出差異越來越低,并在真實世界中有出色的表現,我們需要基于梯度,
The loss function can be minimized by estimating the impact of small variations of the parameter values on the loss function.
通過估計引數值在微小變化上對損失函式的影響,來使損失函式最小化,
前提: E ( W ) E(W) E(W) 連續且處處可微,基于梯度下降,引數W 的迭代程序為:
? W k = W k ? 1 ? ε ? E ( W ) ? W W_k = W_{k-1} - ε \frac{\partial E(W)}{\partial W} Wk?=Wk?1??ε?W?E(W)?
? \epsilon ? 是一個標量常數,為超參,通常稱為學習率、或者學習步長,這部分基于梯度的學習,在最優化計算方法的計算內容中,
最優化計算方法中有很多二階的計算方法,用于最小化損失函式,例如共軛梯度發、牛頓法等等,但文章作者在文中說,這些二階方法在大型機器學習中的幫助十分有限,而最常用的最小化方法是隨機梯度演算法(SGD),也稱為在線更新,
隨機梯度下降演算法 – 即使到當前,仍是在機器學習中最常用的方法
當模型在每見到一組訓練資料都對引數進行更新時,我們稱這種梯度下降法為SGD,即如下程序:
-
1.初始化引數( W W W,學習率 α \alpha α)
-
2.計算W中每個分量的梯度
-
3.更新引數
-
4.重復步驟2 和3,直到代價值穩定
在實際運用中,使用小批量進行引數更新的mini-batch gradient descent也常常被叫做SGD,一般我們對使用單個訓練資料更新還是小批量更新不做過多區分,而主要關注演算法本身,
C. Gradient Back Propagation 梯度反向傳播
基于梯度的學習演算法,在上世紀五十年代就有開始使用,但它主要被局限在線性系統中,
當以下三件事發生的時候,人們才認識到這種簡單的梯度下降技術在復雜的機器學習任務重的驚人表現,
第一件事是: 早期在非線性系統中,人們總是被區域最小點而困擾,但實際上最近(1998)人們發現區域極小值似乎并不是早期非線性梯度學習技術的主要障礙,
第二是: 反向傳播演算法,
Rumelhart 等人推廣的一個簡單而有效的演算法來計算由幾個處理層組成的非線性中的梯度,即反向傳播演算法
第三是: 證明了反向傳播演算法應用于帶有單位的多層神經網路可以解決復雜的學習任務,
反向傳播演算法
反向傳播的基本思想是通過從輸出到輸入的傳播可以有效地計算梯度,
卷積神經網路與傳統全連接神經網路的差異和表現上的優點
對于輸入層,圖片等資料的輸入,雖然可以采用全連接的前饋網路來完成圖片對網路的輸入,并且可以取得一定的成功,但有很大的問題,
大量的引數,帶來過擬合的風險,以及訓練的成本增加,
First, typical images are large, often with several hundred variables (pixels). A fully connected first layer with, e.g., one hundred hidden units in the first layer would already contain several tens of thousands of weights. Such a large number of parameters increases the capacity of the system and therefore requires a larger training set.
首先,典型的影像是巨大的,通常有幾百個變數(像素),一個完全連接的第一層,例如,在第一層有100個隱藏單元,那么這個隱藏單元已經包含了幾萬個重量,如此大量的引數增加了系統的容量,因此需要更大的訓練集,
這里的容量,原文中為(capacity),谷歌機翻為 容量,我認為是不恰當的,我認為這里指代的是系統的假設空間,(假設空間的概念在周志華《機器學習》中了解到),即系統的彈性大小,
- 大量的引數,帶來的是系統的彈性變大,使其過擬合的風險更大,而最簡單抑制過擬合的方式即加大訓練集,
此外
- 存盤如此多的權重,對計算機的硬體要求較高,某些模型甚至難以實作,且訓練的時間成本可能變高,
故采用全連接的方式對圖片輸入、處理是不好的,
但是沒有結構的網路的主要缺點是,對于影像或者音頻這些應用來說,不具備平移,形變扭曲的不變性,在輸入到固定大小輸入的神經網路,字符影像的大小必須歸一化,并且放在輸入的中間,不幸的是,沒有哪種預處理能夠達到如此完美:由于手寫體以字符為歸一化單位,會導致每個字符的大小,傾斜,位置存在變化,再加上書寫風格的差異,將會導致特征位置的變化,原則上,足夠大小的全連接網路可以對這些變化魯棒,但是,要達到這種目的需要更多的在輸入影像不同位置的神經元,這樣可以檢測到不同的特征,不論他們出現在影像的什么位置,學習這些權值引數需要大量的訓練樣本去覆寫可能的樣本空間,在下面描述的卷積神經網路中,位移不變性(shift invariance)可以通過權值共享實作,
通俗的講,傳統的非結構化網路(unstructured nets)以及全連接前饋神經網路,對于圖片或語音信號,有很大的限制,以圖片為例,要求輸入的圖片最好不要發生形變、區域失真,要求輸入影像集大小歸一化,都居中, 這樣才方便特征提取器提取資料,
全連接層完全忽略了輸入的拓撲結構
全連接的網路的另一個缺點就是完全忽略了輸入的拓撲結構,在不影響訓練的結果的情況下,輸入影像可以是任意的順序,然而,影像具有很強的二維區域結構:空間相鄰的像素具有高度相關性,區域相關性對于提取區域特征來說具有巨大優勢,因為相鄰像素的權值可以分成幾類,CNN通過將隱藏結點的感受野限制在區域來提取特征,
Convolutional Networks 卷積網路 三大核心思想
卷積網路結合了三種結構思想,保證了一定程度的移位、縮放和失真不變性,
CNN通過區域感受野(local receptive fields),權值共享(shared weights),空間和時間上的**子采樣(sub-sampling)**實作位移,縮放,和形變的不變性(shift,scale,distortion invariance),
在論文中,作者用的敘述單詞是: sub-sampling- 直譯過來即子采樣,在神經網路、深度學習后面的發展,這個程序被成為Pooling(池化)(參見AlexNet),
下圖為論文中提出的最早的CNN網路結構 LeNet-5

輸入層輸入大小歸一化并且字符位于中間的字符影像,每一層的每個神經元(each unit)接受上一層中一組區域領域的神經元的輸入(就是區域感受野local Receptive field),
區域感受野 local Reception field
區域感受野通俗來講它的思想是檢測影像或者輸入中的特定特征,例如我們見到鳥嘴、鳥腳、羽毛我們判斷輸入的影像可能是一張鳥的照片,區域感受野則是檢測這一個個的特征,映射到特征圖中,再探尋特征之間的關系, (多層卷積層、是否也是將特征之間識別為一個更上層的高層特征?)
區域感受野在視覺學習神經模型中使用很多次了,使用區域感受野,神經元能夠提取邊緣,角點等視覺特征,這些特征在下一層中進行結合形成更高層的特征,
每一層中所有的神經元形成一個平面,這個平面中所有神經元共享權值,這種平面上各單元的輸出集稱為特征圖(feature map),
**神經元(unit)**的所有輸出構成特征圖,特征圖中所有單元在影像的不同位置執行相同的操作,這樣他們可以在輸入影像的不同位置檢測到同樣的特征,一個完整的卷積層由多個特征圖組成(使用不同的權值向量),這樣每個位置可以提取多種特征,
一個卷積核對應檢測一種特征,對應生成一張特征圖,故可以理解為卷積核越多,能檢測的特征越多,但伴隨而來的是引數數量增加,
一個卷積核為對應若干神經元,覆寫整個輸入中, 特征圖的size 由卷積核的大小以及步長(stride)決定,stride 為相鄰兩個神經元的間隔, 卷積核的大小即(kernel size),
一個具體的示例就是圖2 LeNet-5中的第一層,第一層隱藏層中的所有單元形成6個平面,每個是一個特征圖,一個特征圖中的一個單元對應有25個輸入 (因為kernel size = 5),這25個輸入連接到輸入層的5x5區域,這個區域就是區域感受野 (local Receptive field),每個單元有25個輸入,因此有25個可訓練的引數加上一個偏置,由于特征圖中相鄰單元以前一層中連續的單元為中心,所以相鄰單元的區域感受野是重疊的 (重疊區域取決于 stride),比如,LeNet-5中,水平方向連續的單元的感受野存在5行4列的重疊,如下圖:
一個特征圖中所有單元共享25個權值和一個偏置,所以他們在輸入影像的不同位置檢測相同的特征,每一層的其他特征圖使用不同的一組權值和偏置,提取不同型別的區域特征,如在圖二的LeNet-5中,第一層每個輸入區域感受野或提取6個不同的特征,
特征圖的一種實作方式就是使用一個帶有感受野的單元,掃面整個影像,并且將每個對應的位置的狀態保持在特征圖中,這種操作等價于卷積,后面加入一個偏置和一個函式,因此,取名為卷積網路,卷積核就是連接的權重,卷積層的核就是特征圖中所有單元使用的一組連接權重,
卷積層的一個重要特性是如果輸入影像移動,特征圖輸出將移動相同的量,否則特征圖保持不變,這一特性是卷積網路對輸入信號的移位和失真具有魯棒性的基礎,
子采樣層 Subsampling layer
這里的子采樣層的概念與現在的池化層的概念等同,但在本文中對其目的的敘述比較多樣,但目前的池化層主要是為了降低特征圖解析度,降低模型訓練難度,但會影響模型的表現能力,隨著目前硬體設備的發展,越來越多的CNN模型選擇不加入池化層,
以下為Yann LeCun 對子采樣層的闡述,
一旦計算出feature map,那么精確的位置就變得不重要了,相對于其他特征的大概位置是才是相關的,
在特征圖中降低特征位置的精度的方式是降低特征圖的空間解析度,這個可以通過子采樣層達到,子采樣層通過求區域平均降低特征圖的解析度,并且降低了輸出對平移和形變的敏感度,
LeNet-5中的第二個隱藏層就是子采樣層,這個層包含了6個特征圖,與前一層的6個特征圖對應,每個神經元的感受野是2x2,每個神經元計算四個輸入的平均,然后乘以一個系數,最后加上一個偏執,最后將值傳遞給一個sigmoid函式,相鄰的神經元的感受野沒有重疊,因此,子采樣層的特征圖的行和列是前一層特征圖的一半,系數和偏置影響了sigmoid函式的效果,如果系數比較小,子采樣層相當于對輸入做了模糊操作,如果系數較大,根據偏置的值子采樣層可以看成是“噪音 或”或者“噪音 與”操作,卷積層和子采樣層是交替出現的,這種形式形成一個金字塔:每一層,特征圖的解析度逐漸減低,而特征圖的數量逐漸增加,LeNet-5中第三個隱藏層(C3層)的每個神經元的輸入可以來自前一層(S2)的多個特征圖,子采樣以及多個特征結合可以大大提高網路對幾何變換的不變性,
權值共享
區域感受野類似于影像的卷積操作,能夠提取區域特征,而影像區域的特征檢測器也可以用于整個影像,這樣就可以提取整幅影像的特征,基于這個特性,我們可以將區域感受野位于不同位置的神經元設定為相同的權值,這些神經元的輸出形成CNN中的一個特征圖,這樣直接將引數個數降到了100個,這就是權值共享的思想,
權值共享大大減少了被訓練引數的數量,降低了模型的復雜性,也在一定程度上對過擬合產生了抑制,
上述就是CNN的三大核心思想:
區域感受野(local receptive fields):基于影像區域相關的原理,保留了影像區域結構,同時減少了網路的權值
權值共享(shared weights): 也是基于影像區域相關的原理,同時減少網路的權值引數
下采樣(sub-sampling):對平移和形變更加魯棒,實作特征的不變性,同時起到了一定的降維的作用,(這個在之后的發展似乎逐漸被取代)
LeNet - 5 模型結構

Lenet-5包含七個層,不計入輸入,所有這些層都包含可訓練的引數(權重),輸入是32x32像素的影像,輸入影像為32*32大小,這要比Mnist資料庫(一個公認的手寫資料庫)中最大的字母還大(28*28),這樣做的原因是希望潛在的明顯特征如筆畫端點或角點能夠出現在最高層特征監測器感受野的中心,
在LeNet-5中,最后一層卷積層的感受野的中心在32x32的輸入影像中形成了一個20x20的區域,輸入像素值被歸一化了,這樣背景(白色)對應-0.1,前景(黑色)對應1.175.這使得輸入的均值約等于0,方差約等于1,這樣能夠加速學習[46], 這里沒看懂 >
C1層是一個卷積層,由6個特征圖Feature Map構成,特征圖中每個神經元與輸入中5*5的鄰域相連,特征圖的大小為28*28,這樣能防止輸入的連接掉到邊界之外,C1有156個可訓練引數(每個濾波器5*5=25個unit引數和一個bias引數,一共6個濾波器,共(5*5+1)*6=156個引數),共122,304個連接(26* 28* 28 * 6,每個神經元對應26個連接,每個feature map有28*28個unit, 一共有6個feature map),
- 連接計算公式: 122304 = 28*28*25*6 + ( 28* 28 * 6)
- 可訓練引數計算公式:156 = (5*5+1)*6
S2層是一個下采樣層,有6個14*14的特征圖,特征圖中的每個單元與C1中相對應特征圖的2*2鄰域相連接,S2層每個單元的4個輸入相加,乘以一個可訓練引數,再加上一個可訓練偏置,結果通過sigmoid函式計算,每個單元的2*2感受野并不重疊,因此S2中每個特征圖的行列分別是C1中特征圖的一半,S2層有 12 個可訓練引數(每個feature map有一個系數和偏置)和5880個連接,
- 12 = (1 + 1)* 6
- 5880 = 14 * 14 * 5 * 6
C3是一個有16個特征圖的卷積層,C3層的卷積核大小為5*5,每個特征圖中的每個單元與S2中的多個特征圖相連,表1顯示了C3中每個特征圖與S2中哪些特征圖相連,

C3的前6個特征圖以S2中3個相鄰的特征圖為輸入,接下來6個特征圖以S2中4個相鄰特征圖為輸入,下面的3個特征圖以不相鄰的4個特征圖為輸入,最后一個特征圖以S2中所有特征圖為輸入,
這里C3 并沒有和 S2 全部相連,而現代CNN中,比如AlexNet,ResNet等, 特征圖與前一層的所有特征圖相連,這里的不同還不明白,
S4層是一個下采樣層,由16個5 * 5大小的特征圖構成,特征圖中的每個單元與C3中相應特征圖的2 * 2鄰域相連接,跟C1和S2之間的連接一樣,S4層有32個可訓練引數(每個特征圖1個系數和一個偏置)和2000個連接(555*16,對于S4的每個unit,對應感受野4個引數,加上一個偏置),
C5層是一個卷積層,有120個特征圖,每個單元與S4層的全部16個特征圖的5 * 5領域相連,由于S4層特征圖的大小也為5\ * 5(同濾波器一樣),故C5特征圖的大小為1 * 1:**這構成了S4和C5之間的全連接,之所以仍將C5標示為卷積層而非全連接層,是因為如果LeNet-5的輸入變大,而其他的保持不變,那么此時特征圖的維數就會比1 *1大,**C5層有48120個可訓練連接((5 * 5 * 16+1) *120),
F6為全連接層,有8484個節點,所以有84 *(120+1)=1016484 *(120+1)=10164個引數
F6層計算輸入向量和權重向量之間的點積,再加上一個偏置,神經元 i i i 的加權和表示為 a i a_i ai? ,然后將其傳遞給sigmoid函式產生單元 $ i $ 的一個狀態,表示為 x i x_i xi?,
x i = f ( a i ) x_i = f(a_i) xi?=f(ai?)
sigmod函式是一個雙曲線正切函式:
f ( a ) = A ? t a n h ( S a ) f(a) = A*tanh(Sa) f(a)=A?tanh(Sa)
A表示函式的振幅,S決定了斜率,這個函式是一個奇函式,水平漸近線為+A,-A,常量A通常取1.7159,
輸出層為全連接層,共有10個節點,采用的是徑向歐式距離函式(RBF)的網路連接方式,
總結
- 卷積神經網路能夠很好的利用影像的結構資訊,
- 卷積層借助區域感受野和共享權值,大大減少引數數量,以及抑制過擬合,
LeNet雖然年代久遠,但它開啟了神經網路的新篇章,站著現在的角度,LeNet-5可能并不是那么初始,但學習它對于理解學習卷積神經網路以及理解上周讀的 AlexNet 有很大的幫助,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/335327.html
標籤:其他
