深度學習第四周--第二課理論

經典網絡

LeNet-5

針對灰度圖片訓練,例如輸入一個32x32x1的圖片:
在這裏插入圖片描述
圖片與一個5x5x6的過濾器做卷積,步伐s=1,padding=0,得到28x28x6的矩陣,再與一個14x14x6的過濾器做均值池化,過濾器寬度爲2,步幅爲2,圖形的尺寸,高度和寬度均縮小2倍,得到一個14x14x6的圖像,再與一個5x5x16的過濾器做卷積,步伐s=1,padding=0,得到10x10x16的圖像,再與一個5x5x16的過濾器做均值池化,過濾器寬度爲2,步幅爲2,圖形高度和寬度均縮小2倍,輸出一個5x5x16的圖形。將所有數字相乘,乘積是400。
下一層是全連接層,在全連接層中,有400個節點,每個節點有120個神經元,再從這400個節點中抽取一部分節點構建另一個全連接層。
最後一步就是利用這84個特徵得到最後的輸出,還可以再這裏再加一個節點用來預測y^\hat y的值,y^\hat y有10個可能的值,對應識別0-9這10個數字,用softmax函數輸出十種分類結果。

AlexNet

AlexNet首先用一張227x227x3的圖片作爲輸入,第一層使用11x11x96的過濾器,s=4,得到55x55x96的圖像,用一個3x3的過濾器構建最大池化層,f=3,s=2,得到27x27x96的圖像,接着再執行一個5x5的卷積,padding之後,得到27x27x276的圖像,再進行最大池化,尺寸縮小到13x13,再執行一次same卷積,相同的padding,得到的結果是13x13x384,再做一次same卷積。再做一次同樣的操作,最後再進行一次最大池化,尺寸縮小到6x6x256。最後將所有數字相乘,得到9216個單元,然後是一些全連接層,最後使用softmax函數輸出識別的結果。
在這裏插入圖片描述

VGGNet

VGG-16網絡沒有那麼多超參數,這是一種只需要專注於構建卷積層的簡單網絡,首先用3x3,步幅爲1的過濾器構建卷積層,padding參數爲same卷積中的參數,然後用一個2x2,步幅爲2的過濾器構建最大池化層,池化層將輸入圖像進行壓縮,從224x224x64縮小到112x112x64。使用128個過濾器,以及一些same卷積,輸出112x112x128然後進行池化,可以推導出池化後的結果是56x56x128,然後又是若干個卷積層,使用128個過濾器,以及一些same卷積,輸出112x112x128,然後進行池化,可以推導出池化後的結果是56x56x128,接着再用256個相同的過濾器做三次卷積操作,然後再池化,然後再卷積三次,再池化。如此進行幾輪操作後,得到7x7x512的特徵圖進行全連接操作,得到4096個單元,然後進行softmax激活,輸出從1000個對象中識別的結果。
在這裏插入圖片描述
VGG-16的這個數字16,就是指在這個網絡中包含16個卷積層和全連接層,網絡結構規整,主要缺點是需要訓練的特徵數量非常巨大。

殘差網絡(ResNet)

