




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
bp神經(jīng)網(wǎng)絡(luò)及matlab實(shí)現(xiàn)分類:算法學(xué)習(xí)2023-06-2020:5666399人閱讀評(píng)論(28)收藏\o"舉報(bào)"舉報(bào)網(wǎng)絡(luò)matlab算法functionnetworkinput本文主要內(nèi)容包括:(1)介紹神經(jīng)網(wǎng)絡(luò)根本原理,(2)AForge.NET實(shí)現(xiàn)前向神經(jīng)網(wǎng)絡(luò)的方法,(3)Matlab實(shí)現(xiàn)前向神經(jīng)網(wǎng)絡(luò)的方法。第0節(jié)、引例
本文以Fisher的Iris數(shù)據(jù)集作為神經(jīng)網(wǎng)絡(luò)程序的測試數(shù)據(jù)集。Iris數(shù)據(jù)集可以在:///wiki/Iris_flower_data_set
找到。這里簡要介紹一下Iris數(shù)據(jù)集:有一批Iris花,這批Iris花可分為3個(gè)品種,現(xiàn)需要對(duì)其進(jìn)行分類。不同品種的Iris花的花萼長度、花萼寬度、花瓣長度、花瓣寬度會(huì)有差異。我們現(xiàn)有一批品種的Iris花的花萼長度、花萼寬度、花瓣長度、花瓣寬度的數(shù)據(jù)。一種解決方法是用已有的數(shù)據(jù)訓(xùn)練一個(gè)神經(jīng)網(wǎng)絡(luò)用作分類器。如果你只想用C#或Matlab快速實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)來解決你手頭上的問題,或者已經(jīng)了解神經(jīng)網(wǎng)絡(luò)根本原理,請(qǐng)直接跳到第二節(jié)——神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)。第一節(jié)、神經(jīng)網(wǎng)絡(luò)根本原理
1.人工神經(jīng)元(ArtificialNeuron)模型
人工神經(jīng)元是神經(jīng)網(wǎng)絡(luò)的根本元素,其原理可以用下列圖表示:圖1.人工神經(jīng)元模型
圖中x1~xn是從其他神經(jīng)元傳來的輸入信號(hào),wij表示表示從神經(jīng)元j到神經(jīng)元i的連接權(quán)值,θ表示一個(gè)閾值(threshold),或稱為偏置(bias)。那么神經(jīng)元i的輸出與輸入的關(guān)系表示為:圖中yi表示神經(jīng)元i的輸出,函數(shù)f稱為激活函數(shù)(ActivationFunction)或轉(zhuǎn)移函數(shù)(TransferFunction),net稱為凈激活(netactivation)。假設(shè)將閾值看成是神經(jīng)元i的一個(gè)輸入x0的權(quán)重wi0,那么上面的式子可以簡化為:假設(shè)用X表示輸入向量,用W表示權(quán)重向量,即:X=[x0,x1,x2,.......,xn]那么神經(jīng)元的輸出可以表示為向量相乘的形式:
假設(shè)神經(jīng)元的凈激活net為正,稱該神經(jīng)元處于激活狀態(tài)或興奮狀態(tài)(fire),假設(shè)凈激活net為負(fù),那么稱神經(jīng)元處于抑制狀態(tài)。
圖1中的這種“閾值加權(quán)和〞的神經(jīng)元模型稱為M-P模型(McCulloch-PittsModel),也稱為神經(jīng)網(wǎng)絡(luò)的一個(gè)處理單元(PE,ProcessingElement)。2.常用激活函數(shù)
激活函數(shù)的選擇是構(gòu)建神經(jīng)網(wǎng)絡(luò)過程中的重要環(huán)節(jié),下面簡要介紹常用的激活函數(shù)。(1)線性函數(shù)(LinerFunction)(2)斜面函數(shù)(RampFunction)(3)閾值函數(shù)(ThresholdFunction)
以上3個(gè)激活函數(shù)都屬于線性函數(shù),下面介紹兩個(gè)常用的非線性激活函數(shù)。(4)S形函數(shù)(SigmoidFunction)該函數(shù)的導(dǎo)函數(shù):(5)雙極S形函數(shù)
該函數(shù)的導(dǎo)函數(shù):S形函數(shù)與雙極S形函數(shù)的圖像如下:圖3.S形函數(shù)與雙極S形函數(shù)圖像雙極S形函數(shù)與S形函數(shù)主要區(qū)別在于函數(shù)的值域,雙極S形函數(shù)值域是(-1,1),而S形函數(shù)值域是(0,1)。由于S形函數(shù)與雙極S形函數(shù)都是可導(dǎo)的(導(dǎo)函數(shù)是連續(xù)函數(shù)),因此適合用在BP神經(jīng)網(wǎng)絡(luò)中?!睟P算法要求激活函數(shù)可導(dǎo)〕3.神經(jīng)網(wǎng)絡(luò)模型
神經(jīng)網(wǎng)絡(luò)是由大量的神經(jīng)元互聯(lián)而構(gòu)成的網(wǎng)絡(luò)。根據(jù)網(wǎng)絡(luò)中神經(jīng)元的互聯(lián)方式,常見網(wǎng)絡(luò)結(jié)構(gòu)主要可以分為下面3類:(1)前饋神經(jīng)網(wǎng)絡(luò)(FeedforwardNeuralNetworks)
前饋網(wǎng)絡(luò)也稱前向網(wǎng)絡(luò)。這種網(wǎng)絡(luò)只在訓(xùn)練過程會(huì)有反應(yīng)信號(hào),而在分類過程中數(shù)據(jù)只能向前傳送,直到到達(dá)輸出層,層間沒有向后的反應(yīng)信號(hào),因此被稱為前饋網(wǎng)絡(luò)。感知機(jī)(perceptron)與BP神經(jīng)網(wǎng)絡(luò)就屬于前饋網(wǎng)絡(luò)。
圖4中是一個(gè)3層的前饋神經(jīng)網(wǎng)絡(luò),其中第一層是輸入單元,第二層稱為隱含層,第三層稱為輸出層〔輸入單元不是神經(jīng)元,因此圖中有2層神經(jīng)元〕。圖4.前饋神經(jīng)網(wǎng)絡(luò)對(duì)于一個(gè)3層的前饋神經(jīng)網(wǎng)絡(luò)N,假設(shè)用X表示網(wǎng)絡(luò)的輸入向量,W1~W3表示網(wǎng)絡(luò)各層的連接權(quán)向量,F(xiàn)1~F3表示神經(jīng)網(wǎng)絡(luò)3層的激活函數(shù)。那么神經(jīng)網(wǎng)絡(luò)的第一層神經(jīng)元的輸出為:O1=F1(XW1)第二層的輸出為:O2=F2(F1(XW1)W2)輸出層的輸出為:O3=F3(F2(F1(XW1)W2)W3)
假設(shè)激活函數(shù)F1~F3都選用線性函數(shù),那么神經(jīng)網(wǎng)絡(luò)的輸出O3將是輸入X的線性函數(shù)。因此,假設(shè)要做高次函數(shù)的逼近就應(yīng)該選用適當(dāng)?shù)姆蔷€性函數(shù)作為激活函數(shù)。(2)反應(yīng)神經(jīng)網(wǎng)絡(luò)(FeedbackNeuralNetworks)
反應(yīng)型神經(jīng)網(wǎng)絡(luò)是一種從輸出到輸入具有反應(yīng)連接的神經(jīng)網(wǎng)絡(luò),其結(jié)構(gòu)比前饋網(wǎng)絡(luò)要復(fù)雜得多。典型的反應(yīng)型神經(jīng)網(wǎng)絡(luò)有:Elman網(wǎng)絡(luò)和Hopfield網(wǎng)絡(luò)。圖5.反應(yīng)神經(jīng)網(wǎng)絡(luò)(3)自組織網(wǎng)絡(luò)(SOM,Self-OrganizingNeuralNetworks)
自組織神經(jīng)網(wǎng)絡(luò)是一種無導(dǎo)師學(xué)習(xí)網(wǎng)絡(luò)。它通過自動(dòng)尋找樣本中的內(nèi)在規(guī)律和本質(zhì)屬性,自組織、自適應(yīng)地改變網(wǎng)絡(luò)參數(shù)與結(jié)構(gòu)。圖6.自組織網(wǎng)絡(luò)4.神經(jīng)網(wǎng)絡(luò)工作方式
神經(jīng)網(wǎng)絡(luò)運(yùn)作過程分為學(xué)習(xí)和工作兩種狀態(tài)。(1)神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)狀態(tài)
網(wǎng)絡(luò)的學(xué)習(xí)主要是指使用學(xué)習(xí)算法來調(diào)整神經(jīng)元間的聯(lián)接權(quán),使得網(wǎng)絡(luò)輸出更符合實(shí)際。學(xué)習(xí)算法分為有導(dǎo)師學(xué)習(xí)(SupervisedLearning)與無導(dǎo)師學(xué)習(xí)(UnsupervisedLearning)兩類。有導(dǎo)師學(xué)習(xí)算法將一組訓(xùn)練集(trainingset)送入網(wǎng)絡(luò),根據(jù)網(wǎng)絡(luò)的實(shí)際輸出與期望輸出間的差異來調(diào)整連接權(quán)。有導(dǎo)師學(xué)習(xí)算法的主要步驟包括:1〕
從樣本集合中取一個(gè)樣本〔Ai,Bi〕;2〕
計(jì)算網(wǎng)絡(luò)的實(shí)際輸出O;3〕
求D=Bi-O;4〕
根據(jù)D調(diào)整權(quán)矩陣W;5〕對(duì)每個(gè)樣本重復(fù)上述過程,直到對(duì)整個(gè)樣本集來說,誤差不超過規(guī)定范圍。BP算法就是一種出色的有導(dǎo)師學(xué)習(xí)算法。無導(dǎo)師學(xué)習(xí)抽取樣本集合中蘊(yùn)含的統(tǒng)計(jì)特性,并以神經(jīng)元之間的聯(lián)接權(quán)的形式存于網(wǎng)絡(luò)中。
Hebb學(xué)習(xí)律是一種經(jīng)典的無導(dǎo)師學(xué)習(xí)算法。(2)神經(jīng)網(wǎng)絡(luò)的工作狀態(tài)
神經(jīng)元間的連接權(quán)不變,神經(jīng)網(wǎng)絡(luò)作為分類器、預(yù)測器等使用。下面簡要介紹一下Hebb學(xué)習(xí)率與Delta學(xué)習(xí)規(guī)那么。(3)無導(dǎo)師學(xué)習(xí)算法:Hebb學(xué)習(xí)率
Hebb算法核心思想是,當(dāng)兩個(gè)神經(jīng)元同時(shí)處于激發(fā)狀態(tài)時(shí)兩者間的連接權(quán)會(huì)被加強(qiáng),否那么被減弱。
為了理解Hebb算法,有必要簡單介紹一下條件反射實(shí)驗(yàn)。巴甫洛夫的條件反射實(shí)驗(yàn):每次給狗喂食前都先響鈴,時(shí)間一長,狗就會(huì)將鈴聲和食物聯(lián)系起來。以后如果響鈴但是不給食物,狗也會(huì)流口水。圖7.巴甫洛夫的條件反射實(shí)驗(yàn)受該實(shí)驗(yàn)的啟發(fā),Hebb的理論認(rèn)為在同一時(shí)間被激發(fā)的神經(jīng)元間的聯(lián)系會(huì)被強(qiáng)化。比方,鈴聲響時(shí)一個(gè)神經(jīng)元被激發(fā),在同一時(shí)間食物的出現(xiàn)會(huì)激發(fā)附近的另一個(gè)神經(jīng)元,那么這兩個(gè)神經(jīng)元間的聯(lián)系就會(huì)強(qiáng)化,從而記住這兩個(gè)事物之間存在著聯(lián)系。相反,如果兩個(gè)神經(jīng)元總是不能同步激發(fā),那么它們間的聯(lián)系將會(huì)越來越弱。Hebb學(xué)習(xí)律可表示為:
其中wij表示神經(jīng)元j到神經(jīng)元i的連接權(quán),yi與yj為兩個(gè)神經(jīng)元的輸出,a是表示學(xué)習(xí)速度的常數(shù)。假設(shè)yi與yj同時(shí)被激活,即yi與yj同時(shí)為正,那么Wij將增大。假設(shè)yi被激活,而yj處于抑制狀態(tài),即yi為正yj為負(fù),那么Wij將變小。(4)有導(dǎo)師學(xué)習(xí)算法:Delta學(xué)習(xí)規(guī)那么Delta學(xué)習(xí)規(guī)那么是一種簡單的有導(dǎo)師學(xué)習(xí)算法,該算法根據(jù)神經(jīng)元的實(shí)際輸出與期望輸出差異來調(diào)整連接權(quán),其數(shù)學(xué)表示如下:
其中Wij表示神經(jīng)元j到神經(jīng)元i的連接權(quán),di是神經(jīng)元i的期望輸出,yi是神經(jīng)元i的實(shí)際輸出,xj表示神經(jīng)元j狀態(tài),假設(shè)神經(jīng)元j處于激活態(tài)那么xj為1,假設(shè)處于抑制狀態(tài)那么xj為0或-1〔根據(jù)激活函數(shù)而定〕。a是表示學(xué)習(xí)速度的常數(shù)。假設(shè)xi為1,假設(shè)di比yi大,那么Wij將增大,假設(shè)di比yi小,那么Wij將變小。
Delta規(guī)那么簡單講來就是:假設(shè)神經(jīng)元實(shí)際輸出比期望輸出大,那么減小所有輸入為正的連接的權(quán)重,增大所有輸入為負(fù)的連接的權(quán)重。反之,假設(shè)神經(jīng)元實(shí)際輸出比期望輸出小,那么增大所有輸入為正的連接的權(quán)重,減小所有輸入為負(fù)的連接的權(quán)重。這個(gè)增大或減小的幅度就根據(jù)上面的式子來計(jì)算。(5)有導(dǎo)師學(xué)習(xí)算法:BP算法
采用BP學(xué)習(xí)算法的前饋型神經(jīng)網(wǎng)絡(luò)通常被稱為BP網(wǎng)絡(luò)。圖8.三層BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)BP網(wǎng)絡(luò)具有很強(qiáng)的非線性映射能力,一個(gè)3層BP神經(jīng)網(wǎng)絡(luò)能夠?qū)崿F(xiàn)對(duì)任意非線性函數(shù)進(jìn)行逼近〔根據(jù)Kolrnogorov定理〕。一個(gè)典型的3層BP神經(jīng)網(wǎng)絡(luò)模型如圖7所示。BP網(wǎng)絡(luò)的學(xué)習(xí)算法占篇幅較大,我打算在下一篇文章中介紹。第二節(jié)、神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)
1.數(shù)據(jù)預(yù)處理
在訓(xùn)練神經(jīng)網(wǎng)絡(luò)前一般需要對(duì)數(shù)據(jù)進(jìn)行預(yù)處理,一種重要的預(yù)處理手段是歸一化處理。下面簡要介紹歸一化處理的原理與方法。(1)什么是歸一化?
數(shù)據(jù)歸一化,就是將數(shù)據(jù)映射到[0,1]或[-1,1]區(qū)間或更小的區(qū)間,比方(0.1,0.9)。(2)為什么要?dú)w一化處理?
<1>輸入數(shù)據(jù)的單位不一樣,有些數(shù)據(jù)的范圍可能特別大,導(dǎo)致的結(jié)果是神經(jīng)網(wǎng)絡(luò)收斂慢、訓(xùn)練時(shí)間長。<2>數(shù)據(jù)范圍大的輸入在模式分類中的作用可能會(huì)偏大,而數(shù)據(jù)范圍小的輸入作用就可能會(huì)偏小。<3>由于神經(jīng)網(wǎng)絡(luò)輸出層的激活函數(shù)的值域是有限制的,因此需要將網(wǎng)絡(luò)訓(xùn)練的目標(biāo)數(shù)據(jù)映射到激活函數(shù)的值域。例如神經(jīng)網(wǎng)絡(luò)的輸出層假設(shè)采用S形激活函數(shù),由于S形函數(shù)的值域限制在(0,1),也就是說神經(jīng)網(wǎng)絡(luò)的輸出只能限制在(0,1),所以訓(xùn)練數(shù)據(jù)的輸出就要?dú)w一化到[0,1]區(qū)間。<4>S形激活函數(shù)在(0,1)區(qū)間以外區(qū)域很平緩,區(qū)分度太小。例如S形函數(shù)f(X)在參數(shù)a=1時(shí),f(100)與f(5)只相差0.0067。(3)歸一化算法
一種簡單而快速的歸一化算法是線性轉(zhuǎn)換算法。線性轉(zhuǎn)換算法常見有兩種形式:
<1>y=(x-min)/(max-min)其中min為x的最小值,max為x的最大值,輸入向量為x,歸一化后的輸出向量為y。上式將數(shù)據(jù)歸一化到[0,1]區(qū)間,當(dāng)激活函數(shù)采用S形函數(shù)時(shí)〔值域?yàn)?0,1)〕時(shí)這條式子適用。
<2>y=2*(x-min)/(max-min)-1
這條公式將數(shù)據(jù)歸一化到[-1,1]區(qū)間。當(dāng)激活函數(shù)采用雙極S形函數(shù)〔值域?yàn)?-1,1)〕時(shí)這條式子適用。(4)Matlab數(shù)據(jù)歸一化處理函數(shù)
Matlab中歸一化處理數(shù)據(jù)可以采用premnmx,postmnmx,tramnmx這3個(gè)函數(shù)。<1>premnmx語法:[pn,minp,maxp,tn,mint,maxt]=premnmx(p,t)參數(shù):pn:p矩陣按行歸一化后的矩陣minp,maxp:p矩陣每一行的最小值,最大值tn:t矩陣按行歸一化后的矩陣mint,maxt:t矩陣每一行的最小值,最大值作用:將矩陣p,t歸一化到[-1,1],主要用于歸一化處理訓(xùn)練數(shù)據(jù)集。<2>tramnmx語法:[pn]=tramnmx(p,minp,maxp)參數(shù):minp,maxp:premnmx函數(shù)計(jì)算的矩陣的最小,最大值pn:歸一化后的矩陣作用:主要用于歸一化處理待分類的輸入數(shù)據(jù)。<3>postmnmx語法:[p,t]=postmnmx(pn,minp,maxp,tn,mint,maxt)參數(shù):minp,maxp:premnmx函數(shù)計(jì)算的p矩陣每行的最小值,最大值mint,maxt:premnmx函數(shù)計(jì)算的t矩陣每行的最小值,最大值作用:將矩陣pn,tn映射回歸一化處理前的范圍。postmnmx函數(shù)主要用于將神經(jīng)網(wǎng)絡(luò)的輸出結(jié)果映射回歸一化前的數(shù)據(jù)范圍。2.使用Matlab實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)
使用Matlab建立前饋神經(jīng)網(wǎng)絡(luò)主要會(huì)使用到下面3個(gè)函數(shù):newff:前饋網(wǎng)絡(luò)創(chuàng)立函數(shù)train:訓(xùn)練一個(gè)神經(jīng)網(wǎng)絡(luò)sim:使用網(wǎng)絡(luò)進(jìn)行仿真
下面簡要介紹這3個(gè)函數(shù)的用法。(1)newff函數(shù)<1>newff函數(shù)語法
newff函數(shù)參數(shù)列表有很多的可選參數(shù),具體可以參考Matlab的幫助文檔,這里介紹newff函數(shù)的一種簡單的形式。語法:net=newff(A,B,{C},‘trainFun’)參數(shù):A:一個(gè)n×2的矩陣,第i行元素為輸入信號(hào)xi的最小值和最大值;B:一個(gè)k維行向量,其元素為網(wǎng)絡(luò)中各層節(jié)點(diǎn)數(shù);C:一個(gè)k維字符串行向量,每一分量為對(duì)應(yīng)層神經(jīng)元的激活函數(shù);trainFun:為學(xué)習(xí)規(guī)那么采用的訓(xùn)練算法。<2>常用的激活函數(shù)常用的激活函數(shù)有:a)線性函數(shù)(Lineartransferfunction)f(x)=x該函數(shù)的字符串為’purelin’。b)對(duì)數(shù)S形轉(zhuǎn)移函數(shù)(Logarithmicsigmoidtransferfunction)
該函數(shù)的字符串為’logsig’。c)雙曲正切S形函數(shù)(Hyperbolictangentsigmoidtransferfunction)也就是上面所提到的雙極S形函數(shù)。該函數(shù)的字符串為’tansig’。Matlab的安裝目錄下的toolbox\nnet\nnet\nntransfer子目錄中有所有激活函數(shù)的定義說明。<3>常見的訓(xùn)練函數(shù)
常見的訓(xùn)練函數(shù)有:traingd:梯度下降BP訓(xùn)練函數(shù)(Gradientdescentbackpropagation)traingdx:梯度下降自適應(yīng)學(xué)習(xí)率訓(xùn)練函數(shù)<4>網(wǎng)絡(luò)配置參數(shù)一些重要的網(wǎng)絡(luò)配置參數(shù)如下:net.trainparam.goal
:神經(jīng)網(wǎng)絡(luò)訓(xùn)練的目標(biāo)誤差net.trainparam.show
:顯示中間結(jié)果的周期net.trainparam.epochs:最大迭代次數(shù)net.trainParam.lr
:學(xué)習(xí)率(2)train函數(shù)
網(wǎng)絡(luò)訓(xùn)練學(xué)習(xí)函數(shù)。語法:[net,tr,Y1,E]
=train(net,X,Y)參數(shù):X:網(wǎng)絡(luò)實(shí)際輸入Y:網(wǎng)絡(luò)應(yīng)有輸出tr:訓(xùn)練跟蹤信息Y1:網(wǎng)絡(luò)實(shí)際輸出E:誤差矩陣(3)sim函數(shù)語法:Y=sim(net,X)參數(shù):net:網(wǎng)絡(luò)X:輸入給網(wǎng)絡(luò)的K×N矩陣,其中K為網(wǎng)絡(luò)輸入個(gè)數(shù),N為數(shù)據(jù)樣本數(shù)Y:輸出矩陣Q×N,其中Q為網(wǎng)絡(luò)輸出個(gè)數(shù)(4)MatlabBP網(wǎng)絡(luò)實(shí)例
我將Iris數(shù)據(jù)集分為2組,每組各75個(gè)樣本,每組中每種花各有25個(gè)樣本。其中一組作為以上程序的訓(xùn)練樣本,另外一組作為檢驗(yàn)樣本。為了方便訓(xùn)練,將3類花分別編號(hào)為1,2,3。使用這些數(shù)據(jù)訓(xùn)練一個(gè)4輸入〔分別對(duì)應(yīng)4個(gè)特征〕,3輸出〔分別對(duì)應(yīng)該樣本屬于某一品種的可能性大小〕的前向網(wǎng)絡(luò)。
Matlab程序如下:%讀取訓(xùn)練數(shù)據(jù)[f1,f2,f3,f4,class]=textread('trainData.txt','%f%f%f%f%f',150);%特征值歸一化[input,minI,maxI]=premnmx([f1,f2,f3,f4]');%構(gòu)造輸出矩陣s=length(class);output=zeros(s,3);fori=1:soutput(i,class(i))=1;end%創(chuàng)立神經(jīng)網(wǎng)絡(luò)net=newff(minmax(input),[103],{'logsig''purelin'},'traingdx');%設(shè)置訓(xùn)練參數(shù)net.trainparam.show=50;net.trainparam.epochs=500;net.trainparam.goal=0.01;net.trainParam.lr=0.01;%開始訓(xùn)練net=train(net,input,output');%讀取測試數(shù)據(jù)[t1t2t3t4c]=textread('testData.txt','%f%f%f%f%f',150);%測試數(shù)據(jù)歸一化testInput=tramnmx([t1,t2,t3,t4]',minI,maxI);%仿真Y=sim(net,testInput)%統(tǒng)計(jì)識(shí)別正確率[s1,s2]=size(Y);hitNum=0;fori=1:s2[m,Index]=max(Y(:,i));if(Index==c(i))hitNum=hitNum+1;endendsprintf('識(shí)別率是%3.3f%%',100*hitNum/s2)以上程序的識(shí)別率穩(wěn)定在95%左右,訓(xùn)練100次左右到達(dá)收斂,訓(xùn)練曲線如下列圖所示:圖9.訓(xùn)練性能表現(xiàn)(5)參數(shù)設(shè)置對(duì)神經(jīng)網(wǎng)絡(luò)性能的影響
我在實(shí)驗(yàn)中通過調(diào)整隱含層節(jié)點(diǎn)數(shù),選擇不通過的激活函數(shù),設(shè)定不同的學(xué)習(xí)率,<1>隱含層節(jié)點(diǎn)個(gè)數(shù)
隱含層節(jié)點(diǎn)的個(gè)數(shù)對(duì)于識(shí)別率的影響并不大,但是節(jié)點(diǎn)個(gè)數(shù)過多會(huì)增加運(yùn)算量,使得訓(xùn)練較慢。<2>激活函數(shù)的選擇
激活函數(shù)無論對(duì)于識(shí)別率或收斂速度都有顯著的影響。在逼近高次曲線時(shí),S形函數(shù)精度比線性函數(shù)要高得多,但計(jì)算量也要大得多。<3>學(xué)習(xí)率的選擇
學(xué)習(xí)率影響著網(wǎng)絡(luò)收斂的速度,以及網(wǎng)絡(luò)能否收斂。學(xué)習(xí)率設(shè)置偏小可以保證網(wǎng)絡(luò)收斂,但是收斂較慢。相反,學(xué)習(xí)率設(shè)置偏大那么有可能使網(wǎng)絡(luò)訓(xùn)練不收斂,影響識(shí)別效果。3.使用AForge.NET實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)
(1)AForge.NET簡介
AForge.NET是一個(gè)C#實(shí)現(xiàn)的面向人工智能、計(jì)算機(jī)視覺等領(lǐng)域的開源架構(gòu)。AForge.NET源代碼下的Neuro目錄包含一個(gè)神經(jīng)網(wǎng)絡(luò)的類庫。AForge.NET主頁:AForge.NET代碼下載:Aforge.Neuro工程的類圖如下:圖10.AForge.Neuro類庫類圖下面介紹圖9中的幾個(gè)根本的類:Neuron—神經(jīng)元的抽象基類Layer—層的抽象基類,由多個(gè)神經(jīng)元組成Network—神經(jīng)網(wǎng)絡(luò)的抽象基類,由多個(gè)層〔Layer〕組成IActivationFunction-激活函數(shù)〔activationfunction〕的接口IUnsupervisedLearning-無導(dǎo)師學(xué)習(xí)〔unsupervisedlearning〕算法的接口ISupervisedLearning-有導(dǎo)師學(xué)習(xí)〔supervisedlearning〕算法的接口(2)使用Aforge建立BP神經(jīng)網(wǎng)絡(luò)
使用AForge建立BP神經(jīng)網(wǎng)絡(luò)會(huì)用到下面的幾個(gè)類:<1>
SigmoidFunction:S形神經(jīng)網(wǎng)絡(luò)構(gòu)造函數(shù):publicSigmoidFunction(doublealpha)參數(shù)alpha決定S形函數(shù)的陡峭程度。<2>
ActivationNetwork:神經(jīng)網(wǎng)絡(luò)類構(gòu)造函數(shù):publicActivationNetwork(IActivationFunctionfunction,intinputsCount,params
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 大口井施工方案
- 鋼結(jié)構(gòu)bim施工方案
- 保冷施工方案
- 壩體施工方案
- 門衛(wèi)房施工方案
- 立桿施工方案
- 浙江文旅水景設(shè)計(jì)施工方案
- 消防水管帶壓開孔施工方案
- 開學(xué)班長發(fā)言稿
- 營口生物潔凈室施工方案
- 四年級(jí)上冊(cè)第四單元讓生活多一些綠色道德與法治教學(xué)反思11變廢為寶有妙招
- 嗓音(發(fā)聲)障礙評(píng)定與治療
- GB∕T 8081-2018 天然生膠 技術(shù)分級(jí)橡膠(TSR)規(guī)格導(dǎo)則
- 教學(xué)課件個(gè)人理財(cái)-2
- 最新人音版音樂二年級(jí)下冊(cè)全冊(cè)教案
- 航空航天概論(課堂PPT)
- 影視旅游作品對(duì)游客出游動(dòng)機(jī)及行為意向的影響研究
- 【圖文】煤礦井下常見的失爆現(xiàn)象
- 我的寒假生活模板
- 完整版三措兩案范文
- 貿(mào)易公司程序文件
評(píng)論
0/150
提交評(píng)論