




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第五章BP網(wǎng)絡(luò)第三講回顧BP網(wǎng)絡(luò)提供了多種訓(xùn)練,學(xué)習(xí)方法,可供選擇?;居?xùn)練網(wǎng)絡(luò)有兩類模式:增加方式(incrementalmode)和批處理方式(batchmode)。在增加方式中,每提交一次輸入數(shù)據(jù),權(quán)值和閾值都更新一次,增加方式更普遍的應(yīng)用于動態(tài)網(wǎng)絡(luò);在批處理方式中,當(dāng)所有的輸入數(shù)據(jù)都被提交以后,權(quán)值和閾值才被更新,在樣本數(shù)比較多時(shí),批處理方式比增加方式收斂速度快,而且許多改進(jìn)的快速訓(xùn)練算法只能采用批處理方法。傳統(tǒng)BP網(wǎng)絡(luò)具有思路清晰,結(jié)構(gòu)嚴(yán)謹(jǐn),工作狀態(tài)穩(wěn)定,可操作性強(qiáng)等特點(diǎn),并且由于隱節(jié)點(diǎn)的引入,使得一個(gè)三層的非線性網(wǎng)絡(luò)可以以任意精度逼近任何連續(xù)函數(shù),從而在模式識別、非線性映射、復(fù)雜系統(tǒng)仿真等許多領(lǐng)域得到廣泛應(yīng)用。FunctionApproximationfUnknownApproximator?fSupervisedLearningNeuralNetworkUnknownFunction++監(jiān)督學(xué)習(xí)基礎(chǔ)在監(jiān)督學(xué)習(xí)中,我們的目標(biāo)是要通過訓(xùn)練來完成函數(shù)估計(jì)的任務(wù)。通過觀察,構(gòu)造一個(gè)訓(xùn)練集T=(xi,yi),i=1,…,N。有一個(gè)學(xué)習(xí)算法,把訓(xùn)練集交給這個(gè)學(xué)習(xí)算法,它產(chǎn)生對預(yù)測規(guī)則的一個(gè)估計(jì)。學(xué)習(xí)算法可以根據(jù)估計(jì)的規(guī)則和真實(shí)的規(guī)則之間的誤差(通過樣本點(diǎn)上輸出的yi來衡量)修改它的估計(jì)。TypicalApplicationsofNNPatternClassificationFunctionApproximationTime-SeriesForecasting有限離散集合的問題總可以轉(zhuǎn)換為分類l∈{0,1,…,k},所以針對離散集合,我們只討論這樣的分類問題。對于連續(xù)域的問題,我們討論y∈Rm的問題,稱之為回歸問題。數(shù)學(xué)表示我們把訓(xùn)練集T中的(x1,…,xp)看作是p維歐氏空間中的點(diǎn)集。要求預(yù)測的規(guī)則看作是定義在p維歐氏空間中的一個(gè)函數(shù)Y=f(X)。我們的目標(biāo)是在整個(gè)p維的歐氏空間上,使用訓(xùn)練集T來逼近這個(gè)函數(shù)f(X)。通過這樣的轉(zhuǎn)換,我們就可以利用歐氏空間的幾何性質(zhì)和概率推理的工具預(yù)測有意義嗎?一輛車以5米/秒的速度沿直線行駛。1秒以后它距離上一秒所在地有多遠(yuǎn)?
足球裁判拋起一個(gè)硬幣,它落下來的時(shí)候是正面還是反面?
知道了背后的物理原理,我們能做出完全準(zhǔn)確的預(yù)測嗎?第一個(gè)問題的答案,大家都知道,是5米。第二個(gè)問題,答案是不知道。知道的是,如果拋很多次,得到正面的次數(shù)和得到反面的次數(shù)接近1:1。第一類問題,從當(dāng)前時(shí)刻的狀態(tài),能精確得出下一時(shí)刻的狀態(tài),屬于決定性事件。第二類問題,永遠(yuǎn)無法決定下一刻會發(fā)生什么,只知道各種結(jié)果出現(xiàn)的概率,屬于隨機(jī)性事件。這兩類事件共同組成了我們生存的這個(gè)世界。牛頓的經(jīng)典力學(xué)公式可以描述地球上宏觀物體的運(yùn)動規(guī)律,而賭城老板賺錢的法寶都建立在概率論的基礎(chǔ)上。預(yù)測一個(gè)問題,首先要弄清楚正在研究的是哪類事件。兩者的差別這么大,自然也要選擇不同的分析方法。預(yù)測決定性的事件,關(guān)鍵在于找到現(xiàn)象背后隱藏的公式,給出現(xiàn)象隨時(shí)間變化的規(guī)律。比如第一個(gè)問題,“一輛車以5米/秒的速度沿直線行駛”,和這句話等價(jià)的公式是dx/dt=5,這樣小車在任意時(shí)刻t所處的位置x都可以用x=5t算出來了。標(biāo)準(zhǔn)BP算法的誤差空間是N維空間中一個(gè)形狀極為復(fù)雜的曲面單權(quán)值雙權(quán)值在以下幾個(gè)缺陷:(1)傳統(tǒng)的BP網(wǎng)絡(luò)既然是一個(gè)非線性問題,這就不可避免地存在局部極小問題。網(wǎng)絡(luò)的極值通過沿局部改善的方向一小步一小步進(jìn)行修正,力圖達(dá)到使誤差函數(shù)E最小化的全局解,但實(shí)際上常得到的是局部最優(yōu)點(diǎn)。(2)學(xué)習(xí)過程中,下降慢,學(xué)習(xí)速度緩,易出現(xiàn)一個(gè)長時(shí)間的誤差平坦區(qū),即出現(xiàn)平臺。(3)網(wǎng)絡(luò)結(jié)構(gòu)選擇不一,網(wǎng)絡(luò)過大,在訓(xùn)練中效率不高,而且還會由于過擬合造成網(wǎng)絡(luò)性能脆弱,容錯(cuò)性下降,浮點(diǎn)溢出,而太小的網(wǎng)絡(luò)可能根本不收斂。在實(shí)際應(yīng)用中,網(wǎng)絡(luò)結(jié)構(gòu)人為性較大,缺乏規(guī)則指導(dǎo)。訓(xùn)練算法matlab特點(diǎn)最速梯度下降算法traingd收斂速度慢,網(wǎng)絡(luò)易陷于局部極小,學(xué)習(xí)過程常發(fā)生振蕩有動量的梯度下降算法traingdm收斂速度快于traingd學(xué)習(xí)率可變的BP算法traingdx收斂速度快于traingd,僅用于批量模式訓(xùn)練彈性BP算法trainrp用于批量模式訓(xùn)練,收斂速度快,數(shù)據(jù)占用存儲空間小Fletcher-Reeves變梯度算法traincgf是一種數(shù)據(jù)占用存儲空間最小的變梯度算法,且速度通常比traingdx快得多,在連接權(quán)的數(shù)量很多時(shí),時(shí)常選用該算法訓(xùn)練算法matlab特點(diǎn)Polak-Ribiére變梯度算法traincgp存儲空間略大于traincgp,但對有些問題有較快的收斂速度Powell-Beale變梯度算法traincgb性能略好于traincgp,但存儲空間較之略大固定變比的變梯度算法trainscg比其他變梯度算法需要更多迭代次數(shù),但無需在迭代中進(jìn)行線性搜索使每次迭代的計(jì)算量大大減小,存儲空間與traincgf近似訓(xùn)練算法matlab特點(diǎn)BFGS擬牛頓算法trainbfg每次迭代過程所需的計(jì)算量和存儲空間大于變梯度算法,數(shù)據(jù)存儲量近似于Hessian矩陣,對規(guī)模較小的網(wǎng)絡(luò)更有效變梯度法與擬牛頓法的折中算法trainoss變梯度法與擬牛頓法的折中算法Levenberg-Marquardt算法trainlm對中等規(guī)模的前饋網(wǎng)絡(luò)(多達(dá)數(shù)百個(gè)連接權(quán))的最快速算法貝葉斯歸一化法trainbr可使網(wǎng)絡(luò)具有較強(qiáng)的泛化能力,避免了以嘗試的方法去決定最佳網(wǎng)絡(luò)規(guī)模的大小5.6BP網(wǎng)絡(luò)的MATLAB實(shí)現(xiàn)一、神經(jīng)網(wǎng)絡(luò)歸一化數(shù)據(jù)歸一化,就是將數(shù)據(jù)映射到[0,1]或[-1,1]區(qū)間或更小的區(qū)間,比如(0.1,0.9)。歸一化的具體作用是歸納樣本的統(tǒng)計(jì)分布性。歸一化在0-1之間是統(tǒng)計(jì)的概率分布,歸一化在-1-+1之間是統(tǒng)計(jì)的坐標(biāo)分布。歸一化有同一、統(tǒng)一和合一的意思。無論是為了建模還是為了計(jì)算,首先基本度量單位要同一,神經(jīng)網(wǎng)絡(luò)是以樣本在事件中的統(tǒng)計(jì)分別幾率來進(jìn)行訓(xùn)練(概率計(jì)算)和預(yù)測的,歸一化是必要的。為什么要?dú)w一化處理?(1)輸入數(shù)據(jù)的單位不一樣,有些數(shù)據(jù)的范圍可能特別大,導(dǎo)致的結(jié)果是神經(jīng)網(wǎng)絡(luò)收斂慢、訓(xùn)練時(shí)間長。所謂奇異樣本數(shù)據(jù)指的是相對于其他輸入樣本特別大或特別小的樣本矢量。下面舉例:m=[0.110.150.320.4530;0.130.240.270.2545];其中的第五列數(shù)據(jù)相對于其他4列數(shù)據(jù)就可以成為奇異樣本數(shù)據(jù)。奇異樣本數(shù)據(jù)存在所引起的網(wǎng)絡(luò)訓(xùn)練時(shí)間增加,并可能引起網(wǎng)絡(luò)無法收斂,所以對于訓(xùn)練樣本存在奇異樣本數(shù)據(jù)的數(shù)據(jù)集在訓(xùn)練之前,最好先歸一化。(2)數(shù)據(jù)范圍大的輸入在模式分類中的作用可能會偏大,而數(shù)據(jù)范圍小的輸入作用就可能會偏小。(3)由于神經(jīng)網(wǎng)絡(luò)輸出層的激活函數(shù)的值域是有限制的,因此需要將網(wǎng)絡(luò)訓(xùn)練的目標(biāo)數(shù)據(jù)映射到激活函數(shù)的值域。例如神經(jīng)網(wǎng)絡(luò)的輸出層若采用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。歸一化算法一種簡單而快速的歸一化算法是線性轉(zhuǎn)換算法。線性轉(zhuǎn)換算法常見有兩種形式: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í)這條式子適用。y=2*(x-min)/(max-min)-1這條公式將數(shù)據(jù)歸一化到[-1,1]區(qū)間。當(dāng)激活函數(shù)采用雙極S形函數(shù)(值域?yàn)?-1,1))時(shí)這條式子適用。Matlab數(shù)據(jù)歸一化處理函數(shù)1.premnmx、postmnmx、tramnmx2.restd、poststd、trastdpremnmx指的是歸一到[-11],prestd歸一到單位方差和零均值,具體用那種方法就和你的具體問題有關(guān)了。premnmx語句[Pn,minp,maxp,Tn,mint,maxt]=premnmx(P,T)其中P,T分別為原始輸入和輸出數(shù)據(jù),minp和maxp分別為P中的最小值和最大值。mint和maxt分別為T的最小值和最大值。作用:將矩陣P,T歸一化到[-1,1],主要用于歸一化處理訓(xùn)練數(shù)據(jù)集。tramnmx我們在訓(xùn)練網(wǎng)絡(luò)時(shí)如果所用的是經(jīng)過歸一化的樣本數(shù)據(jù),那么以后使用網(wǎng)絡(luò)時(shí)所用的新數(shù)據(jù)也應(yīng)該和樣本數(shù)據(jù)接受相同的預(yù)處理,這就要用到tramnmx。[Pn]=tramnmx(P,minp,maxp)其中P和Pn分別為變換前、后的輸入數(shù)據(jù),maxp和minp分別為premnmx函數(shù)找到的最大值和最小值。作用:主要用于歸一化處理待分類的輸入數(shù)據(jù)。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ù)范圍。二、網(wǎng)絡(luò)的結(jié)構(gòu)選擇輸入層和輸出層節(jié)點(diǎn)數(shù)選擇由應(yīng)用要求決定。輸入節(jié)點(diǎn)數(shù)一般等于要訓(xùn)練的樣本矢量維數(shù),可以是原始數(shù)據(jù)的維數(shù)或提取的特征維數(shù);輸出單元數(shù)在分類網(wǎng)絡(luò)中取類別數(shù)m或log2m,在逼近網(wǎng)絡(luò)中取要逼近的函數(shù)輸出空間維數(shù)。當(dāng)網(wǎng)絡(luò)用于工業(yè)過程辨識或時(shí)間序列預(yù)測建模時(shí),輸入節(jié)點(diǎn)數(shù)的選擇應(yīng)由非線性系統(tǒng)定階的結(jié)果確定。網(wǎng)絡(luò)的隱層數(shù)和隱節(jié)點(diǎn)數(shù)決定了網(wǎng)絡(luò)的規(guī)模,而網(wǎng)絡(luò)的規(guī)模與其性能密切相關(guān)。神經(jīng)網(wǎng)絡(luò)的規(guī)模越大,網(wǎng)絡(luò)中的自由參數(shù)就越多;反之,網(wǎng)絡(luò)中的自由參數(shù)就越少。如果神經(jīng)網(wǎng)絡(luò)用于逼近一個(gè)目標(biāo)函數(shù)(分類可以看成函數(shù)逼近的特殊情況),則當(dāng)網(wǎng)絡(luò)規(guī)模過小,神經(jīng)網(wǎng)絡(luò)逼近能力不足,容易導(dǎo)致欠擬合;網(wǎng)絡(luò)規(guī)模過大,神經(jīng)網(wǎng)絡(luò)逼近能力過剩,則容易導(dǎo)致過擬合;因此,確定網(wǎng)絡(luò)規(guī)模是神經(jīng)網(wǎng)絡(luò)設(shè)計(jì)的一項(xiàng)重要內(nèi)容。所謂過擬合問題學(xué)習(xí)中存在的最大問題是過擬合(overfitting),即由于訓(xùn)練樣本過多,或者對訓(xùn)練樣本逼近的"過好",造成反而不能真正的反映輸入輸出的真實(shí)函數(shù)關(guān)系。造成過擬合現(xiàn)象的原因,主要是當(dāng)輸入數(shù)據(jù)中混有噪聲干擾時(shí),過分的逼近"記住"了噪聲信息,從而得到的函數(shù)關(guān)系式被噪聲扭曲了。解決這一問題的辦法,一是選取的訓(xùn)練樣本數(shù)量要適當(dāng);二是選擇訓(xùn)練樣本時(shí)要提取那些有代表性的樣本;三是訓(xùn)練中精度要求要適當(dāng)。據(jù)我的理解,包括樣本要具有典型性、樣本間相關(guān)性小等等。這里所說的典型,是指有限的訓(xùn)練樣本應(yīng)該盡可能的反映整個(gè)輸入空間的統(tǒng)計(jì)特性,舉個(gè)最簡單的例子,如果系統(tǒng)的輸入是三維笛卡爾空間中某個(gè)空間范圍的點(diǎn),那么訓(xùn)練樣本就應(yīng)該盡可能均勻的分布在這個(gè)區(qū)域。否則,如果訓(xùn)練樣本集中在某個(gè)子區(qū)域,或者甚至共線,那么借此估計(jì)出的函數(shù)關(guān)系肯定是有誤差的,坐井觀天式的視野如何能夠看清廣闊世界的道理,又憑什么能夠獲得泛化能力?訓(xùn)練樣本的代表性訓(xùn)練中精度要求訓(xùn)練中精度要求一般不要要求的過高,應(yīng)該控制在一定水平下即可??刂颇P偷姆夯芰κ侵?,訓(xùn)練后的控制器應(yīng)該能對未知的樣本也能達(dá)到盡可能理想的輸出。泛化能力受訓(xùn)練過程的影響很大,正如上面討論過的,當(dāng)選擇的訓(xùn)練樣本個(gè)數(shù)適當(dāng)、代表性強(qiáng)和訓(xùn)練精度適當(dāng)時(shí),隨機(jī)噪聲就能夠被盡量的抵消,泛化結(jié)果就較好。隱單元的數(shù)目與問題的要求、輸入/輸出單元的數(shù)目都有著直接關(guān)系,數(shù)目太多會導(dǎo)致學(xué)習(xí)時(shí)間過長、誤差不一定最佳,也會導(dǎo)致容錯(cuò)性差、不能識別以前沒有看到的樣本,因此一定存在一個(gè)最佳的隱單元數(shù)。(如有需要請查相關(guān)資料)。還有一種途徑:首先使隱單元的數(shù)目可變,或者放入足夠多的隱單元,通過學(xué)習(xí)將那些不起作用的隱單元剔除,直到不可收縮為止。同樣,也可以在開始時(shí)放入比較少的神經(jīng)元,學(xué)習(xí)到一定次數(shù)后,如果不成功再增加隱單元的數(shù)目,直到達(dá)到比較合理的隱單元數(shù)目為止。(個(gè)人認(rèn)為后面這種辦法比經(jīng)驗(yàn)公式可行,而且往往根據(jù)經(jīng)驗(yàn)公式確定后還是需要通過后面的辦法最后確定)三、學(xué)習(xí)速率的選取學(xué)習(xí)速率決定每一次循環(huán)中所產(chǎn)生的權(quán)值變化量。大的學(xué)習(xí)速率可能導(dǎo)致系統(tǒng)的不穩(wěn)定,但小的學(xué)習(xí)速率會導(dǎo)致學(xué)習(xí)時(shí)間較長,可能收斂速度很慢,不過能保證網(wǎng)絡(luò)的誤差值不跳出誤差表明的低谷而最終趨于最小誤差值。所以在一般情況下,傾向于選取較小的學(xué)習(xí)速率以保證系統(tǒng)的穩(wěn)定性。學(xué)習(xí)速率的范圍一般選取在之間。四、訓(xùn)練集和測試集數(shù)據(jù)一般需要將樣本分成獨(dú)立的三部分訓(xùn)練集(trainset),驗(yàn)證集(validationset)和測試集(testset)。其中訓(xùn)練集用來估計(jì)模型,驗(yàn)證集用來確定網(wǎng)絡(luò)結(jié)構(gòu)或者控制模型復(fù)雜程度的參數(shù),而測試集則檢驗(yàn)最終選擇最優(yōu)的模型的性能如何。一個(gè)典型的劃分是訓(xùn)練集占總樣本的50%,而其它各占25%,三部分都是從樣本中隨機(jī)抽取。樣本少的時(shí)候,上面的劃分就不合適了。常用的是留少部分做測試集。對N個(gè)樣本采用K折交叉驗(yàn)證法。就是將樣本打亂,然后均勻分成K份,輪流選擇其中K-1份訓(xùn)練,剩余的一份做驗(yàn)證,計(jì)算預(yù)測誤差平方和,最后把K次的預(yù)測誤差平方和再做平均作為選擇最優(yōu)模型結(jié)構(gòu)的依據(jù)。特別的K取N,就是留一法(leaveoneout)。五、期望誤差的選取在設(shè)計(jì)網(wǎng)絡(luò)的訓(xùn)練過程中,期望誤差值也應(yīng)當(dāng)通過對比訓(xùn)練后確定一個(gè)合適的值,這個(gè)所謂的“合適”,是相對于所需要的隱含層的節(jié)點(diǎn)數(shù)來確定的。一般情況下,作為對比,可以同時(shí)對兩個(gè)不同期望誤差值的網(wǎng)絡(luò)進(jìn)行訓(xùn)練,最后通過綜合因素的考慮來確定采用其中一個(gè)網(wǎng)絡(luò)。logsig導(dǎo)數(shù)matlab函數(shù):dA_dN=dlogsig(N,A)tansigmatlab函數(shù):dA_dN=dtansig(N,A)六、激活函數(shù)Matlab的安裝目錄下的toolbox\nnet\nnet\nntransfer子目錄中有所有激活函數(shù)的定義說明。七、神經(jīng)網(wǎng)絡(luò)MATLAB工具箱介紹第一步是建立網(wǎng)絡(luò)對象。函數(shù)newff()建立一個(gè)可訓(xùn)練的前饋網(wǎng)絡(luò)。這需要4個(gè)輸入?yún)?shù)。第一個(gè)參數(shù)是一個(gè)Rx2的矩陣以定義R個(gè)輸入向量的最小值和最大值。第二個(gè)參數(shù)是一個(gè)設(shè)定每層神經(jīng)元個(gè)數(shù)的數(shù)組。第三個(gè)參數(shù)是包含每層用到的傳遞函數(shù)名稱。最后一個(gè)參數(shù)是用到的訓(xùn)練函數(shù)的名稱。下面命令將創(chuàng)建一個(gè)二層網(wǎng)絡(luò)。它的輸入是兩個(gè)元素的向量,第一層有三個(gè)神經(jīng)元(3),第二層有一個(gè)神經(jīng)元(1)。第一層的傳遞函數(shù)是tan-sigmoid,輸出層的傳遞函數(shù)是linear。輸入向量的第一個(gè)元素的范圍是-1到2[-12],輸入向量的第二個(gè)元素的范圍是0到5[05],訓(xùn)練函數(shù)是traingd。net=newff([-12;05],[3,1],{'tansig','purelin'},'traingd')在訓(xùn)練前饋網(wǎng)絡(luò)之前,權(quán)重和偏置必須被初始化。這個(gè)命令建立了網(wǎng)絡(luò)對象并且初始化了網(wǎng)絡(luò)權(quán)重和偏置,因此網(wǎng)絡(luò)就可以進(jìn)行訓(xùn)練了。我們可能要多次重新初始化權(quán)重或者進(jìn)行自定義的初始化。初始化權(quán)重和偏置的工作用命令init來實(shí)現(xiàn)。這個(gè)函數(shù)接收網(wǎng)絡(luò)對象并初始化權(quán)重和偏置后返回網(wǎng)絡(luò)對象。net=init(net);可以通過設(shè)定網(wǎng)絡(luò)參數(shù)net.initFcn和net.layer{i}.initFcn這一技巧來初始化一個(gè)給定的網(wǎng)絡(luò)。初始化initnet.initFcn用來決定整個(gè)網(wǎng)絡(luò)的初始化函數(shù)。那么參數(shù)net.layer{i}.initFcn也要設(shè)定用來決定每一層的初始化函數(shù)。對前饋網(wǎng)絡(luò)來說,有兩種不同的初始化方式經(jīng)常被用到:initwb和initnw。initwb函數(shù)根據(jù)每一層自己的初始化參數(shù)(net.inputWeights{i,j}.initFcn)初始化權(quán)重矩陣和偏置。前饋網(wǎng)絡(luò)的初始化權(quán)重通常設(shè)為rands,它使權(quán)重在-1到1之間隨機(jī)取值。這種方式經(jīng)常用在轉(zhuǎn)換函數(shù)是線性函數(shù)時(shí)。initnw通常用于轉(zhuǎn)換函數(shù)是曲線函數(shù)。例如,我們用newff創(chuàng)建的網(wǎng)絡(luò),它缺省用initnw來初始化第一層。如果我們想要用rands重新初始化第一層的權(quán)重和偏置,我們用以下命令:
net.layers{1}.initFcn='initwb';
net.inputWeights{1,1}.initFcn='rands';
net.biases{1,1}.initFcn='rands';
net.biases{2,1}.initFcn='rands';
net=init(net);IW:輸入層到隱含層的權(quán)重矩陣LW:隱含層和輸出層間的權(quán)重矩陣b:閥值向量如網(wǎng)絡(luò)為net,輸入層和輸出均為一個(gè)接點(diǎn)情況下,則用net.IW{1,1}可以看到第一個(gè)輸入接點(diǎn)到第一隱含層的權(quán)重向量;注意I表示輸入,第2個(gè)表示源,第1個(gè)表示目的。net.LW{2,1}可以看到隱含層到輸出層的權(quán)值向量;注意L表示層的權(quán)重,net.b{1,1}是隱含層的閥值向量,net.b{2,1}是輸出接點(diǎn)的閥值;在多輸入輸出下先用net.IWnet.LWnet.b查看各矩陣結(jié)構(gòu),再相應(yīng)用net.IW{?,?}等語句查到相關(guān)的向量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:誤差矩陣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ù)建立一個(gè)神經(jīng)網(wǎng)絡(luò)5個(gè)輸入單元,輸入值范圍1.5,隱層是5個(gè)神經(jīng)元,激勵(lì)函數(shù)是logsig,一個(gè)線性輸出單元,激勵(lì)函數(shù)是purelin,網(wǎng)絡(luò)訓(xùn)練函數(shù)采用traingdx。訓(xùn)練目標(biāo)誤差是0.001,預(yù)設(shè)訓(xùn)練次數(shù)是200000具體m程序net=newff([01.5;01.5;01.5;01.5;01.5],[51],{'logsig''purelin'},'traingdx');net.trainParam.goal=0.001;訓(xùn)練所要達(dá)到的精度net.trainParam.epochs=200000;最大訓(xùn)練次數(shù)[net,tr]=train(net,p,t);lw1=net.IW{1}b1=net.b{1}lw2=net.LW{2}b2=net.b{2}多層網(wǎng)絡(luò)的簡化表示
BP神經(jīng)網(wǎng)絡(luò)進(jìn)行交通預(yù)測的Matlab源代碼%bp神經(jīng)網(wǎng)絡(luò)進(jìn)行交通預(yù)測的Matlab源代碼%BP神經(jīng)網(wǎng)絡(luò)用于預(yù)測%使用平臺-Matlab7.0%數(shù)據(jù)為1986年到2000年的交通量,網(wǎng)絡(luò)為3輸入,1輸出%15組數(shù)據(jù),其中9組為正常訓(xùn)練數(shù)據(jù),3組為變量數(shù)據(jù),3組為測試數(shù)據(jù)clcclear%---------------------------------------------------%原始數(shù)據(jù)%---------------------------------------------------year=1986:2000;%數(shù)據(jù)是從1986到2000年的p=[493372445;372445176;445176235;176235378;235378429;...378429561;429561651;561651467;651467527;467527668;...527668841;668841526;841526480;526480567;480567685]';%輸入數(shù)據(jù),共15組,每組3個(gè)輸入t=[176235378429561651467527668841526480567685507];%輸出數(shù)據(jù),共15組,每組1個(gè)輸出%---------------------------------------------------%數(shù)據(jù)歸一化處理%mapminmax函數(shù)默認(rèn)將數(shù)據(jù)歸一化到[-1,1],調(diào)用形式如下%[y,ps]=mapminmax(x,ymin,ymax)%x需歸化的數(shù)據(jù)輸入%ymin,ymax為需歸化到的范圍,不填默認(rèn)為歸化到[-1,1]%y歸一化后的樣本數(shù)據(jù)%ps處理設(shè)置,ps主要在結(jié)果反歸一化中需要調(diào)用,或者使用同樣的settings歸一化另外一組數(shù)據(jù)%---------------------------------------------------[normInput,ps]=mapminmax(p);[normTarget,ts]=mapminmax(t);%將輸入的15組數(shù)據(jù)的20%,即3組,用來作為測試數(shù)據(jù);%樣本的20%,即3組,用來作為變化數(shù)據(jù);%另外9組用來正常輸入,用來訓(xùn)練;%dividevec()用來重新隨機(jī)抽取上述三種分類的數(shù)據(jù),原來的順序被打亂%函數(shù)調(diào)用的語法%[trainV,valV,testV]=dividevec(p,t,valPercent,testPercent)%輸入p為輸入數(shù)據(jù),t為輸出數(shù)據(jù)%valPercent為訓(xùn)練用的變化數(shù)據(jù)在總輸入中的百分比%testPercent為訓(xùn)練用的測試數(shù)據(jù)在總輸入中的百分比%輸出trainV,valV,testV分別為按亂序及相應(yīng)百分比,抽取得到的數(shù)據(jù)%---------------------------------------------------testPercent=0.20;%AdjustasdesiredvalidatePercent=0.20;%Adustasdesired[trainSamples,validateSamples,testSamples]=dividevec(normInput,normTarget,validatePercent,testPercent);%---------------------------------------------------%---------------------------------------------------%設(shè)置網(wǎng)絡(luò)參數(shù)%---------------------------------------------------NodeNum1=20;%隱層第一層節(jié)點(diǎn)數(shù)NodeNum2=40;%隱層第二層節(jié)點(diǎn)數(shù)TypeNum=1;%輸出維數(shù)TF1='tansig';TF2='tansig';TF3='tansig';%各層傳輸函數(shù),如果訓(xùn)練結(jié)果不理想,可以嘗試更改傳輸函數(shù),以下這些是各類傳輸函數(shù)%TF1='tansig';TF2='logsig';%TF1='logsig';TF2='purelin';%TF1='tansig';TF2='tansig';%TF1='logsig';TF2='logsig';%TF1='purelin';TF2='purelin';%創(chuàng)建BP網(wǎng)絡(luò)net=newff(minmax(normInput),[NodeNum1,NodeNum2,TypeNum],{TF1TF2TF3},'traingdx');%創(chuàng)建四層BP網(wǎng)絡(luò)%---------------------------------------------------%---------------------------------------------------設(shè)置訓(xùn)練參數(shù)net.trainParam.epochs=10000;%訓(xùn)練次數(shù)設(shè)置net.trainParam.goal=1e-6;%訓(xùn)練目標(biāo)設(shè)置net.trainParam.lr=0.01;%學(xué)習(xí)率設(shè)置%------------------------------------------------------------------------%---------------------------------------------------%指定訓(xùn)練函數(shù)%---------------------------------------------------%net.trainFcn='traingd';%梯度下降算法%net.trainFcn='traingdm';%動量梯度下降算法%%net.trainFcn='traingda';%變學(xué)習(xí)率梯度下降算法%net.trainFcn='traingdx';%變學(xué)習(xí)率動量梯度下降算法%有代表性的五種算法為:'traingdx','trainrp','trainscg','trainoss','trainlm'net.trainfcn='traingdm';[net,tr]=train(net,trainSamples.P,trainSamples.T);%---------------------------------------------------%---------------------------------------------------%訓(xùn)練完成后,就可以調(diào)用sim()函數(shù),進(jìn)行仿真了%---------------------------------------------------[normTrainOutput,Pf,Af,E,trainPerf]=sim(net,trainSamples.P);%正常輸入的9組p數(shù)據(jù),BP得到的結(jié)果t[normValidateOutput,Pf,Af,E,validatePerf]=sim(net,validateSamples.P);%用作變量3的數(shù)據(jù)p,BP得到的結(jié)果t[normTestOutput,Pf,Af,E,testPerf]=sim(net,testSamples.P);%用作測試的3組數(shù)據(jù)p,BP得到的結(jié)果t%---------------------------------------------------%仿真后結(jié)果數(shù)據(jù)反歸一化,如果需要預(yù)測,只需將預(yù)測的數(shù)據(jù)P填入%將獲得預(yù)測結(jié)果t%---------------------------------------------------trainOutput=mapminmax('reverse',normTrainOutput,ts);%正常輸入的9組p數(shù)據(jù),BP得到的歸一化后的結(jié)果ttrainInsect=mapminmax('reverse',trainSamples.T,ts);%正常輸入的9組數(shù)據(jù)tvalidateOutput=mapminmax('reverse',normValidateOutput,ts);%用作變量3的數(shù)據(jù)p,BP得到的歸一化的結(jié)果tvalidateInsect=mapminmax('reverse',validateSamples.T,ts);%用作變量3的數(shù)據(jù)ttestOutput=mapminmax('reverse',normTestOutput,ts);%用作變量3組數(shù)據(jù)p,BP得到的歸一化的結(jié)果ttestInsect=mapminmax('reverse',testSamples.T,ts);%用作變量3組數(shù)據(jù)t%---------------------------------------------------
數(shù)據(jù)分析和繪圖%---------------------------------------------------figureplot(1:12,[trainOutputvalidateOutput],'b-',1:12,[trainInsectvalidateInsect],'g--',13:15,testOutput,'m*',13:15,testInsect,'ro');title('o為真實(shí)值,*為預(yù)測值')xlabel('年份');ylabel(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 防拐主題班會課件
- 山西旅游職業(yè)學(xué)院《莊子》2023-2024學(xué)年第二學(xué)期期末試卷
- 吉林農(nóng)業(yè)科技學(xué)院《基礎(chǔ)護(hù)理實(shí)踐技能》2023-2024學(xué)年第二學(xué)期期末試卷
- 沈陽航空職業(yè)技術(shù)學(xué)院《市政與軌道交通工程計(jì)量與計(jì)價(jià)》2023-2024學(xué)年第二學(xué)期期末試卷
- 杭州萬向職業(yè)技術(shù)學(xué)院《物流基地管理》2023-2024學(xué)年第二學(xué)期期末試卷
- 江西服裝學(xué)院《體內(nèi)藥物分析學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 大連理工大學(xué)《數(shù)據(jù)分析導(dǎo)論》2023-2024學(xué)年第二學(xué)期期末試卷
- 廣東食品藥品職業(yè)學(xué)院《體育項(xiàng)目解說與評論》2023-2024學(xué)年第二學(xué)期期末試卷
- 永定縣2025年數(shù)學(xué)五下期末調(diào)研試題含答案
- 2024-2025學(xué)年甘肅省武威第十八中學(xué)高三第一次模擬(期末)考試歷史試題試卷含解析含解析
- 《財(cái)政學(xué)》試題庫及答案
- 廣東省廣州市白云區(qū)2023-2024學(xué)年八年級上學(xué)期期末英語試題(答案)
- 品管圈PDCA案例-提高成人術(shù)后疼痛評估與護(hù)理規(guī)范率醫(yī)院品質(zhì)管理成果匯報(bào)
- 我的家鄉(xiāng)湖南岳陽
- 《QOHAB123-2023高端G系列冷鐓鋼用熱軋盤條》
- 揚(yáng)塵防治(治理)監(jiān)理實(shí)施細(xì)則(范本)
- 華為智慧礦山解決方案
- 幼兒園辦園行為督導(dǎo)評估指標(biāo)體系表
- 房地產(chǎn)項(xiàng)目能源管理制度制定
- 核心素養(yǎng)下小學(xué)道德與法治實(shí)踐性作業(yè)設(shè)計(jì)探究
- DB11∕T 161-2012 融雪劑 地方標(biāo)準(zhǔn)
評論
0/150
提交評論