神經網路基本知識

2021-05-26 02:59:03 字數 4933 閱讀 3801

2) 深度網路最主要的優勢在於,它能以更加緊湊簡潔的方式來表達比淺層網路大得多的函式集合。即可以找到一些函式,這些函式可以用層網路簡潔地表達出來(這裡的簡潔是指隱層單元的數目只需與輸入單元數目呈多項式關係)。但是對於乙個只有層的網路而言,除非它使用與輸入單元數目呈指數關係的隱層單元數目,否則不能簡潔表達這些函式。

3) 當處理物件是影象時,使用深度網路,能夠學習到「部分-整體」的分解關係。例如,第一層可以學習如何將影象中的畫素組合在一起來檢測邊緣,第二層可以將邊緣組合起來檢測更長的輪廓或者簡單的「目標的部件」,在更深的層次上,可以將這些輪廓進一步組合起來以檢測更為複雜的特徵。

這種分層計算很好地模仿了大腦皮層對輸入資訊的處理方式。視覺影象在人腦中是分多個階段進行處理的,首先是進入大腦皮層的「v1」區,然後緊跟著進入大腦皮層「v2」區,以此類推。

2. 訓練深度網路的困難

目前主要使用的學習演算法是:首先隨機初始化深度網路的權重,然後使用有監督的目標函式在有標籤的訓練集上進行訓練。其中通過使用梯度下降法來降低訓練誤差,這種方法通常不是十分湊效。

1) 資料獲取問題

使用上面提到的方法,需要依賴於有標籤的資料才能進行訓練。然而有標籤的資料通常是稀缺的,因此對於許多問題,我們很難獲得足夠多的樣本來擬合乙個複雜模型的引數。例如,考慮到深度網路具有強大的表達能力,在不充足的資料上進行訓練將會導致過擬合。

2) 區域性極值問題

使用監督學習方法來對淺層網路(只有乙個隱藏層)進行訓練通常能夠使引數收斂到合理的範圍內。但是當用這種方法來訓練深度網路的時候,並不能取得很好的效果。特別的,使用監督學習方法訓練神經網路時,通常會涉及到求解乙個高度非凸的優化問題。

對深度網路而言,這種非凸優化問題的搜尋區域中充斥著大量「壞」的區域性極值,因而使用梯度下降法(或者像共軛梯度下降法,l-bfgs等方法)效果並不好。

3) 梯度瀰散問題

梯度下降法(以及相關的l-bfgs演算法等)在使用隨機初始化權重的深度網路上效果不好的技術原因是:梯度會變得非常小。具體而言,當使用反向傳播方法計算導數的時候,隨著網路的深度的增加,反向傳播的梯度(從輸出層到網路的最初幾層)的幅度值會急劇地減小。

結果就造成了整體的損失函式相對於最初幾層的權重的導數非常小。這樣,當使用梯度下降法的時候,最初幾層的權重變化非常緩慢,以至於它們不能夠從樣本中進行有效的學習。這種問題通常被稱為「梯度的瀰散」.

與梯度瀰散問題緊密相關的問題是:當神經網路中的最後幾層含有足夠數量神經元的時候,可能單獨這幾層就足以對有標籤資料進行建模,而不用最初幾層的幫助。因此,對所有層都使用隨機初始化的方法訓練得到的整個網路的效能將會與訓練得到的淺層網路(僅由深度網路的最後幾層組成的淺層網路)的效能相似。

3.逐層貪婪訓練方法

逐層貪婪訓練方法是訓練深度網路取得一定成功的一種方法。簡單來說,逐層貪婪演算法的主要思路是:

每次只訓練網路中的一層,即首先訓練乙個只含乙個隱藏層的網路,僅當這層網路訓練結束之後才開始訓練乙個有兩個隱藏層的網路,以此類推。

在每一步中,把已經訓練好的前層固定,然後增加第層(也就是將已經訓練好的前的輸出作為輸入)。

每一層的訓練可以是有監督的(例如,將每一步的分類誤差作為目標函式),但更通常使用無監督方法(例如自動編碼器)。

這些各層單獨訓練所得到的權重被用來初始化最終(或者說全部)的深度網路的權重,然後對整個網路進行「微調」(即把所有層放在一起來優化有標籤訓練集上的訓練誤差)。

逐層貪婪的訓練方法取得成功要歸功於以下兩方面:

資料獲取