situation:非常非常深的神經網絡是很難訓練的。
why:存在梯度消失和梯度爆炸問題。
solution:跳躍連接skip connection,它可以從某一層網絡層獲取激活,然後迅速反饋給另外一層,甚至是神經網絡的更深層,可以利用跳躍連接構建能夠訓練深度網絡的ResNets,有時深度能夠超過100層。
注:skip connection:指a[l]a^{[l]}跳過一層或者好幾層,從而將信息傳遞到神經網絡的更深層。
在這裏插入圖片描述
這是一個兩層神經網絡,在L層進行激活,得到a[l+1]a^{[l+1]},再次進行激活,兩層之後得到a[l+2]a^{[l+2]}。計算過程是從a[l]a^{[l]}開始,首先進行線性激活,根據這個公式:z[l+1]=W[l+1]a[l]+b[l+1]z^{[l+1]}=W^{[l+1]}a^{[l]}+b^{[l+1]},通過a[l]a^{[l]}算出z[l+1]z^{[l+1]},即a[l]a^{[l]}乘以權重矩陣,再加上偏差因子。然後通過ReLU非線性激活函數得到a[l+1]a^{[l+1]}a[l+1]=g(z[l+1])a^{[l+1]}=g(z^{[l+1]})計算得出,接着再次進行線性激活,依據等式z[l+2]=W[l+2]a[l+1]+b[l+2]z^{[l+2]}=W^{[l+2]}a^{[l+1]}+b^{[l+2]},最後根據這個等式再次進行ReLU非線性激活,即a[l+2]=g(z[l+2])a^{[l+2]}=g(z^{[l+2]}),這裏的g是指ReLU非線性函數,得到的結果就是a[l+2]a^{[l+2]}。信息流從a[l]a^{[l]}a[l+2]a^{[l+2]}需要經過以上所有步驟,即這組網絡層的主路徑。
在殘差網絡中有一點變化,我們將a[l]a^{[l]}直接向後,拷貝到神經網絡的深層,在ReLU非線性激活函數前加上a[l]a^{[l]},這是一條捷徑。a[l]a^{[l]}的信息直接到達神經網絡的深層,不再沿着主路徑傳遞,這意味着最後這個等式(a[l+2]=g(z[l+2])a^{[l+2]}=g(z^{[l+2]}))去掉了,取而代之的是另一個ReLU非線性函數,仍然對z[l+2]z^{[l+2]}進行g函數處理,但這次要加上a[l]a^{[l]},即:a[l+2]=g(z[l+2]+a[l])a^{[l+2]}=g(z^{[l+2]}+a^{[l]}),也就是加上的這個a[l]a^{[l]}產生了一個殘差塊。

在這裏插入圖片描述
如圖所示,5個殘差塊連接在一起構成一個殘差網絡。如果使用標準優化算法訓練一個普通網絡,比如梯度下降法,或者其它熱門的優化算法,如果沒有殘差,沒有這些捷徑或者跳躍連接,憑經驗會發現隨着網絡深度加深,訓練錯誤會減少,然後增多,理論上,隨着網絡深度的加深,應該訓練得越來越好纔對,但實際上如果沒有殘差網絡,對於一個普通網絡來說,深度越深意味着優化算法越難訓練,訓練錯誤會越來越多。
但殘差網絡不同,即使網絡再深,訓練的表現卻不錯。

1x1卷積

1x1卷積:用於減少或保持或增加通道數(ncn_c

谷歌Inception網絡

作用

代替人工來確定卷積層中的過濾器類型,大小究竟是1x1,3x3,還是5x5,或者是否需要創建卷積層或池化層。
**思想:**不需要人爲決定使用哪個過濾器或者是否需要池化,而是由網絡自行確定這些參數,你可以給網絡添加這些參數的所有可能值,然後把這些輸出連接起來,讓網絡自己學習它需要什麼樣的參數,採用哪些過濾器組合。
**瓶頸層:**假設有一個玻璃瓶,瓶頸是這個瓶子最小的部分。同理,瓶頸層是網絡中最小的部分,先縮小網絡,再擴大它。只要合理構建瓶頸層,既可以顯著縮小表示層規模,又不會降低網絡性能,從而節省了計算。

inception網絡

輸入一個28x28x192的圖片,先通過1x1的過濾器,再通過5x5的過濾器,1x1的層可能有16個通道,而5x5的層輸出爲28x28x32,共32個通道。
輸入一個28x28x192的圖片,先通過1x1的過濾器,再通過3x3的過濾器,1x1的層可能有96個通道,而3x3的層輸出爲28x28x128,共128個通道。
也可以輸入一個28x28x192的圖片,將其直接通過一個1x1的卷積層,這時就不比在後面再跟一個1x1的層,輸出28x28x64。
使用same類型的padding來池化,使得輸出的高和寬依然是28x28,再加上一個1x1的卷積層,將通道的數量縮小,縮小到28x28x32。
最後將這些矩陣全連接起來,在這過程中,把得到的各個層的通道都加起來,最後得到一個28x28x256的輸出。
在這裏插入圖片描述

遷移學習

使用別人已經訓練好網絡結構的權重參數,把它當作一個很好的初始化用在你自己的神經網絡上,用遷移學習把公共的數據集的知識遷移到你自己的問題上,然後轉換到你感興趣的任務上,

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章