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