雖然獲取有標籤資料的代價是昂貴的,但獲取大量的無標籤資料是容易的。自學習方法的潛力在於它能通過使用大量的無標籤資料來學習到更好的模型。具體而言,該方法使用無標籤資料來學習得到所有層(不包括用於**標籤的最終分類層)的最佳初始權重。

相比純監督學習方法,這種自學習方法能夠利用多得多的資料,並且能夠學習和發現資料中存在的模式。因此該方法通常能夠提高分類器的效能。

更好的區域性極值

當用無標籤資料訓練完網路後,相比於隨機初始化而言,各層初始權重會位於引數空間中較好的位置上。然後我們可以從這些位置出發進一步微調權重。從經驗上來說,以這些位置為起點開始梯度下降更有可能收斂到比較好的區域性極值點,這是因為無標籤資料已經提供了大量輸入資料中包含的模式的先驗資訊。

(三)卷積特徵提取和池化

1)全聯通網路

把輸入層和隱含層進行「全連線」的設計,從整幅影象中計算特徵,從計算的角度來講,對相對較小的影象是可行的。但是,如果是更大的影象,要通過全聯通網路的這種方法來學習整幅影象上的特徵,將是非常耗時。

2)部分聯通網路

解決以上問題的一種簡單方法是對隱含單元和輸入單元間的連線加以限制:每個隱含單元僅僅只能連線輸入單元的一部分。例如,每個隱含單元僅僅連線輸入影象的一小片相鄰區域。

網路部分連通的思想,也是受啟發於生物學裡面的視覺系統結構。視覺皮層的神經元就是區域性接受資訊的(即這些神經元只響應某些特定區域的刺激)。

3)卷積

自然影象有其固有特性,也就是說,影象的一部分的統計特性與其他部分是一樣的。這也意味著我們在這一部分學習的特徵也能用在另一部分上,所以對於這個影象上的所有位置,都能使用同樣的學習特徵。

當從乙個大尺寸影象中隨機選取一小塊,比如說 8x8 作為樣本,並且從這個小塊樣本中學習到了一些特徵,這時可以把從這個 8x8 樣本中學習到的特徵作為探測器,應用到這個影象的任意地方中去。特別是,可以用從 8x8 樣本中所學習到的特徵跟原本的大尺寸影象作卷積,從而對這個大尺寸影象上的任一位置獲得乙個不同特徵的啟用值。

例項:假設已經從乙個 96x96 的影象中學習到了它的乙個 8x8 的樣本所具有的特徵,假設這是由有 100 個隱含單元的自編碼完成的。為了得到卷積特徵,需要對 96x96 的影象的每個 8x8 的小塊影象區域都進行卷積運算。

也就是說,抽取 8x8 的小塊區域,並且從起始座標開始依次標記為(1,1),(1,2),...,一直到(89,89),然後對抽取的區域逐個執行訓練過的稀疏自編碼來得到特徵的啟用值。在這個例子裡,顯然可以得到 100 個集合,每個集合含有 89x89 個卷積特徵。

假設給定了的大尺寸影象,將其定義為xlarge。首先通過從大尺寸影象中抽取的的小尺寸影象樣本x**all訓練稀疏自編碼,計算f= σ(w(1)x**all+b(1))(σ是乙個 sigmoid 型函式)得到了k個特徵, 其中w(1)和b(1)是可視層單元和隱含單元之間的權重和偏差值。對於每乙個大小的小影象xs,計算出對應的值fs= σ(w(1)xs+b(1)),對這些fconvolved值做卷積,就可以得到個卷積後的特徵的矩陣。

4)池化

在通過卷積獲得了特徵之後,下一步是要利用這些特徵去做分類。理論上講,可以用所有提取得到的特徵去訓練分類器,例如 softmax 分類器,但這樣做面臨計算量的挑戰。例如:

對於乙個 96x96 畫素的影象,假設已經學習得到了400個定義在8x8輸入上的特徵,每乙個特徵和影象卷積都會得到乙個(96 8 + 1) * (96 8 + 1) = 7921維的卷積特徵,由於有 400 個特徵,所以每個樣例都會得到乙個7921* 400 = 3,168,400維的卷積特徵向量。學習乙個擁有超過 3 百萬特徵輸入的分類器十分不便,並且容易出現過擬合。

為了解決這個問題,即為了描述大的影象,乙個很自然的想法就是對不同位置的特徵進行聚合統計,例如,人們可以計算影象乙個區域上的某個特定特徵的平均值 (或最大值)。這些概要統計特徵不僅具有低得多的維度 (相比使用所有提取得到的特徵),同時還會改善結果(不容易過擬合)。這種聚合的操作就叫做池化 (pooling),有時也稱為平均池化或者最大池化 (取決於計算池化的方法)。

