本篇是神經(jīng)網(wǎng)絡(luò)體系搭建的第三篇泉褐,解決體系搭建的卷積神經(jīng)網(wǎng)絡(luò)相關(guān)問題,詳見神經(jīng)網(wǎng)絡(luò)體系搭建(序)
卷積神經(jīng)網(wǎng)絡(luò)(CNN)
CNN是什么
卷積神經(jīng)網(wǎng)絡(luò)是一種空間上共享參數(shù)的神經(jīng)網(wǎng)絡(luò)纤房。
為什么會有CNN
像素間具有臨近性在验,圖片中相鄰像素在一起時有特殊意義的臀规,但是普通非卷積網(wǎng)絡(luò)中忽略了這一點(diǎn)缭贡,把輸入圖片的每個像素與下一層的神經(jīng)元相連,沒有利用好這些信息破衔,于是有了卷積神經(jīng)網(wǎng)絡(luò)清女。
CNN基本思想是什么
比如圖片識別。卷積神經(jīng)網(wǎng)絡(luò)模仿人識別圖片(狗)的一種方法:先是特定部位晰筛,比如鼻子嫡丙、嘴拴袭、眼睛……把這些拼起來得到一條狗。
卷積神經(jīng)網(wǎng)絡(luò)相似曙博,它自己通過正向和反向傳播學(xué)習(xí)識別基本的直線拥刻,曲線,然后是形狀父泳,點(diǎn)塊般哼,然后是圖片中更復(fù)雜的物體。最終 CNN 分類器把這些大的惠窄,復(fù)雜的物體綜合起來識別圖片蒸眠。
CNN是如何工作的
一句話講就是,訓(xùn)練時候不斷將圖細(xì)化睬捶,自己學(xué)習(xí)特征,得到分類器近刘。
第一個大正方體(256x265xRGB)代表一張有三個色彩通道的圖片擒贸,是輸入它height、wide觉渴、depth分別是256介劫,256和3。
取圖片一小塊1案淋,運(yùn)行一個有k2個輸出的小網(wǎng)絡(luò)座韵,在不改變權(quán)重3的情況下,把小網(wǎng)絡(luò)滑過4整張圖片踢京,得到一幅新圖誉碴,就是第二個正方體(128x128x16),k就是depth瓣距。這個過程就是卷積黔帕。通過卷積操作不斷擠壓空間維度,增加深度信息蹈丸,在最后放置一個分類器成黄,根據(jù)信息進(jìn)行分類。
- 取圖片一小塊 :取的這一塊就叫patch逻杖,有時也叫kernel奋岁。
- k是下一層的深度。
- 不改變權(quán)重也就是權(quán)重共享
- 滑過圖片的像素就是stride(步幅)荸百,滑過有兩種模式:same padding和valid padding闻伶,可以參考Tensorflow中padding的兩種類型SAME和VALID。
如何得到patch/kernel呢够话?
使用“濾波器(Filter)”虾攻,濾波器和patch的大小一樣铡买,“照”在patch上,在圖片上滑過的就是濾波器霎箍。
通常會有多個濾波器奇钞,不同濾波器提取一個 patch 的不同特性。例如漂坏,一個濾波器尋找特定顏色景埃,另一個尋找特定物體的特定形狀。卷積層濾波器的數(shù)量被稱為濾波器深度
——來自優(yōu)達(dá)學(xué)城
每個patch與下一層的多少個神經(jīng)元相連呢顶别?
這取決于濾波器的深度谷徙,如果深度是 k,我們把每個 patch 與下一層的 k 個神經(jīng)元相連驯绎。這樣下一層的高度就是 k完慧。
為什么讓1個patch連k個神經(jīng)元呢?
因?yàn)橐粋€patch可以有多個可供提取的特點(diǎn)剩失。
為什么要權(quán)重共享呢屈尼?
可以控制神經(jīng)網(wǎng)絡(luò)使用的內(nèi)存空間。
比如識別一張照片中的貓拴孤,貓的位置是不重要的脾歧,如果網(wǎng)絡(luò)要識別貓在左上角的情況或者右上角的情況,那工作量就很大了演熟。當(dāng)知道輸入可能包含相同類型的信息時鞭执,可以共享權(quán)重,并利用這些輸入共同訓(xùn)練權(quán)重芒粹。
可以做這樣的計算:
假設(shè)H = height, W = width, D = depth
輸入數(shù)據(jù):
- 維度為 32x32x3 (HxWxD)
- 20個濾波器兄纺,維度為 8x8x3 (HxWxD)
- stride(步長)高和寬的都為 2 (S)
- padding 大小為1 (P)
輸出層:
- 14x14x20 (HxWxD)
沒有參數(shù)共享,每個輸出層的神經(jīng)元必須連接到濾波器的每個神經(jīng)元化漆。此外囤热,每個輸出層的神經(jīng)元必須連接到一個偏置神經(jīng)元。
則卷積層有總共有(8 * 8 * 3 + 1) * (14 * 14 * 20) = 756560個參數(shù)获三。
有了參數(shù)共享旁蔼,每個輸出通道的神經(jīng)元與相同通道的其它神經(jīng)元共享權(quán)值。參數(shù)的數(shù)量與濾波器神經(jīng)元的數(shù)量相同疙教,加上偏置棺聊,再乘以輸出層的通道數(shù)。
則卷積層總計有 (8 * 8 * 3 + 1) * 20 = 3840 + 20 = 3860個參數(shù)贞谓。是之前的196分之一限佩。
CNN中如何計算卷積層的輸出維度
理解維度可以幫你在模型大小和模型質(zhì)量上,做精確的權(quán)衡。
假設(shè)H = height, W = width, D = depth
我們有
- 一個輸入維度是 32x32x3 (HxWxD)
- 20個維度為 8x8x3 (HxWxD) 的濾波器
- 高和寬的stride(步長)都為 2祟同。(S)
- padding 大小為1 (P)
計算新的高度和寬度的公式是:
new_height = (input_height - filter_height + 2 * P)/S + 1
new_width = (input_width - filter_width + 2 * P)/S + 1
則卷積層輸出的維度為14x14x20
CNN的常見優(yōu)化方法有什么
- 池化
- 1x1卷積
- Inception模塊
池化
我們通過調(diào)整步幅(stride)作喘,將過濾器(filter)每次移動幾個像素的方法來降低特征圖的尺寸,如果我們不采用每次移動多個像素的方法晕城,而是每次依然移動很小的步幅泞坦,比如一個像素,但是把每個相鄰的所有卷積通過某種操作結(jié)合在一起砖顷,這種操作就叫做池化贰锁。
通常把相鄰卷積結(jié)合在一起的方式有:
- 最大池化
比如通過卷積得到一個輸出層,然后我們有一個2x2的池化層滤蝠,則通過池化層后的輸出為2x2網(wǎng)格中最大的數(shù)豌熄。 - 平均池化
同樣是上例,通過池化層的輸出為2x2網(wǎng)格中所有數(shù)的平均數(shù)物咳。
池化層的優(yōu)點(diǎn)有:
- 減小輸出大小
- 降低過擬合
缺點(diǎn): - 進(jìn)行卷積的步幅小锣险,計算量大
- 有更多的超參數(shù)要調(diào)整——(1)池化尺寸(2)池化步幅
近期,池化層不是很受青睞览闰,因?yàn)椋?/p>
- 現(xiàn)在數(shù)據(jù)集越來越大芯肤,我們更擔(dān)心欠擬合的問題
- Dropout是一個更好的正則化方法
- 池化導(dǎo)致信息損失。比如n個數(shù)字的最大池化焕济,只保留了1個數(shù)字纷妆,其余n-1個全部丟失盔几。
——來自優(yōu)達(dá)學(xué)城
1x1卷積
為什么要用1x1卷積呢晴弃?
傳統(tǒng)的卷積,它基本是運(yùn)行在一小塊圖像上的線性分類器逊拍,但如果在中間加一個1x1卷積上鞠,就用運(yùn)行在一小塊圖像上的神經(jīng)網(wǎng)絡(luò),代替了線性分類器芯丧。
在卷積操作中散步一些1x1卷積是一種使模型變更深的低耗高效的辦法芍阎,并且含有更多參數(shù),但未完全改變神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)缨恒。
Inception模塊
神經(jīng)網(wǎng)絡(luò)的每一層谴咸,都可以選擇進(jìn)行池化、卷積運(yùn)算骗露,Inception模塊不限于單個卷積運(yùn)算岭佳,而是將多個模塊組合,如下圖:
它看起來很復(fù)雜萧锉,但是根據(jù)你選擇參數(shù)的方式珊随,模型的參數(shù)總數(shù)可能非常少,但性能比使用簡單卷積時要好。
常見的CNN網(wǎng)絡(luò)結(jié)構(gòu)有哪些叶洞?
- Lenet-5,1998年鲫凶,用于識別字母
CLASSIFIER
FULLY CONNECTED
FULLY CONNECTED
MAX POOLING
CONVOLUTION
MAX POOLING
CONVOLUTION
IMAGE - ALEXNET
CNN優(yōu)化的超參數(shù)有哪些?
除了前幾篇網(wǎng)絡(luò)的一系列可調(diào)參數(shù)外還有:
- stride:步幅
- k:濾波器深度
- 濾波器大小衩辟,數(shù)值
如果池化的話螟炫,則還有:
(1)池化尺寸(2)池化步幅
問題回答
至此,卷積神經(jīng)網(wǎng)絡(luò)的骨架搭建完畢惭婿。
-
卷積神經(jīng)網(wǎng)絡(luò)是什么不恭?
卷積神經(jīng)網(wǎng)絡(luò)是一種空間上共享參數(shù)的神經(jīng)網(wǎng)絡(luò)。 -
卷積神經(jīng)網(wǎng)絡(luò)和神經(jīng)網(wǎng)絡(luò)有什么區(qū)別财饥?
有卷積層换吧,權(quán)重共享 -
卷積神經(jīng)網(wǎng)絡(luò)模型有哪些參數(shù)可以調(diào)整(優(yōu)化)?
見上钥星。
以上內(nèi)容來自822實(shí)驗(yàn)室神經(jīng)網(wǎng)絡(luò)知識分享
我們的822沾瓦,我們的青春
歡迎所有熱愛知識熱愛生活的朋友和822思享實(shí)驗(yàn)室一起成長,吃喝玩樂谦炒,享受知識贯莺。