|
神經(jīng)網(wǎng)絡(luò)定義 目前,關(guān)于神經(jīng)網(wǎng)絡(luò)的定義尚不統(tǒng)一,按美國(guó)神經(jīng)網(wǎng)絡(luò)學(xué)家Hecht Nielsen 的觀點(diǎn),神經(jīng)網(wǎng)絡(luò)的定義是:“神經(jīng)網(wǎng)絡(luò)是由多個(gè)非常簡(jiǎn)單的處理單元彼此按某種方式相互連接而形成的計(jì)算機(jī)系統(tǒng),該系統(tǒng)靠其狀態(tài)對(duì)外部輸入信息的動(dòng)態(tài)響應(yīng)來(lái)處理信息”。 綜合神經(jīng)網(wǎng)絡(luò)的來(lái)源﹑特點(diǎn)和各種解釋,它可簡(jiǎn)單地表述為:人工神經(jīng)網(wǎng)絡(luò)是一種旨在模仿人腦結(jié)構(gòu)及其功能的信息處理系統(tǒng)。 人工神經(jīng)網(wǎng)絡(luò)(簡(jiǎn)稱神經(jīng)網(wǎng)絡(luò)):是由人工神經(jīng)元互連組成的網(wǎng)絡(luò),它是從微觀結(jié)構(gòu)和功能上對(duì)人腦的抽象、簡(jiǎn)化,是模擬人類智能的一條重要途徑,反映了人腦功能的若干基本特征,如并行信息處理、學(xué)習(xí)、聯(lián)想、模式分類、記憶等。 深度學(xué)習(xí)一般指深度神經(jīng)網(wǎng)絡(luò),這里的深度指神經(jīng)網(wǎng)絡(luò)的層數(shù)(較多)。 深度學(xué)習(xí)里程碑 單層感知器基本結(jié)構(gòu) 上面的感知器,相當(dāng)于一個(gè)分類器,它使用高維的X向量作為輸入,在高維空間對(duì)輸入的樣本進(jìn)行二分類:當(dāng)W^T X>0時(shí),o=1,相當(dāng)于樣本被歸類為其中一類。否則,o=-1,相當(dāng)于樣本被歸類為另一類。這兩類的邊界在哪里呢?就是W^T X=0,這是一個(gè)高維超平面。
感知器的訓(xùn)練法則 感知器的訓(xùn)練法則:對(duì)于每一個(gè)訓(xùn)練樣例<X,t> 使用當(dāng)前的權(quán)值計(jì)算感知器輸出o; 對(duì)于每一個(gè)權(quán)值做如下的更新: 其中,X為輸入向量,t為目標(biāo)值,o為感知器當(dāng)前權(quán)值下的輸出,η為學(xué)習(xí)率,x_i和ω_i為向量X和W的第i個(gè)元素。 當(dāng)訓(xùn)練樣例線性可分時(shí),反復(fù)使用上面的方法,經(jīng)過(guò)有限次訓(xùn)練,感知器將收斂到能正確分類所有訓(xùn)練樣例的分類器。 在訓(xùn)練樣例線性不可分時(shí),訓(xùn)練很可能無(wú)法收斂。因此,人們?cè)O(shè)計(jì)了另一個(gè)法則來(lái)克服這個(gè)不足,稱為delta法則。它使用梯度下降(Gradient Descent)的方法在假設(shè)空間中所有可能的權(quán)向量,尋找到最佳擬合訓(xùn)練樣例的權(quán)向量。 梯度下降與損失函數(shù) l對(duì)于多元函數(shù)o=f(x)=f(x_0,x_1,…,x_n ),其在X^′=〖[〖x_0〗^′,〖x_1〗^′,…,〖x_n〗^′]' ' 〗^T處的梯度為: 梯度向量的方向,指向函數(shù)增長(zhǎng)最快的方向。因此,負(fù)梯度向量-?f,則指向函數(shù)下降最快的方向。 當(dāng)訓(xùn)練樣例線性不可分的時(shí)候,我們無(wú)法找到一個(gè)超平面,令感知器完美分類訓(xùn)練樣例,但是我們可以近似地分類他們,而允許一些小小的分類錯(cuò)誤。怎樣讓這個(gè)錯(cuò)誤最小呢,首先要參數(shù)化描述這個(gè)錯(cuò)誤,這就是損失函數(shù)(誤差函數(shù)),它反映了感知器目標(biāo)輸出和實(shí)際輸出之間的誤差。最常用的誤差函數(shù)為L2誤差: 其中,d為訓(xùn)練樣例,D為訓(xùn)練樣例集,t_d為目標(biāo)輸出,o_d為實(shí)際輸出。 損失函數(shù)的極值 既然損失函數(shù)E(W)的自變量是權(quán)值,因此他是定義在權(quán)值空間上的函數(shù)。那么問(wèn)題就轉(zhuǎn)化成了在權(quán)值空間中,搜索使得E(W)最小的權(quán)值向量W。然而不幸的是,E(W)=1/2 ∑_(d∈D)?(t_d-o_d )^2 定義了一個(gè)非常負(fù)雜的高維曲面,而數(shù)學(xué)上,對(duì)高維曲面的極值求解還沒(méi)有有效的方法。既然負(fù)梯度方向是函數(shù)下降最快的方向,那我們可以從某個(gè)點(diǎn)開(kāi)始,沿著?()方向一路前行,期望最終可以找到E(W)的極小值點(diǎn),這就是梯度下降法的核心思想。 線性單元全局梯度下降算法 對(duì)于訓(xùn)練樣例集D中的每一個(gè)樣例記為<X, t>,X是輸入值向量,t為目標(biāo)輸出,η是學(xué)習(xí)率。 初始化每個(gè)w_i為絕對(duì)值較小的隨機(jī)值 遇到終止條件前,do: 初始化每個(gè)?w_i為零 對(duì)于D中每個(gè)<X, t>,do: 將X輸入此單元,計(jì)算輸出o 對(duì)于此單元的每個(gè)w_i,do:?w_i+= η(t-o) x_i 對(duì)于此單元的每個(gè)w_i,do:w_i+= ?w_i 這個(gè)版本的梯度下降算法,實(shí)際上并不常用,它的主要問(wèn)題是: 收斂過(guò)程非常慢,因?yàn)槊看胃聶?quán)值都需要計(jì)算所有的訓(xùn)練樣例; 如果誤差曲面上有多個(gè)局部極小值,那么這個(gè)過(guò)程極易陷入局部極值。 隨機(jī)梯度下降算法和在線學(xué)習(xí) 針對(duì)原始梯度下降算法的弊端,一個(gè)常見(jiàn)的變體稱為增量梯度下降(Incremental Gradient Descent),亦即隨機(jī)梯度下降(SGD:Stochastic Gradient Descent)。其中一種實(shí)現(xiàn)稱為在線學(xué)習(xí)(Online Learning),它根據(jù)每一個(gè)樣例來(lái)更新梯度: ONLINE-GRADIENT-DESCENT(D, η) 初始化每個(gè)_為絕對(duì)值較小的隨機(jī)值 遇到終止條件前,do: 對(duì)于D中每個(gè)<X, t>,do:
Mini-Batch梯度下降 針對(duì)上兩種梯度下降算法的弊端,提出了一個(gè)實(shí)際工作中最常用的梯度下降算法,即Mini-Batch SGD。它的思想是每次使用一小批固定尺寸(BS:Batch Size)的樣例來(lái)計(jì)算?w_i,然后更新權(quán)值。 BATCH-GRADIENT-DESCENT(D, η, BS) 初始化每個(gè)w_i為絕對(duì)值較小的隨機(jī)值 遇到終止條件前,do: 初始化每個(gè)?w_i為零 從D中下一批(BS個(gè))樣例,對(duì)這批樣例中的每一個(gè)<X, t>,do:
對(duì)于此單元的每個(gè)w_i,do:w_i += ?w_i 如果已經(jīng)是最后一批,打亂訓(xùn)練樣例的順序。 激活函數(shù) - Sigmoid函數(shù) Sigmoid函數(shù): ![]() ![]() tanh函數(shù): ![]() ![]() Softsign函數(shù): ![]() ![]() ReLU( Rectified Linear Unit )函數(shù): ![]() ![]() Softplus函數(shù): f(x)=ln?(e^x+1) ![]() 激活函數(shù)設(shè)計(jì)需考慮的因素 非線性:當(dāng)激活函數(shù)是非線性的,一個(gè)兩層神經(jīng)網(wǎng)絡(luò)可以證明是一個(gè)通用函數(shù)近似值,如果失去了非線性,整個(gè)網(wǎng)絡(luò)就相當(dāng)于一個(gè)單層的線性模型。 連續(xù)可微性:這個(gè)屬性對(duì)基于梯度優(yōu)化方法是必要的,如果選擇了一些具有局部不可微的函數(shù),則需要強(qiáng)行定義此處的導(dǎo)數(shù)。 有界性:如果激活函數(shù)有界的,基于梯度的訓(xùn)練方法往往更穩(wěn)定;如果是無(wú)界的,訓(xùn)練通常更有效率,但是訓(xùn)練容易發(fā)散,此時(shí)可以適當(dāng)減小學(xué)習(xí)率。 單調(diào)性:如果激活函數(shù)是單調(diào)的,與單層模型相關(guān)的損失函數(shù)是凸的。 平滑性:有單調(diào)導(dǎo)數(shù)的平滑函數(shù)已經(jīng)被證明在某些情況下泛化效果更好。 原點(diǎn)附近近似Identity:當(dāng)激活函數(shù)有這個(gè)特點(diǎn)時(shí),對(duì)于小的隨機(jī)初始化權(quán)重,神經(jīng)網(wǎng)絡(luò)能夠更有效地學(xué)習(xí)。否則,在初始化權(quán)值時(shí)往往需要進(jìn)行特殊設(shè)計(jì)。 神經(jīng)網(wǎng)絡(luò)的種類 多層全連接人工神經(jīng)網(wǎng)絡(luò) 單個(gè)感知器的表達(dá)能力有限,它只能表達(dá)線性決策面(超平面)。如果我們把眾多的感知器互聯(lián)起來(lái),就像人的大腦做所的那樣,再將激活函數(shù)更換為非線性函數(shù),我們就可以表達(dá)種類繁多的非線性曲面。 ![]() 前饋神經(jīng)網(wǎng)絡(luò) 前饋神經(jīng)網(wǎng)絡(luò)是一種最簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò),各神經(jīng)元分層排列。是目前應(yīng)用最廣泛、發(fā)展最迅速的人工神經(jīng)網(wǎng)絡(luò)之一。 ![]() 可以看出,輸入節(jié)點(diǎn)并無(wú)計(jì)算功能,只是為了表征輸入矢量各元素值。 各層節(jié)點(diǎn)表示具有計(jì)算功能的神經(jīng)元,稱為計(jì)算單元。每個(gè)神經(jīng)元只與前一層的神經(jīng)元相連。 接收前一層的輸出,并輸出給下一層,采用一種單向多層結(jié)構(gòu),每一層包含若干個(gè)神經(jīng)元,同一層的神經(jīng)元之間沒(méi)有互相連接,層間信息的傳送只沿一個(gè)方向進(jìn)行。 反向傳播算法 有了這個(gè)公式,我們就可以訓(xùn)練神經(jīng)網(wǎng)絡(luò)了,公式重列如下: BP算法訓(xùn)練網(wǎng)絡(luò)的步驟如下: 1.取出下一個(gè)訓(xùn)練樣例<X, T>,將X輸入網(wǎng)絡(luò),得到實(shí)際輸出O。 2.根據(jù)輸出層誤差公式(1)求取輸出層δ,并更新權(quán)值。 3.對(duì)于隱層,根據(jù)隱層誤差傳播公式(2)從輸出往輸入方向反向、逐層、迭代計(jì)算各層的δ,每計(jì)算好一層的δ,更新該層權(quán)值,直至所有權(quán)值更新完畢。 返回1中繼續(xù)。 ![]() 卷積神經(jīng)網(wǎng)絡(luò) l卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)是一種前饋神經(jīng)網(wǎng)絡(luò),它的人工神經(jīng)元可以響應(yīng)一部分覆蓋范圍內(nèi)的周?chē)鷨卧?/strong>,對(duì)于圖像處理有出色表現(xiàn)。它包括卷積層(convolutional layer),池化層(pooling layer)和全連接層(fully_connected layer)。 l20世紀(jì)60年代,Hubel和Wiesel在研究貓腦皮層中用于局部敏感和方向選擇的神經(jīng)元時(shí)發(fā)現(xiàn)其獨(dú)特的網(wǎng)絡(luò)結(jié)構(gòu)可以有效地降低反饋神經(jīng)網(wǎng)絡(luò)的復(fù)雜性,繼而提出了卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks-簡(jiǎn)稱CNN)。 l現(xiàn)在,CNN已經(jīng)成為眾多科學(xué)領(lǐng)域的研究熱點(diǎn)之一,特別是在模式分類領(lǐng)域,由于該網(wǎng)絡(luò)避免了對(duì)圖像的復(fù)雜前期預(yù)處理,可以直接輸入原始圖像,因而得到了更為廣泛的應(yīng)用。 卷積神經(jīng)網(wǎng)絡(luò) ![]() 卷積層 卷積神經(jīng)網(wǎng)絡(luò)的基本結(jié)構(gòu),就是前面說(shuō)的多通道卷積。上一層的輸出(或者第一層的原始圖像),作為本層的輸入,然后和本層的卷積核卷積,作為本層輸出。而各層的卷積核,就是要學(xué)習(xí)的權(quán)值。和FCN類似,卷積完成后,輸入下一層之前,也需要經(jīng)過(guò)偏置和通過(guò)激活函數(shù)進(jìn)行激活。 ![]() 池化層 Pooling的中文名為池化,它合并了附近的單元,減小了下層輸入的尺寸。常用的Pooling有Max Pooling和Average Pooling,顧名思義,Max Pooling選擇一小片正方形區(qū)域中最大的那個(gè)值作為這片小區(qū)域的代表,而Average Pooling則使用這篇小區(qū)域的均值代表之。這片小區(qū)域的邊長(zhǎng)為池化窗口尺寸。下圖演示了池化窗口尺寸為2的一般Max池化操作。 ![]() 循環(huán)神經(jīng)網(wǎng)絡(luò) 循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent neural networks,簡(jiǎn)稱RNN)是一種通過(guò)隱藏層節(jié)點(diǎn)周期性的連接,來(lái)捕捉序列化數(shù)據(jù)中動(dòng)態(tài)信息的神經(jīng)網(wǎng)絡(luò),可以對(duì)序列化的數(shù)據(jù)進(jìn)行分類。 和其他前向神經(jīng)網(wǎng)絡(luò)不同,RNN可以保存一種上下文的狀態(tài),甚至能夠在任意長(zhǎng)的上下文窗口中存儲(chǔ)、學(xué)習(xí)、表達(dá)相關(guān)信息,而且不再局限于傳統(tǒng)神經(jīng)網(wǎng)絡(luò)在空間上的邊界,可以在時(shí)間序列上有延拓,直觀上講,就是本時(shí)間的隱藏層和下一時(shí)刻的隱藏層之間的節(jié)點(diǎn)間有邊。 RNN廣泛應(yīng)用在和序列有關(guān)的場(chǎng)景,如如一幀幀圖像組成的視頻,一個(gè)個(gè)片段組成的音頻,和一個(gè)個(gè)詞匯組成的句子。 ![]() 展開(kāi)的循環(huán)神經(jīng)網(wǎng)絡(luò) ![]() 循環(huán)神經(jīng)網(wǎng)絡(luò)類型 ![]() 標(biāo)準(zhǔn)LSTM結(jié)構(gòu) ![]() 深度學(xué)習(xí)中的正則化 正則化是機(jī)器學(xué)習(xí)中非常重要并且非常有效的減少泛化誤差的技術(shù),特別是在深度學(xué)習(xí)模型中,由于其模型參數(shù)非常多非常容易產(chǎn)生過(guò)擬合。因此研究者也提出很多有效的技術(shù)防止過(guò)擬合,比較常用的技術(shù)包括:
參數(shù)懲罰 l許多正則化方法通過(guò)對(duì)目標(biāo)函數(shù)J添加一個(gè)參數(shù)懲罰Ω(θ),限制模型的學(xué)習(xí)能力。我們將正則化后的目標(biāo)函數(shù)記為J ?。 J ?(θ;X,y)=J(θ;X,y)+αΩ(θ), 其中α?[0,∞)是權(quán)衡范數(shù)懲罰項(xiàng)Ω和標(biāo)準(zhǔn)目標(biāo)函數(shù)J(X;θ)相對(duì)貢獻(xiàn)的超參數(shù)。將α設(shè)為0表示沒(méi)有正則化。α越大,對(duì)應(yīng)正則化懲罰越大。 L 1正則 l對(duì)模型參數(shù)添加L_1范數(shù)約束,即 J ?(w;X,y)=J(w;X,y)+α‖w‖_1, l如果通過(guò)梯度方法進(jìn)行求解時(shí),參數(shù)梯度為 ?J ?(w)=∝sign(w)+?J(w). L 2正則 l參數(shù)約束添加L_2范數(shù)懲罰項(xiàng),該技術(shù)用于防止過(guò)擬合。 J ?(w;X,y)=J(w;X,y)+1/2 α‖w‖^2, 通過(guò)最優(yōu)化技術(shù),例如梯度相關(guān)方法可以很快推導(dǎo)出,參數(shù)優(yōu)化方式為 w=(1-εα)ω-ε?J(w), 其中ε為學(xué)習(xí)率,相對(duì)于正常的梯度優(yōu)化公式,對(duì)參數(shù)乘上一個(gè)縮減因子。 L 2 VS L 1 L_2與L_1的主要區(qū)別如下: 通過(guò)上面的分析,L_1相對(duì)于L_2能夠產(chǎn)生更加稀疏的模型,即當(dāng)L_1正則在參數(shù)w比較小的情況下,能夠直接縮減至0,因此可以起到特征選擇的作用。 如果從概率角度進(jìn)行分析,很多范數(shù)約束相當(dāng)于對(duì)參數(shù)添加先驗(yàn)分布,其中L_2范數(shù)相當(dāng)于參數(shù)服從高斯先驗(yàn)分布;L_1范數(shù)相當(dāng)于拉普拉斯分布。 ![]() 數(shù)據(jù)集合擴(kuò)充 防止過(guò)擬合最有效的方法是增加訓(xùn)練集合,訓(xùn)練集合越大過(guò)擬合概率越小。數(shù)據(jù)集合擴(kuò)充是一個(gè)省時(shí)有效的方法,但是在不同領(lǐng)域方法不太通用。
Dropout lDropout是一類通用并且計(jì)算簡(jiǎn)潔的正則化方法,在2014年被提出后廣泛的使用。簡(jiǎn)單的說(shuō),Dropout在訓(xùn)練過(guò)程中,隨機(jī)的丟棄一部分輸入,此時(shí)丟棄部分對(duì)應(yīng)的參數(shù)不會(huì)更新。相當(dāng)于Dropout是一個(gè)集成方法,將所有子網(wǎng)絡(luò)結(jié)果進(jìn)行合并,通過(guò)隨機(jī)丟棄輸入可以得到各種子網(wǎng)絡(luò)。例如 ![]() 優(yōu)化器 在梯度下降算法中,有各種不同的改進(jìn)版本。在面向?qū)ο蟮恼Z(yǔ)言實(shí)現(xiàn)中,往往把不同的梯度下降算法封裝成一個(gè)對(duì)象,稱為優(yōu)化器。 算法改進(jìn)的目的,包括但不限于:
常見(jiàn)的優(yōu)化器如:普通GD優(yōu)化器、動(dòng)量?jī)?yōu)化器、Nesterov、Adagrad、Adadelta、RMSprop、Adam、AdaMax、Nadam |
|
|
來(lái)自: 天朗氣清uizw04 > 《計(jì)算機(jī)》