池化的不變性

如果選擇影象中的連續範圍作為池化區域,並且只是池化相同(重複)的隱藏單元產生的特徵,那麼,這些池化單元就具有平移不變性 。這就意味著即使影象經歷了乙個小的平移之後,依然會產生相同的 (池化的) 特徵。

形式化描述

形式上,在獲取到卷積特徵後,就要確定池化區域的大小(假定為),來池化卷積特徵。那麼,把卷積特徵劃分到數個大小為的不相交區域上,然後用這些區域的平均(或最大)特徵來獲取池化後的卷積特徵。這些池化後的特徵便可以用來做分類。

(四)白化

為了使每個輸入特徵具有單位方差,可以直接使用作為縮放因子來縮放每個特徵。具體地,定義白化後的資料如下:

是資料經過pca白化後的版本:中不同的特徵之間不相關並且具有單位方差。

白化與降維相結合: 如果想要得到經過白化後的資料,並且比初始輸入維數更低,可以僅保留中前個成分。當我們把pca白化和正則化結合起來時,中最後的少量成分將總是接近於0,因而捨棄這些成分不會帶來很大的問題。

1) zca白化

資料的協方差矩陣變為單位矩陣的方式並不唯一。具體地,如果是任意正交矩陣,即滿足(說它正交不太嚴格,可以是旋轉或反射矩陣), 那麼仍然具有單位協方差。在zca白化中,令。

我們定義zca白化的結果為:

可以證明,對所有可能的,這種旋轉使得盡可能地接近原始輸入資料。

當使用 zca白化時(不同於 pca白化),我們通常保留資料的全部個維度,不嘗試去降低它的維數。

2) 正則化

實踐中需要實現pca白化或zca白化時,有時一些特徵值在數值上接近於0,這樣在縮放步驟時我們除以將導致除以乙個接近0的值;這可能使資料上溢 (賦為大數值)或造成數值不穩定。因而在實踐中,使用少量的正則化實現這個縮放過程,即在取平方根和倒數之前給特徵值加上乙個很小的常數:

當在區間上時, 一般取值為。

對影象來說, 這裡加上,對輸入影象也有一些平滑(或低通濾波)的作用。這樣處理還能消除在影象的畫素資訊獲取過程中產生的雜訊,改善學習到的特徵。

zca 白化是一種資料預處理方法,它將資料從對映到。 事實證明這也是一種生物眼睛(視網膜)處理影象的粗糙模型。具體而言,當你的眼睛感知影象時,由於一幅影象中相鄰的部分在亮度上十分相關,大多數臨近的「畫素」在眼中被感知為相近的值。

因此,如果人眼需要分別傳輸每個畫素值(通過視覺神經)到大腦中,會非常不划算。取而代之的是,視網膜進行乙個與zca中相似的去相關操作 (這是由視網膜上的on-型和off-型光感受器細胞將光訊號轉變為神經訊號完成的)。由此得到對輸入影象的更低冗餘的表示,並將它傳輸到大腦。

提示:可以在pca白化過程中同時降低資料的維度。這是乙個很好的主意,因為這樣可以大大提公升演算法的速度(減少了運算量和引數數目)。

確定要保留的主成分數目有乙個經驗法則:即所保留的成分的總方差達到總樣本方差的 99% 以上。

神經網路基礎知識

一 實驗目的 1 了解神經網路的基本知識。2 學會用matlab神經網路工具箱進行資料擬合。3 通過例項學習matlab神經網路工具箱的應用。二 實驗原理 人工神經網路是在對複雜的生物神經網路研究和理解的基礎上發展起來的。我們知道,人腦是由大約個高度互連的單元構成,這些單元稱為神經元,每個神經元約有...

bp神經網路

實驗四計算智慧型 1 1 實驗目的 理解反向傳播網路的結構和原理,掌握反向傳播演算法對神經元的訓練過程,了解反向傳播公式。通過構建bp網路例項,熟悉前饋網路的原理及結構。2 實驗內容 編寫乙個bp神經網路程式,實現簡單的分類。3 實驗報告要求 1 簡述實驗原理及方法,並請給出程式設計流程圖。bp演算...

BP神經網路

目標函式 y sin 2x sin x x 5,5 其影象為 程式 clc clear all x 5 0.01 5 y sin pi x sin 2 x net newff minmax x 10,1 traingd net train net,x,y y1 sim net,x plot x,y ...