語音學習筆記12------直觀理解深度學習與卷積神經網路

塵封的記憶0發表於2017-03-14

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

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:比如識別人像各區域屬於人體哪個部位。


不懂的可以加我的QQ群:522869126(語音訊號處理) 歡迎你

到來哦,看了博文給點腳印唄,謝謝啦~~


相關文章