常見的深度學習模型--卷積神經網路概述
深度學習的概念源於人工神經網路的研究。含多隱層的多層感知機就是一種深度學習結構。深度學習通過組合低層特徵形成更加抽象的高層表示屬性類別或特徵,以發現數據的分散式特徵表示。
深度學習的概念由Hinton等人於2006年提出。基於深度置信網路(DBN)提出非監督貪心逐層訓練演算法,為解決深層結構相關的優化難題帶來希望,隨後提出多層自動編碼器深層結構。此外Lecun等人提出的卷積神經網路是第一個真正多層結構學習演算法,它利用空間相對關係減少參數數目以提高訓練性能。
深度學習是機器學習研究中的一個新的領域,其動機在於建立、模擬人腦進行分析學習的神經網路,它模仿人腦的機制來解釋數據,例如圖像,聲音和文本。
接下來介紹最常見的深度學習模型CNN,它圖像和自然語言處理領域應用廣泛。
卷積神經網路(Convolutional Neural Network)
CNN可能是深度學習中應用最廣泛的網路結構了,尤其是圖像領域。
受Hubel和Wiesel對貓視覺皮層電生理研究啟發,有人提出卷積神經網路(CNN),Yann Lecun 最早將CNN用於手寫數字識別並一直保持了其在該問題的霸主地位。近年來卷積神經網路在多個方向持續發力,在語音識別、人臉識別、通用物體識別、運動分析、自然語言處理甚至腦電波分析方面均有突破。
卷積神經網路與普通神經網路的區別在於,卷積神經網路包含了一個由卷積層和子採樣層構成的特徵抽取器。在卷積神經網路的卷積層中,一個神經元只與部分鄰層神經元連接。在CNN的一個卷積層中,通常包含若干個特徵平面(featureMap),每個特徵平面由一些矩形排列的的神經元組成,同一特徵平面的神經元共享權值,這裡共享的權值就是卷積核。卷積核一般以隨機小數矩陣的形式初始化,在網路的訓練過程中卷積核將學習得到合理的權值。共享權值(卷積核)帶來的直接好處是減少網路各層之間的連接,同時又降低了過擬合的風險。子採樣也叫做池化(pooling),通常有均值子採樣(mean pooling)和最大值子採樣(max pooling)兩種形式。子採樣可以看作一種特殊的卷積過程。卷積和子採樣大大簡化了模型複雜度,減少了模型的參數。卷積神經網路的基本結構如圖所示:
卷積神經網路由三部分構成。第一部分是輸入層。第二部分由n個卷積層和池化層的組合組成。第三部分由一個全連結的多層感知機分類器構成。
局部感受野
卷積神經網路有兩種神器可以降低參數數目,第一種神器叫做局部感知野。一般認為人對外界的認知是從局部到全局的,而圖像的空間聯繫也是局部的像素聯繫較為緊密,而距離較遠的像素相關性則較弱。因而,每個神經元其實沒有必要對全局圖像進行感知,只需要對局部進行感知,然後在更高層將局部的信息綜合起來就得到了全局的信息。網路部分連通的思想,也是受啟發於生物學裡面的視覺系統結構。視覺皮層的神經元就是局部接受信息的(即這些神經元只響應某些特定區域的刺激)。如下圖所示:左圖為全連接,右圖為局部連接。
在上右圖中,假如每個神經元只和10×10個像素值相連,那麼權值數據為1000000×100個參數,減少為原來的萬分之一。而那10×10個像素值對應的10×10個參數,其實就相當於卷積操作。
權值共享
但其實這樣的話參數仍然過多,那麼就啟動第二級神器,即權值共享。在上面的局部連接中,每個神經元都對應100個參數,一共1000000個神經元,如果這1000000個神經元的100個參數都是相等的,那麼參數數目就變為100了。
怎麼理解權值共享呢?我們可以這100個參數(也就是卷積操作)看成是提取特徵的方式,該方式與位置無關。這其中隱含的原理則是:圖像的一部分的統計特性與其他部分是一樣的。這也意味著我們在這一部分學習的特徵也能用在另一部分上,所以對於這個圖像上的所有位置,我們都能使用同樣的學習特徵。
更直觀一些,當從一個大尺寸圖像中隨機選取一小塊,比如說 8x8 作為樣本,並且從這個小塊樣本中學習到了一些特徵,這時我們可以把從這個 8x8 樣本中學習到的特徵作為探測器,應用到這個圖像的任意地方中去。特別是,我們可以用從 8x8 樣本中所學習到的特徵跟原本的大尺寸圖像作卷積,從而對這個大尺寸圖像上的任一位置獲得一個不同特徵的激活值。
如下圖所示,展示了一個3×3的卷積核在5×5的圖像上做卷積的過程。每個卷積都是一種特徵提取方式,就像一個篩子,將圖像中符合條件(激活值越大越符合條件)的部分篩選出來。
多卷積核
上面所述只有100個參數時,表明只有1個10*10的卷積核,顯然,特徵提取是不充分的,我們可以添加多個卷積核,比如32個卷積核,可以學習32種特徵。在有多個卷積核時,如下圖所示:
上圖右,不同顏色表明不同的卷積核。每個卷積核都會將圖像生成為另一幅圖像。比如兩個卷積核就可以將生成兩幅圖像,這兩幅圖像可以看做是一張圖像的不同的通道。
所以,在上圖由4個通道卷積得到2個通道的過程中,參數的數目為4×2×2×2個,其中4表示4個通道,第一個2表示生成2個通道,最後的2×2表示卷積核大小。
Down-pooling
在通過卷積獲得了特徵 (features) 之後,下一步我們希望利用這些特徵去做分類。理論上講,人們可以用所有提取得到的特徵去訓練分類器,例如 softmax 分類器,但這樣做面臨計算量的挑戰。例如:對於一個 96X96 像素的圖像,假設我們已經學習得到了400個定義在8X8輸入上的特徵,每一個特徵和圖像卷積都會得到一個 (96 ? 8 + 1) × (96 ? 8 + 1) = 7921 維的卷積特徵,由於有 400 個特徵,所以每個樣例 (example) 都會得到一個 7921 × 400 = 3,168,400 維的卷積特徵向量。學習一個擁有超過 3 百萬特徵輸入的分類器十分不便,並且容易出現過擬合 (over-fitting)。
為了解決這個問題,需要對特徵進行降維,這種操作就叫做池化 (pooling),有時也稱為平均池化或者最大池化 (取決於計算池化的方法)。
子採樣有兩種形式,一種是均值子採樣(mean-pooling),一種是最大值子採樣(max-pooling)。兩種子採樣看成特殊的卷積過程,如圖下圖所示:
(1)均值子採樣的卷積核中每個權重都是0.25,卷積核在原圖inputX上的滑動的步長為2。均值子採樣的效果相當於把原圖模糊縮減至原來的1/4。
(2)最大值子採樣的卷積核中各權重值中只有一個為1,其餘均為0,卷積核中為1的位置對應inputX被卷積核覆蓋部分值最大的位置。卷積核在原圖inputX上的滑動步長為2。最大值子採樣的效果是把原圖縮減至原來的1/4,並保留每個2*2區域的最強輸入。
至此,卷積神經網路的基本結構和原理已經闡述完畢,下面介紹一個簡單應用。
圖像分類應用
CNN離我們並不遙遠,在圖像分類的任務中,它是最常用的方法。
如下圖是一個手寫字體識別的例子,輸入一張手寫圖片,使用神經網路訓練得到的模型進行識別,得到數字結果。
最後,如果對人工智慧感興趣,可以微信關注我們的公眾號:願景學城,並添加客服微信號yjzhushou進入交流群,有更多知識、資訊和有趣的應用。
推薦閱讀:
TAG:人工智慧演算法 | 深度學習DeepLearning |