CNN入門講解:如何理解卷積神經網路的結構

原創文章,一家之言。

個人公眾號:follow_bobo

轉載請通知本人。

大家好,我是波波,歡迎再次來到CNN入門講解。

上次我們講什麼卷積以及卷積在卷積神經網路里的作用,那我們這一期來理一理卷積神經網路大致的結構

嗎?

我不!!

驚不驚喜?!

抱歉,我就是這樣一個水性楊花,做事看心情的美男子。

不服,請點贊。

哈哈哈哈哈哈哈哈哈哈asdo8uh2ojkladojadb183789@&^EU#(kjt

(一陣尷尬的沉默)

上一期我們講了,卷積實際上可以充當一個對原圖像進行二次轉化,提取feature 的作用,

相當於信號處理的濾波器,大家可以再去了解一下高斯濾波,拉普拉斯濾波等,這些都可以寫成卷積的形式

比如這樣:

網上找的,侵刪

神經網路想必大家都有了解,評價神經網路好壞的一個重要的依據就是:

以最少的代價,使神經網路獲得最好的準確率

關鍵詞:代價,準確率

那我們來看看下面這張圖:

我們先來看一個手寫體的『2』(大小是32*32)

正常情況下,我們人眼看這張圖的全局,立馬就能識別出這是個數字『2』

機器如何去看全局呢

實際上,就是把所有pixels 一股腦全放進一個神經網路

讓神經網路去處理這些pixels

這個神經網路,我們先叫他全連接層吧

就像下圖一樣:

感覺就是暴力解決嘛

拋開準確率不說

我們大概會得到3*32*32*1024*512 = 1610612736 個參數,這些參數量是非常大的了

而這僅僅是一個32*32 的圖像,運算量非常大了

同時,由於參數過多,極其容易產生訓練結果好,檢測結果差的現象(overfitting)

但我們仔細看這個圖,我們肉眼其實也是有選擇性的,我們並不太關心上圖中灰色的區域,以及數字』2『中的黑色區域

我們更關心』2『與灰色區域的相交的邊緣,因為這才是我們判斷的主要依據

那我們會不會也可以在計算機里也這麼做,主要提取邊緣特徵,對於灰色和黑色這種冗餘或者不重要的的區域特徵,我們盡量丟棄或者少保留,那麼這樣可能會減少參數或者減少提參數的過程

既然這樣,那我們乾脆在全連接層前面,對輸入圖像進行一個預處理吧

把那些沒用的

爛糟的

統統扔掉

於是我們加了個採集模塊

我們只保留那些我們想要的,或者相對比較重要的pixels

我們就叫它採樣層吧

所以,我們得到下面這個網路:

然後,我們再來看一個問題:

我們來把這個』2『分成塊,一塊一塊看:

你一塊塊看

是不是仍然會發現這是個數字』2『?

也是說,你大腦會自動把這些分散的圖片組合起來進行識別

同時如果我們這麼看:

是不是你就識別不出來這是『2』

也就是說,我們發現了兩個現象:

  • 如果我們只知道局部的圖片,以及局部的相對位置,只要我們能將它正確組合起來,我們也可以對物體進行識別
  • 同時局部與局部之間關聯性不大,也就是局部的變化,很少影響到另外一個局部

我們還要解決兩個問題:

  • 輸入的只是原始圖片,我們還沒有提取圖片的特徵
  • 我們目前要處理的參數仍然非常多,我們需要對原始輸入進行降維或者減少參數

我們現在回到上次講的卷積:

一個3x3 source pixels 經過一個3x3的卷積核後,source pixels 的特徵映射成一個1x1 destination pixel

然後我們再加上以上我們提到一些人眼識別圖像的性質

那麼

我們就會發現

來著早不如來得巧,卷積加上剛剛好

好了 ,我們得到了如下神經網路:

(大家請忽略圖上的數字,以後會講的)

實際上,我們還會遇到兩個問題:

  • 一張圖片特徵這麼多,一個卷積層提取的特徵數量有限的,提取不過來啊!
  • 我怎麼知道最後採樣層選出來的特徵是不是重要的呢?

煩人!

啊哈哈

我這裡又要提一個新概念----級聯分類器(cascade of classifiers

這個概念我以後會在機器學習入門上會細說,是個很常用的方法

我來大概介紹一下級聯分類器

大概意思就是我從一堆弱分類器裡面,挑出一個最符合要求的弱分類器,用著這個弱分類器把不想要的數據剔除,保留想要的數據

然後再從剩下的弱分類器里,再挑出一個最符合要求的弱分類器,對上一級保留的數據,把不想要的數據剔除,保留想要的數據。

最後,通過不斷串聯幾個弱分類器,進過數據層層篩選,最後得到我們想要的數據

(你們也可以去搜搜Adaboost)

那麼,針對剛才的問題,我們是否也可以級聯一個卷積層和採樣層?

是的,效果還不錯

於是,如下圖所示:

燈,等燈等燈

最簡單的一個卷積神經網路,就誕生了

我想要申明的是,這是一個最簡答的CNN結構,往後我會慢慢把結構加深

好了,我們來總結一下

CNN主要由3鐘模塊構成:

  • 卷積層
  • 採樣層
  • 全連接層

大致上可以理解為:

  • 通過第一個卷積層提取最初特徵,輸出特徵圖(feature map)
  • 通過第一個採樣層對最初的特徵圖(feature map )進行特徵選擇,去除多餘特徵,重構新的特徵圖
  • 第二個卷積層是對上一層的採樣層的輸出特徵圖(feature map)進行二次特徵提取
  • 第二個採樣層也對上層輸出進行二次特徵選擇
  • 全連接層就是根據得到的特徵進行分類

初學者是不是有點懵逼

其實整個框架很好理解,我舉個生動形象的例子:

輸入圖像好比甘蔗。

卷積層好比A君要吃甘蔗,吃完之後(卷積),他得出一系列結論,這個甘蔗真好吃,我還想再吃!

啊不是,說錯了

他得出結論,這個甘蔗是圓柱形,長條,甜的,白的,多汁的等等(提取特徵)

採樣層就好比第一個吃甘蔗的人告訴B君,吃甘蔗,重要的是吃個開心,為什麼開心,因為它又甜又多汁,還嘎嘣脆(特徵選取)

第二個卷積層就好比,B君並沒有去吃剩下的甘蔗,而是

頭也不回。

攔也攔不住的

去吃A君吐出的甘蔗渣

然後得出結論,嗯~~,

咦~~?

哦~~!

『原來這甘蔗渣是澀的,是苦的,不易嚼,不好咽』B君這麼說道(二次提取特徵)

第二個採樣層就好比,B君對別人說,這個甘蔗渣啊,吃的我不開心,因為它很澀,不好咽(二次特徵選取)

如果你們要吃,注意點!

注意點!

意點!

點!

全連接層的作用,就好比是一個決策者,他聽取了A,B君的描述

這樣,如果有人吃很多東西,其中就有甘蔗

他們吃的時候,有一樣東西吃起來,感覺和A,B君描述的非常接近,那麼決策者就認為

這個很大概率是甘蔗了

好了,我講了這麼多,是不是大概有點理解CNN了?

什麼

沒有

你那按我說方法去吃甘蔗試試?


推薦閱讀:

做自己喜歡的遊戲就像在陽光燦爛的下午打開一本書
第三代人形機器人來了,波士頓動力公司雙足機器人正式誕生。
侃侃深度學習和AI
AutoML | 谷歌 AI,用 AI 寫 AI

TAG:卷积神经网络CNN | 人工智能 | 机器学习 |