深度學習與卷積神經網絡

附上鍊接:

    凌風探梅卷積神經網絡(CNN)新手指南 http://blog.csdn.NET/real_myth/article/details/52273930;

  深度學習筆記整理系列:http://blog.csdn.Net/zouxy09/article/details/8775360  ;(xy

http://xiahouzuoxin.github.io/notes/html/深度卷積網絡CNN與圖像語義分割.html(佐鑫)

總結些心得,寫一下認識。

1.深度學習的發展

BP淺層神經網絡早在20世紀80年代末期就已掀起了基於統計模型的機器學習熱潮,只是BP只有一個隱層,人們對於bp沒有很完整的理論推導而且調參問題不少,這樣深度神經網就被擱置了。相比而言,20世紀90年代,各種各樣的淺層機器學習模型相繼被提出,例如支撐向量機(SVM,Support Vector Machines)、 Boosting、最大熵方法(如LR,Logistic Regression)等。這些模型的結構基本上可以看成帶有一層隱層節點(如SVM、Boosting),或沒有隱層節點(如LR)。這些模型無論是在理論分析還是應用中都獲得了巨大的成功。

直到2006年,加拿大多倫多大學教授、機器學習領域的泰斗Geoffrey Hinton和他的學生RuslanSalakhutdinov在《科學》上發表了一篇文章,開啓了深度學習在學術界和工業界的浪潮。這篇文章有兩個主要觀點:1)多隱層的人工神經網絡具有優異的特徵習能力,學習得到的特徵對數據有更本質的刻畫,從而有利於可視化或分類;2)深度神經網絡在訓練上的難度,可以通過“逐層初始化”(layer-wise pre-training)來有效克服,在這篇文章中,逐層初始化是通過無監督學習實現的。(摘抄自xy哥哥那裏,哈)

2012年神經網絡又開始嶄露頭角,那一年Alex Krizhevskyj在ImageNet競賽上(ImageNet可以算是競賽計算機視覺領域一年一度的“奧運會”競賽)將分類錯誤記錄從26%降低到15%,這在當時是一個相當驚人的進步。從那時起許多公司開始將深度學習應用在他們的核心服務上,如Facebook將神經網絡應用到他們的自動標註算法中,Google(谷歌)將其應用到圖片搜索裏,Amazon(亞馬遜)將其應用到產品推薦服務,Pinterest將其應用到主頁個性化信息流中,Instagram也將深度學習應用到它們的圖像搜索架構中。

深度學習作爲人工智能的一個方向,迅速風靡。

2011 Google Brain(內部共有10億個節點,人腦中可是有150多億個神經元)

2012 Google 實驗室,百度研究院

2014 Facebook的DeepFace

2015 亞馬遜發佈了自己的機器學習平臺;微軟創分佈式機器學習工具包

2016 谷歌人工智能算法 AlphaGo (1959年美國的塞繆爾(Samuel)就已經設計了一個下棋程序)

2.深度學習與特徵提取

(1)深度學習是用來幹啥的,可以理解爲自動提取特徵

我理解的特徵就是在各種算法中都需要做大量工作來得到訓練樣本的描述,並將此特徵通過函數和層級結構等記錄下來,將來進行測試比對。

(2)提取特徵也是有故事的,表示最喜歡聽故事了,(*^__^*) 嘻嘻……

據說是小貓頭顱開了個小孔,然後不斷在其眼前閃過不同類型、不同強弱的刺激。然後測試大腦視覺皮層細胞的響應,最後發現只有部分細胞響應。David Hubel 和Torsten Wiesel 發現了一種被稱爲“方向選擇性細胞(Orientation Selective Cell)”的神經元細胞。當瞳孔發現了眼前的物體的邊緣,而且這個邊緣指向某個方向時,這種神經元細胞就會活躍。

這個啓發了深度神經網絡,比如我們要識別出圖片中的小貓,並不需要像之前的全連接的結構,因爲大量圖片物體識別起來參數會相當多。我們在第一層卷積層得到的是各物體邊緣特徵,(接着pooling),第二個卷積層可能就得到邊緣的組合或者小貓的部位碎片,...到最後就會得到諸如爪子呀,眼睛之類的高層特徵啦。

    所謂:仿視覺皮層(多層),局部特徵組合與抽象。

高層的特徵是低層特徵的組合,從低層到高層的特徵表示越來越抽象,越來越能表現語義或者意圖。


3.CNN之所以能識別圖像的直觀理解

核心是卷積(濾波器的概念)。

