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