之前就購買了這本書,但是一直處於閒看的狀態,時至年底,深感不能再繼續之前狀態,故從正在閱讀的部分開始寫讀書筆記,之前的會在後邊補充。
原理和結構
卷積神經網絡以其強大的計算機視覺能力倍受人們的青睞。
作者首先提出了三個觀點,也就是圖片的三個性質,分別是:
- 局部性,
- 相同性,
- 不變性,也就是如果我們實現下采樣,它的基本性質保存不變
上面的三個性質分別對應着卷積神經網絡的三種思想。
全連接神經網絡的有一系列隱藏層組成,每個隱藏層由若干個神經元組成,每個神經元與前一層的所有神經元相關聯,但是每一層中神經元相互獨立。對於處理圖像並不是一個好的選擇。
卷積神經網絡不同於一般的全連接神經網絡,是一個3D容量的神經元,也就是以三個維度來排列的:寬度、高度、深度。它的主要層結構有三個:巻積層、池化層和全連接層。巻積層和全連接層擁有參數,而激活層和池化層不擁有參數。使用梯度下降的辦法進行更新,最終實現圖片的識別。
1.巻積層
巻積層是卷積神經網絡的核心。
下面是作者總結的巻積層的性質
- 輸入數據體的尺寸是W1*H1*D1
- 4個超參數:濾波器數量K,濾波器空間尺寸F,滑動步長S,零填充的數量P。
- 輸出數據體的尺寸W2*H2*D2,其中,W2=(W1-F+2P)/S+1,H2=(H1-F+2P)/S+1,D2=K.
- 由於參數共享,每個濾波器包含的權重數目爲F*F*D1,巻積層一共有F*F*D1*K個權重和K個偏置
- 在輸出體數據中,第d個深度切片(空間尺寸是W2*H2),用第d個濾波器和輸入數據進行有效卷積運算的結果,再加上第d個偏置
對於卷積神經網絡中的超參數,常見的設置是F=3,S=1,P=1。同時,這些參數也有着一些約定俗成的慣例和經驗。
2.池化層
通常在巻積層之間週期性的插入一個池化層,其作用是逐漸降低數據體的空間尺寸,這樣就能減少網絡中參數的數量,減少計算資源浪費,有效的控制過擬合。
這種方式之所以有效,是因爲之前提出的特徵不變形,也就是下采樣不會丟失圖片的特徵,因此將圖片縮小進行卷積運算能夠大大的降低卷積運算的時間。
最常用的的池化層形式是尺寸爲2*2的窗口,滑動步長爲2,對圖像進行下采樣,會丟失75%的信息,選擇其中最大的保留下來。
池化層的一些性質
- 輸入數據的尺寸是W1*H1*D1
- 有兩個需要設置的超參數,空間大小F和滑動步長S
- 輸出數據體的尺寸是W2*H2*D2,其中,W2=(W1-F)/S+1,H2=(H1-F)/S+1,D2=D1
- 對輸入進行固定函數的運算,沒有參數引入
- 池化層中很少引入零填充
在實際中,通常有兩種方式,一種是F=2,S=2,這種池化有重疊,另外有一種是F=2,S=2,一般來說慎用比較大的池化窗口,以免對網絡有破壞性。
除了最大值池化以外,還有一些其他的池化函數,如平均池化或者L2範數池化。在實際應用中,在巻積層之間引入最大值池化的效果最好,而通常在卷積神經網絡的最後一層使用均值池化。
3.全連接層
全連接層和一般的神經網絡一樣。
在這裏爲了防止過擬合會引入Dropout,最近的研究表明,在進入全連接層之前,使用全局平均池化能夠有效的降低過擬合。
總的來說,卷積神經網絡包括以上三個層,還可以引入激活函數增加模型的非線性,所以我們常見到的網絡一般是巻積層和ReLU層放在一起,有時候前邊還有批標準化層,隨後緊跟着池化層,再不斷的重複,直到圖像的尺寸縮小到一定的程度,然後展開特徵圖,連接全連接層,輸出結果
有兩點需要注意:
1、小濾波器的有效性。一般來說,幾個小濾波器的效果要好於大濾波器,唯一的不好是在反向傳播的過程之間的巻積層可能會佔用更多的內存
2、網絡的尺寸
- 輸入層:一般來說,輸入層的大小應該被2整除很多次。
- 巻積層:儘可能的使用小濾波器,滑動步長取1.還有就是需要對輸入數據體進行零填充,以保證巻積層不會改變輸入數據體的空間尺寸
- 池化層:負責空間維度進行下采樣,常用2*2,滑動2
- 零填充:讓巻積層的輸入和輸出在空間維度上保持一致。