輸入的是一個32×32×3的系列像素值,(不懂參見上一篇哈),濾波器相當於人的眼睛,來提取圖像的底層特徵,比如濾波器大小是5×5×3的,被這個小眼睛看到的地方稱作接受場或者局部感受野,所以我們的這個小眼睛需要不斷的移動,對應卷積下圖。


這樣進行相應卷積運算(點乘再相加)就得到了一個feature map。如你想的那樣我們往往需要多個濾波器,來從不同視角看物體,得到多個feature map。那爲什麼這樣就得到物體的底層特徵了呢?比如說邊緣特徵?


濾波器着實神奇,其實你可以想象過濾器是矩陣。都是數字,然後和輸入的局部像素值相乘相加得到最終的結果。如果過濾器中大的參數值剛好擺出某一個形狀,而物體中剛好也有這樣的形狀的話,是不是更加強效果啦?看下圖就立馬明白:

                                 卷積神經網絡(CNN)新手指南

這是一個可以檢測曲線的濾波器。突然想起之前學信號老見濾波器卻從來不明白其中的道理,這下加深理解了,謝謝凌風探梅博主!

卷積神經網絡(CNN)新手指南


基本上在輸入圖像中,如果有一個形狀是類似於這種濾波器的代表曲線,那麼所有的乘積累加在一起會導致較大的值!現在讓我們看看當我們移動我們的過濾器時會發生什麼。可以看到結果值是0哦,爲什麼?還不明白麼,因爲耳朵的邊緣和剛剛尾股部曲線太不同了。

卷積神經網絡(CNN)新手指南

這樣的多個濾波器就可以在大量數據的訓練下得到大量特徵了不是。訓練就是爲了得到合適的濾波器的值,權值偏置等。自動進行特徵學習就是這個道理。

4.CNN多層結構及實現技巧

卷積神經網絡(CNN)新手指南

(1)修正線性單元(ReLU)層

在每個卷積層後,習慣在其後馬上添加一個非線性層(或激活層)。這一層的目的是將非線性引入系統,基本上是在卷積層進行線性運算(只是元素的乘法和累加)。在過去都是像tanh 或者sigmoid的線性算法,但研究人員發現ReLU層效果更好,因爲網絡訓練速度能加快很多(因爲計算效率)且精度沒有顯著差異。它也有助於緩解消失的梯度問題,這是因爲網絡訓練較低層的速度非常緩慢,梯度通過不同的層級指數下降。ReLU層的採用的函數f(x)= max(0,x)所有值的輸入量。基本上,這一層將所有的負激活變成了0。這一層提高了模型的非線性特性,且整體網絡不影響卷積層的接受場。感興趣的還可以參看深度學習之父Geoffrey Hinton的論文Geoffrey Hinton

(2)卷積和子採樣pool過程:卷積過程包括:用一個可訓練的濾波器fx去卷積一個輸入的圖像(第一階段是輸入的圖像,後面的階段就是卷積特徵map了),然後加一個偏置bx,得到卷積層Cx。子採樣過程包括:每鄰域四個像素求和變爲一個像素,然後通過標量Wx+1加權,再增加偏置bx+1,然後通過一個sigmoid激活函數,產生一個大概縮小四倍的特徵映射圖Sx+1

pool的作用:首先是參數或權重的量減少了75%,從而降低了計算成本。其次,控制過度擬合。

(3)還有步長stride濾波器移動時候需要,零填充(zero padding)爲了卷積之後尺寸不變,降層(Dropout Layers)防止過擬合,網絡層網絡不太明白(濾波器是1*1*N的卷積層)...這些概念參見凌風探梅的文章。

(4)這個好有用:遷移學習(Transfer Learning):比如利用已經訓練好的動物識別的程序與參數(凍結),只改變最後吼類別直接相關的層,拿自己的數據微調,然後效果也不錯。區別更多在於高層特徵的道理~

5.分類,定位,檢測,分割  ,圖像級與像素級語義

圖像分類任務是將輸入圖像識別並輸入一系列的圖像類別的過程,然而當我們將對象定位作爲任務時,我們的工作不僅是得到一個分類標籤,另外還需要劃定一個對象在圖像中的範圍。

同樣還有對象檢測(分類與定位結合)任務,需要將圖像中所有對象進行圖像定位任務。因此,在圖像中將會有多個劃定範圍還有多個分類標籤。

最後,還有對象分割任務,對象分割任務指的是輸出一個類的標籤,以及輸入圖像中的每一個對象的輪廓


圖像級與像素級語義: 簡單理解了一下,像素級分兩類:語義級圖像分割和邊緣檢測。主要是語義相同的像素被分割在同一區域。

    super pixel:比如識別人像各區域屬於人體哪個部位。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章