目錄
引入
一、神經(jīng)網(wǎng)絡(luò)及其主要算法
1、前饋神經(jīng)網(wǎng)絡(luò)
2、感知器
3、三層前饋網(wǎng)絡(luò)(多層感知器MLP)
4、反向傳播算法
二、深度學習
1、自編碼算法AutorEncoder
2、自組織編碼深度網(wǎng)絡(luò)
①棧式AutorEncoder自動編碼器
②Sparse Coding稀疏編碼
3、卷積神經(jīng)網(wǎng)絡(luò)模型(續(xù)下次)
拓展:
引入
人工神經(jīng)網(wǎng)絡(luò)ANN是由大量處理單位(人工神經(jīng)元)經(jīng)廣泛互連而組成的人工網(wǎng)絡(luò),以模擬腦神經(jīng)系統(tǒng)的結(jié)構(gòu)與功能。ANN可看作以人工神經(jīng)元為節(jié)點,用有向加權(quán)弧連接起來的有向圖,有向弧的權(quán)重表示相互連接的兩個神經(jīng)元間相互作用的強弱。深度學習算法是人工神經(jīng)網(wǎng)絡(luò)算法的改進,提高了神經(jīng)網(wǎng)絡(luò)算法的性能和應(yīng)用。
一、神經(jīng)網(wǎng)絡(luò)及其主要算法
1、前饋神經(jīng)網(wǎng)絡(luò)
構(gòu)成前饋神經(jīng)網(wǎng)絡(luò)的各神經(jīng)元接收前一級輸入,并輸入到下一級,無反饋,可用一有向無環(huán)圖表示。圖的節(jié)點分為兩類——輸入節(jié)點和計算單元。每個計算單元可有任意個輸入但只有一個輸出,而輸出可耦合到任意多個其他節(jié)點輸入(輸出的是同一個值給很多人)。前饋網(wǎng)絡(luò)通常分為不同層,通常認為輸入為第一層,所以單層計算單元的網(wǎng)絡(luò)實際上是一個兩層網(wǎng)絡(luò),輸入和輸出節(jié)點可與外界相連,直接受環(huán)境影響,稱為可見層,其他中間層稱為隱層。
2、感知器
感知器模型是為研究大腦的存儲、學習和認知過程而提出的一類具有自學習能力的神經(jīng)網(wǎng)絡(luò)模型,把神經(jīng)網(wǎng)絡(luò)的研究從純理論探討引向了工程實現(xiàn)。它是一種雙層神經(jīng)網(wǎng)絡(luò)模型,一層為輸入層,另一層具有計算單元,可以通過監(jiān)督學習建立模式判別的能力。
學習的目標是通過改變權(quán)值使神經(jīng)網(wǎng)絡(luò)由給定的輸入得到給定的輸出。作為分類器,可以用已知類別的模式向量或特征向量作為訓(xùn)練集,當輸入為屬于第j類的特征向量X時,應(yīng)使對應(yīng)于該類輸出y1=1,而其他神經(jīng)元的輸出則為0(或-1)。
設(shè)理想的輸出為:
實際輸出為:
為了使輸出逼近理想輸出,可以反復(fù)依次輸入訓(xùn)練集中的向量X,并計算出實際的輸出Y^,對權(quán)值w做出如下修改:
?其中:
感知器的學習過程與求取線性判別函數(shù)的過程是等價的,此處只指出感知器的一些特性:①兩層感知器只能用于解決線性可分問題;②學習過程收斂很快,且與初始值無關(guān)。
單層感知器不能表達的問題稱為線性不可分問題,如“異或”問題(XOR)。線性不可分函數(shù)的數(shù)量隨著輸入變量個數(shù)的增加而快速增加,甚至遠遠超過線性可分函數(shù)得個數(shù)。
3、三層前饋網(wǎng)絡(luò)(多層感知器MLP)
神經(jīng)元的非線性特性可實現(xiàn)各種邏輯門,如NAND(與非門)可用如下的閾值神經(jīng)元實現(xiàn):
任何邏輯函數(shù)都可以由與非門組成,所以:①任何邏輯函數(shù)都可以用前饋網(wǎng)絡(luò)實現(xiàn);②單個閾值神經(jīng)元可以實現(xiàn)任意多輸入的與門、或門、與非門、或非門;由于任何邏輯函數(shù)都可以化為析?。ɑ蚝先。┬问?,所以任何邏輯函數(shù)都可用一個三層(只用兩層計算單元)的前饋網(wǎng)路實現(xiàn)。
當神經(jīng)元的輸出函數(shù)為Sigmoid函數(shù)時,上述結(jié)論可推廣到連續(xù)的非線性函數(shù),在很寬松的條件下,三層前饋網(wǎng)絡(luò)可以逼近任意的多元非線性函數(shù),突破了兩層前饋網(wǎng)絡(luò)線性可分的限制。這種三層或三層以上的前饋網(wǎng)絡(luò)叫作多層感知器。
4、反向傳播算法
三層前饋網(wǎng)絡(luò)的適用范圍大大超過二層前饋網(wǎng)絡(luò),但學習算法較為復(fù)雜——主要困難是中間隱層不直接與外界連接,無法直接計算其誤差。為此提出了反向傳播算法(BP)——主要思想從后向前(反向)逐層傳播輸出層的誤差,以間接算出隱層的誤差。
BP算法兩個階段:①(正向過程)輸入信息從輸入層經(jīng)隱層逐層計算各單元的輸出值;②(反向傳播過程)內(nèi)輸出誤差逐層向前算出隱層各單元的誤差,并用此誤差修正前層權(quán)值。具體來說,對于樣本集S={(X1,Y1),(X2,Y2),...,(Xs,Ys)},逐一地根據(jù)樣本(Xk,Yk)計算出實際輸出Ok和誤差測度E1,用輸出層的誤差調(diào)整輸出層權(quán)矩陣,并用此誤差估計輸出層的直接前導(dǎo)層誤差估計更前一層的誤差,如此得到每一層的誤差估計,實現(xiàn)對每層權(quán)矩陣的修改,重復(fù)這個過程直到所有層誤差測度之和小于規(guī)定誤差。
BP算法中通常采用梯度法修正權(quán)值,為此要求輸出函數(shù)可微,通常采用Sigmoid函數(shù)作為輸出函數(shù)。下面研究處于某一層的第j個計算單元,腳標i代表前層第i個單元,腳標k代表后層第k個單元,Oj代表本層輸出,w_ij是前層到本層的權(quán)值,神經(jīng)網(wǎng)絡(luò)示意圖如下:
BP算法兩個參數(shù):步長η和慣性項系數(shù)a'。步長η對收斂性影響很大,而且對于不同的問題其最佳值相差也很大,通??稍?.1~3之間試探,對于較為復(fù)雜的問題應(yīng)用較大的值。a影響收斂速度,很多應(yīng)用中其可在0.9~1之間選擇,a>=時不收斂;有些情況下也可不用慣性項(a=0)。
例子:如圖是一個簡單的前向傳播網(wǎng)絡(luò),用BP算法確定其中的各連接權(quán)值時,σ的計算方法如下:
由圖可知:
反向傳輸時計算如下:
1、計算
2、計算σ
也就是σ3的計算要依賴于它相鄰的上層節(jié)點的σ4和σ5的計算。
三層前饋網(wǎng)絡(luò)的輸入層和輸出層單元數(shù)(寬度)由問題本身決定,例如作為模式判別時輸入單元數(shù)是特征維數(shù),輸入單元數(shù)是類數(shù)。但中間隱層的單元數(shù)如何確定則缺乏有效的方法。一般來說,問題越復(fù)雜,需要的隱層單元越多;或者說同樣的問題,隱層單元越多越容易收斂,但隱層單元過多會增加使用時的計算量,甚至產(chǎn)生“過學習”“訓(xùn)練過度”效果,使對未曾出現(xiàn)過的樣本推廣能力變差。
中間隱層數(shù):對于多類模式識別問題,要求網(wǎng)絡(luò)輸出把特征空間劃分為一些不同的類區(qū)(對應(yīng)不同的類別),每一隱層單元可形成一個超平面。N個超平面可將D維空間劃分成的區(qū)域數(shù)(類數(shù)):
當N<D時,M=2^N。設(shè)有P個樣本,我們不知道它們實際上應(yīng)該分成多少類,為保險起見,可假設(shè)M=P(P個樣本分成P類),這樣,當N<D時由式子可選隱層單元數(shù)N=log2P,這只是個參考數(shù)字,因為所需隱層單元數(shù)主要取決對于問題復(fù)雜程度而非樣本數(shù),只是復(fù)雜問題確實需要大量樣本。
可先選擇較多的隱層單元數(shù),學習完成后再逐步刪除一些隱層單元,刪除的原則可考慮某一層的貢獻。例如,其輸出端各權(quán)值絕對值大小,或輸入端權(quán)向量是否與其他單元接近。更直接直觀的就是一層一層刪除試驗看效果,以此確定刪除哪一層。
BP算法應(yīng)用:原理上看,除了三層網(wǎng)絡(luò)外可以用于四層或更多層前饋網(wǎng)絡(luò),三層網(wǎng)絡(luò)可應(yīng)付任何問題,但是較為復(fù)雜的問題用更多層網(wǎng)絡(luò)結(jié)果可能更精確。但實際上,用于多于三層的網(wǎng)絡(luò)時,陷入局部極小點而不收斂的可能性很大,此時需要更多的先驗知識縮小搜索范圍或找出一些原則來逐層構(gòu)筑隱層?!且环N梯度快速下降法,易出現(xiàn)局部極小問題,所以BP是不完備的。
二、深度學習
深度學習是對傳統(tǒng)的人工神經(jīng)網(wǎng)絡(luò)算法進行了改進,通過模仿人的大腦處理信號時的多層抽象機制來完成對數(shù)據(jù)的識別分類?!?span style="color:#fe2c24;">深度”指神經(jīng)網(wǎng)絡(luò)的多層結(jié)構(gòu)。
傳統(tǒng)的模式識別應(yīng)用中,基本處理流程是:(訓(xùn)練)數(shù)據(jù)預(yù)處理---在預(yù)處理后的數(shù)據(jù)上進行特征提取---利用這些特征采用各種算法(SVM、CRF等)訓(xùn)練出模型---將測試數(shù)據(jù)的特征作為模型輸入,輸出分類或標注的結(jié)果。其中特征提取至關(guān)重要,好壞直接影響分類模型的結(jié)果,但這一步也很困難,如圖像的常用特征還是SIFT、HOG。但是深度學習方法可以首先從原始數(shù)據(jù)中無監(jiān)督地學習特征,將學習到的特征作為之后各層的輸入,省去了人工設(shè)計特征的步驟。
淺層網(wǎng)絡(luò)學習能力有限,計算網(wǎng)絡(luò)模型參數(shù)的策略:首先隨機初始網(wǎng)絡(luò)各層參數(shù)權(quán)重,然后根據(jù)訓(xùn)練數(shù)據(jù)上方差函數(shù)最小原則,采用梯度下降迭代計算參數(shù)。這不適用深層網(wǎng)絡(luò)的參數(shù)訓(xùn)練,會出現(xiàn)局部極小而得不到全局最優(yōu)解。而深度學習參數(shù)學習策略:首先逐層學習網(wǎng)絡(luò)參數(shù),之后進行調(diào)優(yōu)——首先逐層訓(xùn)練模型參數(shù),上一層的輸出作為本層輸入,經(jīng)過本層編碼器(激勵函數(shù)構(gòu)成)產(chǎn)生輸出,調(diào)整本層的參數(shù)使得誤差最小,如此逐層訓(xùn)練,每一層都是無監(jiān)督學習,最后可用反向傳播等算法對模型參數(shù)進行微調(diào)(調(diào)優(yōu)),用監(jiān)督學習去調(diào)整所有層。
常用的深度學習方法:棧式、AutoEncoder、Sparse Coding、Restrict Boltzmann Machine(RBM)等。
1、自編碼算法AutorEncoder
以一個淺層的(三層)神經(jīng)網(wǎng)絡(luò)為例,假設(shè)只有一個沒有類別的訓(xùn)練集合x,可使用自編碼神經(jīng)網(wǎng)絡(luò),用反向傳播算法來學習參數(shù):
自編碼神經(jīng)網(wǎng)絡(luò)嘗試使目標值等于輸入值,即h_W,b ≈ x,這種學習方法的意義在于數(shù)據(jù)的壓縮,用一定量的神經(jīng)元來產(chǎn)生原始數(shù)據(jù)中的大部分信息,目的類似于PCA的數(shù)據(jù)降維。如果給中間隱藏層的神經(jīng)元加入稀疏性限制,當神經(jīng)元數(shù)量較大時仍可以發(fā)現(xiàn)輸入數(shù)據(jù)中一些有趣的結(jié)構(gòu)。稀疏性可以被解釋為,假設(shè)激活函數(shù)是Sigmoid函數(shù),當神經(jīng)元的輸出接近1時被激活,接近0時被抑制,那么神經(jīng)元大部分時間都被抑制的限制稱為稀疏限制。為了實現(xiàn)這一抑制,可在優(yōu)化函數(shù)中加入額外的懲罰因子。
ρ是稀疏性參數(shù),通常接近于0,,表示輸出x時隱藏神經(jīng)元j的激活程度,S2是隱藏層中的神經(jīng)元數(shù)量,j依次代表隱藏層中每個神經(jīng)元。該懲罰因子實際上是基于相對熵的概念?,F(xiàn)在總體的代價函數(shù)可以表示成:
β控制懲罰因子的權(quán)重,ρ^取決于W,b。之后可以使用反向傳播算法來訓(xùn)練參數(shù)。
2、自組織編碼深度網(wǎng)絡(luò)
上面介紹的是一個包含輸入層、隱藏層、輸出層的三層神經(jīng)網(wǎng)路,僅包含一層隱藏層,非常“淺”。下面討論包含多個隱藏層的深度網(wǎng)絡(luò)。
深度網(wǎng)絡(luò)可計算更多復(fù)雜的輸入特征,這是因為每一層的激活函數(shù)是一根非線性函數(shù),每一個隱藏層可以對上一層的輸出進行非線性交換,因此深度神經(jīng)網(wǎng)絡(luò)可以學習到更加復(fù)雜的函數(shù)關(guān)系。相比“淺層網(wǎng)絡(luò)”其主要優(yōu)勢在于可以用更加緊湊簡潔的方式來表達函數(shù)集合,但是深度網(wǎng)絡(luò)參數(shù)訓(xùn)練不能用簡單的梯度傳播算法,原因:①簡單的梯度傳播算法需要已標記數(shù)據(jù)來完成訓(xùn)練,但有時獲取足夠的標記數(shù)據(jù)成本較高,而不充足的數(shù)據(jù)又會降低模型性能;②對于深層網(wǎng)絡(luò),易出現(xiàn)只收斂到局部的極值,得不到全局極值;③在使用反向傳播算法計算導(dǎo)數(shù)時,隨著網(wǎng)絡(luò)的加深,梯度的幅度會急劇減小,稱為梯度彌散。為解決這些問題,深度網(wǎng)絡(luò)這樣做:
①首先采用無監(jiān)督的學習方式來學習特征,不需要大量已標注的數(shù)據(jù);②之后采用逐層貪婪的訓(xùn)練方法(每次只訓(xùn)練網(wǎng)絡(luò)的一層,各層參數(shù)逐步訓(xùn)練得到);③BP算法微調(diào)。
①棧式AutorEncoder自動編碼器
這是最簡單的一種方法如下圖所示。從第一層開始利用AutorEncoder的思想只訓(xùn)練一層參數(shù),訓(xùn)練后固定該層參數(shù),以其輸出作為下一層的輸入重復(fù)上述過程,以此得到每一層的權(quán)重,這種方法也稱作逐層貪婪訓(xùn)練。后續(xù)還可以用BP算法進行微調(diào)以得到更好結(jié)果。
如果只對分類目的感興趣,那么常用的做法是丟掉解碼器,直接把最后一層的輸出作為特征輸入到Softmax分類器進行分類,這樣分類器的分類錯誤的梯度值就可以直接反向傳播給編碼層。
②Sparse Coding稀疏編碼
如果把AutorEncoder中輸出和輸入必須相等的限制放松,同時利用線性代數(shù)中基的概念,即?,其中是基,是系數(shù),可以得到這樣一個優(yōu)化問題:最小I和O中間的距離,其中I表示輸入,O表示輸出。通過求解這個最優(yōu)化式子,可求解系數(shù)和 ,這種方法就叫Sparse Coding。
稀疏性:只有很少的幾個遠大于0的元素,即系數(shù)a_i是稀疏的,稀疏編碼算法是一種無監(jiān)督學習方法,用來尋找一組“超完備”基向量來更高效地表示樣本數(shù)據(jù)。與PCA方法不同,這里的“超完備”基向量比輸入向量的維度還要大——好處是可更高效地找出隱含在數(shù)據(jù)內(nèi)部的結(jié)構(gòu)和模式。
算法還需要一個評判標準“稀疏性”來解決超完備而導(dǎo)致的退化問題。算法分為兩個部分:
①訓(xùn)練階段:例如,給定一系列圖像X,我們需要學習得到一組基 。稀疏編碼算法體現(xiàn)了k均值的思想,其訓(xùn)練過程類似,可迭代計算使得下式最?。?/p>
每次迭代分兩步,首先固定,然后調(diào)整a,使目標函數(shù)最小,之后固定a,調(diào)整,使目標函數(shù)最小。這樣不斷迭代,直至收斂,可以得到一組基。?
②編碼階段:給一個新得圖像X,由上一步得到得基,通過解Lasso問題得到稀疏向量a,即可得到圖像X得稀疏向量。
3、卷積神經(jīng)網(wǎng)絡(luò)模型(續(xù)下次)
卷積神經(jīng)網(wǎng)絡(luò)(CNN)是一種有監(jiān)督深度模型框架,尤其適合處理二維數(shù)據(jù)問題,如行人檢測、人臉識別、信號處理等領(lǐng)域,是帶有卷積結(jié)構(gòu)的深度神經(jīng)網(wǎng)絡(luò),也是首個真正意義上成功訓(xùn)練多層網(wǎng)絡(luò)的算法?!?u>續(xù)下次博客。
拓展:
1、SIFT,即尺度不變特征轉(zhuǎn)換(Scale-invariant feature transform,SIFT),是用于圖像處理領(lǐng)域的一種描述子。這種描述具有尺度不變性,可在圖 像中檢測出關(guān)鍵點,是一種局部特征描述子。
2、HOG,方向梯度直方圖(Histogram of Oriented Gradient, HOG)特征是一種在計算機視覺和圖像處理中用來進行物體檢測的特征描述子。HOG特 征通過計算和統(tǒng)計圖像局部區(qū)域的梯度方向直方圖來構(gòu)成特征。 主要思想:在一副圖像中,局部目標的表象和形狀能夠被梯度或邊緣的方向密度分布很好地描述。 本質(zhì)為:梯度的統(tǒng)計信息,而梯度主要存在于邊緣的地方。
3、k均值聚類算法的基本原理:根據(jù)數(shù)據(jù)的密集程度尋找相對密集數(shù)據(jù)的質(zhì)心,再根據(jù)質(zhì)心完成數(shù)據(jù)分類。可參考:圖解k均值聚類算法
4、神經(jīng)元:每個神經(jīng)元接收線性組合(加權(quán)和)的輸入后,最開始只是簡單的線性加權(quán),后來研究者給每個神經(jīng)元加上了非線性的激活函數(shù),從而進行非線性變換后輸出。每個神經(jīng)元之間的連接代表加權(quán)值(權(quán)重),不同的權(quán)重和激活函數(shù)則會導(dǎo)致神經(jīng)網(wǎng)絡(luò)不同的輸出。文章來源:http://www.zghlxwxcb.cn/news/detail-495564.html
5、激活函數(shù):常用的非線性激活函數(shù)有sigmoid、tanh、relu等等,前兩者sigmoid、tanh比較常見于全連接層,后者relu常見于卷積層。以sigmoid函數(shù)為例,由函數(shù)圖像可知其可把一個實數(shù)壓縮到0到1之間,當自變量很大的正數(shù)時函數(shù)趨于1,自變量為很小的負數(shù)時函數(shù)值趨于0,可以把其看作一種”分類的概率“,如激活函數(shù)的輸出為0.9的話便可解釋為90%為概率為正樣本。文章來源地址http://www.zghlxwxcb.cn/news/detail-495564.html
到了這里,關(guān)于【機器學習】——神經(jīng)網(wǎng)絡(luò)與深度學習的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!