https://zhuanlan.zhihu.com/p/33841176
假設(shè)我們經(jīng)過(guò)一個(gè)Relu之后的輸出如下
Relu:
然后開(kāi)始到達(dá)全連接層
啊啊啊,終于開(kāi)始進(jìn)入CNN的末尾了
已經(jīng)推到敵軍老家了,準(zhǔn)備開(kāi)始攻打水晶了
大家堅(jiān)持住,黎明前,最黑暗
以上圖為例,我們仔細(xì)看上圖全連接層的結(jié)構(gòu),全連接層中的每一層是由許多神經(jīng)元組成的(1x 4096)的平鋪結(jié)構(gòu),上圖不明顯,我們看下圖
注:上圖和我們要做的下面運(yùn)算無(wú)聯(lián)系
并且不考慮激活函數(shù)和bias
當(dāng)我第一次看到這個(gè)全連接層,我的第一個(gè)問(wèn)題是:
它是怎么樣把3x3x5的輸出,轉(zhuǎn)換成1x4096的形式
很簡(jiǎn)單,可以理解為在中間做了一個(gè)卷積
從上圖我們可以看出,我們用一個(gè)3x3x5的filter 去卷積激活函數(shù)的輸出,得到的結(jié)果就是一個(gè)fully connected layer 的一個(gè)神經(jīng)元的輸出,這個(gè)輸出就是一個(gè)值
因?yàn)槲覀冇?096個(gè)神經(jīng)元
我們實(shí)際就是用一個(gè)3x3x5x4096的卷積層去卷積激活函數(shù)的輸出
以VGG-16再舉個(gè)例子吧
再VGG-16全連接層中
對(duì)224x224x3的輸入,最后一層卷積可得輸出為7x7x512,如后層是一層含4096個(gè)神經(jīng)元的FC,則可用卷積核為7x7x512x4096的全局卷積來(lái)實(shí)現(xiàn)這一全連接運(yùn)算過(guò)程。
很多人看到這,可能就恍然大悟
哦,我懂了,就是做個(gè)卷積唄
不
你不懂
敲黑板了
麻煩后排吃東西的同學(xué)叫下前排玩游戲的同學(xué)去把第一排的同學(xué)吵醒
我要說(shuō)重點(diǎn)了!!!!!!!!!!!
這一步卷積一個(gè)非常重要的作用
就是把分布式特征representation映射到樣本標(biāo)記空間
什么,聽(tīng)不懂
那我說(shuō)人話
就是它把特征representation整合到一起,輸出為一個(gè)值
這樣做,有一個(gè)什么好處?
就是大大減少特征位置對(duì)分類(lèi)帶來(lái)的影響
來(lái),讓我來(lái)舉個(gè)簡(jiǎn)單的例子
這個(gè)例子可能過(guò)于簡(jiǎn)單了點(diǎn)
可是我懶得畫(huà)了,大家將就著看吧
從上圖我們可以看出,貓?jiān)诓煌奈恢?#xff0c;輸出的feature值相同,但是位置不同
對(duì)于電腦來(lái)說(shuō),特征值相同,但是特征值位置不同,那分類(lèi)結(jié)果也可能不一樣
而這時(shí)全連接層filter的作用就相當(dāng)于
喵在哪我不管
我只要喵
于是我讓filter去把這個(gè)喵找到
實(shí)際就是把feature map 整合成一個(gè)值
這個(gè)值大
哦,有喵
這個(gè)值小
那就可能沒(méi)喵
和這個(gè)喵在哪關(guān)系不大了有沒(méi)有
魯棒性有大大增強(qiáng)了有沒(méi)有
喵喵喵
因?yàn)榭臻g結(jié)構(gòu)特性被忽略了,所以全連接層不適合用于在方位上找Pattern的任務(wù),比如segmentation
ok, 我們突然發(fā)現(xiàn)全連接層有兩層1x4096fully connected layer平鋪結(jié)構(gòu)(有些網(wǎng)絡(luò)結(jié)構(gòu)有一層的,或者二層以上的)
好吧也不是突然發(fā)現(xiàn),我只是想增加一點(diǎn)戲劇效果
但是大部分是兩層以上呢
這是為啥子呢
泰勒公式都知道吧
意思就是用多項(xiàng)式函數(shù)去擬合光滑函數(shù)
我們這里的全連接層中一層的一個(gè)神經(jīng)元就可以看成一個(gè)多項(xiàng)式
我們用許多神經(jīng)元去擬合數(shù)據(jù)分布
但是只用一層fully connected layer 有時(shí)候沒(méi)法解決非線性問(wèn)題
而如果有兩層或以上fully connected layer就可以很好地解決非線性問(wèn)題了
說(shuō)了這么多,我猜你應(yīng)該懂的
聽(tīng)不懂?
那我換個(gè)方式給你講
我們都知道,全連接層之前的作用是提取特征
全理解層的作用是分類(lèi)
我們現(xiàn)在的任務(wù)是去區(qū)別一圖片是不是貓
哈哈哈,貓貓好可愛(ài)
我先擼一把先
擼完了,回來(lái)啦(嗯,怎么好像哪里不對(duì))
假設(shè)這個(gè)神經(jīng)網(wǎng)絡(luò)模型已經(jīng)訓(xùn)練完了
全連接層已經(jīng)知道
當(dāng)我們得到以上特征,我就可以判斷這個(gè)東東是貓了
因?yàn)槿B接層的作用主要就是實(shí)現(xiàn)分類(lèi)(Classification)
從下圖,我們可以看出
紅色的神經(jīng)元表示這個(gè)特征被找到了(激活了)
同一層的其他神經(jīng)元,要么貓的特征不明顯,要么沒(méi)找到
當(dāng)我們把這些找到的特征組合在一起,發(fā)現(xiàn)最符合要求的是貓
ok,我認(rèn)為這是貓了
那我們現(xiàn)在往前走一層
那們現(xiàn)在要對(duì)子特征分類(lèi),也就是對(duì)貓頭,貓尾巴,貓腿等進(jìn)行分類(lèi)
比如我們現(xiàn)在要把貓頭找出來(lái)
貓頭有這么些個(gè)特征
于是我們下一步的任務(wù)
就是把貓頭的這么些子特征找到,比如眼睛啊,耳朵啊
道理和區(qū)別貓一樣
當(dāng)我們找到這些特征,神經(jīng)元就被激活了(上圖紅色圓圈)
這細(xì)節(jié)特征又是怎么來(lái)的?
就是從前面的卷積層,下采樣層來(lái)的
至此,關(guān)于全連接層的信息就簡(jiǎn)單介紹完了
全連接層參數(shù)特多(可占整個(gè)網(wǎng)絡(luò)參數(shù)80%左右),近期一些性能優(yōu)異的網(wǎng)絡(luò)模型如ResNet和GoogLeNet等均用全局平均池化(global average pooling,GAP)取代全連接層來(lái)融合學(xué)到的深度特征
需要指出的是,用GAP替代FC的網(wǎng)絡(luò)通常有較好的預(yù)測(cè)性能
于是還出現(xiàn)了
[1411.4038] Fully Convolutional Networks for Semantic Segmentation以后會(huì)慢慢介紹的
----------------------------------------------------------------------------------------------
說(shuō)實(shí)話,說(shuō)的有點(diǎn)簡(jiǎn)單
但是我不能擺公式啊
不能擺計(jì)算啊
所以
大家就將就著看吧
有問(wèn)題在下面留言
-------------------------------------------------------------------
新年快樂(lè)啦
有人說(shuō)以前的文風(fēng)太浮夸
現(xiàn)在我嚴(yán)謹(jǐn)一些
不知道大家喜歡不
喜歡的
點(diǎn)個(gè)贊
問(wèn)題匯總簡(jiǎn)答(持續(xù)更新):
(1)全連接層對(duì)模型的影響?
首先我們明白全連接層的組成如下:
二層全連接層結(jié)構(gòu)那么全連接層對(duì)模型影響參數(shù)就是三個(gè):
首先我們要明白激活函數(shù)的作用是:
增加模型的非線性表達(dá)能力更詳細(xì)了解請(qǐng)去:
蔣竺波:CNN入門(mén)講解:什么是激活函數(shù)(Activation Function)如果全連接層寬度不變,增加長(zhǎng)度:
優(yōu)點(diǎn):神經(jīng)元個(gè)數(shù)增加,模型復(fù)雜度提升;全連接層數(shù)加深,模型非線性表達(dá)能力提高。理論上都可以提高模型的學(xué)習(xí)能力。
如果全連接層長(zhǎng)度不變,增加寬度:
優(yōu)點(diǎn):神經(jīng)元個(gè)數(shù)增加,模型復(fù)雜度提升。理論上可以提高模型的學(xué)習(xí)能力。
難度長(zhǎng)度和寬度都是越多越好?
肯定不是
(1)缺點(diǎn):學(xué)習(xí)能力太好容易造成過(guò)擬合。
(2)缺點(diǎn):運(yùn)算時(shí)間增加,效率變低。
那么怎么判斷模型學(xué)習(xí)能力如何?
看Training Curve 以及 Validation Curve,在其他條件理想的情況下,如果Training Accuracy 高, Validation Accuracy 低,也就是過(guò)擬合 了,可以嘗試去減少層數(shù)或者參數(shù)。如果Training Accuracy 低,說(shuō)明模型學(xué)的不好,可以嘗試增加參數(shù)或者層數(shù)。至于是增加長(zhǎng)度和寬度,這個(gè)又要根據(jù)實(shí)際情況來(lái)考慮了。
PS:很多時(shí)候我們?cè)O(shè)計(jì)一個(gè)網(wǎng)絡(luò)模型,不光考慮準(zhǔn)確率,也常常得在Accuracy/Efficiency 里尋找一個(gè)好的平衡點(diǎn)。
麻煩大家給我點(diǎn)個(gè)贊,就是那種讓我看起來(lái),寫(xiě)的還不錯(cuò)的樣子!
拜托了!!o(′^`)o
總結(jié)
以上是生活随笔為你收集整理的https://zhuanlan.zhihu.com/p/33841176的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 17%的恶意邮件攻击和金融交易有关
- 下一篇: 艾尼克斯任命 Michael Cappe