版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、人工神經(jīng)網(wǎng)絡(luò)及其應(yīng)用實(shí)例人工神經(jīng)網(wǎng)絡(luò)是在現(xiàn)代神經(jīng)科學(xué)研究成果基礎(chǔ)上提出的一種抽象數(shù)學(xué)模型,它以某種簡化、抽象和模擬的方式,反映了大腦功能的若干基本特征,但并非其逼真的描寫。人工神經(jīng)網(wǎng)絡(luò)可概括定義為:由大量簡單元件廣泛互連而成的復(fù)雜網(wǎng)絡(luò)系統(tǒng)。所謂簡單元件,即人工神經(jīng)元,是指它可用電子元件、光學(xué)元件等模擬,僅起簡單的輸入輸出變換 y = s (x) 的作用。下圖是 3中常用的元件類型:線性元件: y = 0.3x,可用線性代數(shù)法分析,但是功能有限,現(xiàn)在已不太常用。21.510.50-0.5-1-1.5-2-6-4-20246連續(xù)型非線性元件: y = tanh(x),便于解析性計(jì)算及器件模擬,是當(dāng)
2、前研究的主要元件之一。Page 1 of 2521.510.50-0.5-1-1.5-2-6-4-20246ì1, x ³ 0î-1, x < 0,便于理論分析及閾值邏輯器件實(shí)現(xiàn),也是當(dāng)前研究的主要元件之一。21.510.50-0.5-1-1.5-2-6-4-20246Page 2 of 25離散型非線性元件: y = í每一神經(jīng)元有許多輸入、輸出鍵,各神經(jīng)元之間以連接鍵(又稱突觸)相連,它決定神經(jīng)元之間的連接強(qiáng)度(突觸強(qiáng)度)和性質(zhì)(興奮或抑制),即決定神經(jīng)元間相互作用的強(qiáng)弱和正負(fù),共有三種類型:興奮型連接、抑制型連接、無連接。這樣,N 個(gè)神經(jīng)元(
3、一般 N 很大)構(gòu)成一個(gè)相互影響的復(fù)雜網(wǎng)絡(luò)系統(tǒng),通過調(diào)整網(wǎng)絡(luò)參數(shù),可使人工神經(jīng)網(wǎng)絡(luò)具有所需要的特定功能,即學(xué)習(xí)、訓(xùn)練或自組織過程。一個(gè)簡單的人工神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖如下所示:上圖中,左側(cè)為輸入層(輸入層的神經(jīng)元個(gè)數(shù)由輸入的維度決定),右側(cè)為輸出層(輸出層的神經(jīng)元個(gè)數(shù)由輸出的維度決定),輸入層與輸出層之間即為隱層。輸入層節(jié)點(diǎn)上的神經(jīng)元接收外部環(huán)境的輸入模式,并由它傳遞給相連隱層上的各個(gè)神經(jīng)元。隱層是神經(jīng)元網(wǎng)絡(luò)的內(nèi)部處理層,這些神經(jīng)元在網(wǎng)絡(luò)內(nèi)部構(gòu)成中間層,不直接與外部輸入、輸出打交道。人工神經(jīng)網(wǎng)絡(luò)所具有的模式變換能力主要體現(xiàn)在隱層的神經(jīng)元上。輸出層用于產(chǎn)生神經(jīng)網(wǎng)絡(luò)的輸出模式。多層神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)中有代表性的
4、有前向網(wǎng)絡(luò)(BP 網(wǎng)絡(luò))模型、Page 3 of 25多層側(cè)抑制神經(jīng)網(wǎng)絡(luò)模型和帶有反饋的多層神經(jīng)網(wǎng)絡(luò)模型等。本文主要探討前向網(wǎng)絡(luò)模型。多層前向神經(jīng)網(wǎng)絡(luò)不具有側(cè)抑制和反饋的連接方式,即不具有本層之間或指向前一層的連接弧,只有指向下一層的連接弧。代表是BP 神經(jīng)網(wǎng)絡(luò):輸入模式由輸入層進(jìn)入網(wǎng)絡(luò),經(jīng)中間各隱層的順序變換,最后由輸出層產(chǎn)生一個(gè)輸出模式,如下圖所示:輸入層隱層輸出層多層前向神經(jīng)網(wǎng)絡(luò)由隱層神經(jīng)元的非線性處理衍生它的能力,這個(gè)任務(wù)的關(guān)鍵在于將神經(jīng)元的加權(quán)輸入非線性轉(zhuǎn)換成一個(gè)輸出的非線性激勵(lì)函數(shù)。下圖給出了一個(gè)接收 n 個(gè)輸入 x1, x2 , , xn 的神經(jīng)元:b1x1w1x2w2å
5、;sywnxnPage 4 of 25神經(jīng)元的輸出由下式給出:nxj =1這里輸入的加權(quán)和(括號內(nèi)部分)由一個(gè)非線性函數(shù)傳遞, b 表示與偏差輸入相關(guān)的權(quán)值, w j 表示與第 j 個(gè)輸入相關(guān)的權(quán)值。使用最廣泛的函數(shù)是 S 形函數(shù),其曲線家族包括對數(shù)函數(shù)和雙曲正切函數(shù),這些都可用來對人口動(dòng)態(tài)系統(tǒng)、經(jīng)濟(jì)學(xué)系統(tǒng)等建模。另外所用的其他函數(shù)有高斯函數(shù)、正弦函數(shù)、反正切函數(shù),在此不一一展開介紹,本文主要使用的激勵(lì)函數(shù)是對數(shù)函數(shù),函數(shù)表達(dá)式為:y = L(u) =函數(shù)曲線如下圖所示:10.80.60.40.2011 + e-u-0.2-10-8-6-4-20246810對于有限輸入量,對數(shù)函數(shù)輸出范圍為
6、y Î (0,1)。在輸入為 u = 0 時(shí),輸出值為中間值 y = 0.5。輸出在 u = 0 附近隨著輸入的增加以相對快的Page 5 of 25y = s (å w j j + b)速率增加并非常慢地到達(dá)上限。對于 u < 0 ,輸出起初減少得很快,然后隨著下限的接近將會(huì)變慢。訓(xùn)練神經(jīng)元的規(guī)則有很多種,這里首先介紹利用 delta 規(guī)則的學(xué)習(xí),神經(jīng)元選擇為一個(gè)單輸入單輸出的簡單情形,數(shù)學(xué)描述如下:u = wx + b, y =11 + e-u該神經(jīng)元具有一個(gè)輸入 x ,權(quán)重為 w ,偏差輸入為 b ,目標(biāo)輸出為 t ,預(yù)報(bào)輸出為 y 。則預(yù)報(bào)誤差為:E = t
7、- y = t -1 11 + e-u 1 + e- wx-b為消除當(dāng)誤差在整個(gè)輸入模式上求和時(shí)引起的誤差符號問題,在delta 規(guī)則里使用的誤差指示是平方誤差,定義為:1 12 21- wx-b)2根據(jù) delta 規(guī)則,最優(yōu)權(quán)值(使平方誤差最?。┛梢栽谟?xùn)練過程中從初始權(quán)值出發(fā),沿負(fù)梯度方向下降得到。將平方誤差對 w, b (神經(jīng)元的可調(diào)整參數(shù))進(jìn)行微分,得:¶e¶u= -E ×e-u(1 + e-u )2¶e¶w¶e¶b= × = - E × × x¶u ¶w (1 +
8、e-u )2= × = - E ׶u ¶b (1 + e-u )2根據(jù) delta 原則,權(quán)值改變應(yīng)與誤差梯度的負(fù)值成比例,引入學(xué)習(xí)率 b ,每次迭代中的權(quán)值改變可表示為:¶e e-u¶w (1 + e-u )2¶e¶be-u(1 + e-u )2Page 6 of 25= t -1 + e¶e ¶u e-u¶e ¶u e-uDw = -b × = b × E × × xDb = -b × = b × E
9、5;學(xué)習(xí)率 b 決定了沿梯度方向的移動(dòng)速度,以確定新的權(quán)值。大的b 值會(huì)加快權(quán)值的改變,小的 b 值則減緩了權(quán)值的改變。第 i 次迭代后的新權(quán)值可表示為:wi +1 = wi + b × E ×e-u(1 + e-u )2× xbi +1 = bi + b × E ×e-u(1 + e-u )2如果將偏差輸入 b 視為輸入 x 的一部分,令 x0 = 1, w0 = b,可以得到對于多輸入神經(jīng)元的權(quán)值修正式:+1e-u(1 + e-u )2× x j , j = 0,1, 2, n總之,利用 delta 規(guī)則的有監(jiān)督的學(xué)習(xí)可以按如下方
10、法來實(shí)現(xiàn):一個(gè)輸入模式( x0 , x1, x2 , , xn)通過連接被傳遞,它的初始權(quán)值被設(shè)置為任意值。對加權(quán)的輸入求和,產(chǎn)生輸出 y ,然后 y 與給定的目標(biāo)輸出 t 做比較決定此模式的平方誤差 e 。輸入和目標(biāo)輸出不斷地被提出,在每一次迭代或每一個(gè)訓(xùn)練時(shí)間后利用 delta 規(guī)則進(jìn)行權(quán)值調(diào)整直到得到可能的最小平方誤差。delta 規(guī)則在每一步中通過導(dǎo)數(shù)尋找在誤差平面中某個(gè)特定點(diǎn)局部區(qū)域的斜率,它總是應(yīng)用這個(gè)斜率從而試圖減小局部誤差,因此,delta 規(guī)則不能區(qū)分誤差空間中的全局最小點(diǎn)和局部最小點(diǎn),它本身不能克服單層神經(jīng)網(wǎng)絡(luò)的局限,無法直接應(yīng)用到多層神經(jīng)網(wǎng)絡(luò)(易陷入局部最小點(diǎn)),但它的一
11、般形式是多層神經(jīng)網(wǎng)絡(luò)中的學(xué)習(xí)算法反傳算法的核心。在多層前向神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過程中,誤差導(dǎo)數(shù)或關(guān)于權(quán)值的誤差Page 7 of 25wij ji + b × E ×= w表面的斜率對權(quán)值的調(diào)整是至關(guān)重要的,在網(wǎng)絡(luò)訓(xùn)練期間,所有的輸出神經(jīng)元和隱含神經(jīng)元權(quán)值必須同時(shí)調(diào)整,因此,有必要找出關(guān)于所有權(quán)值的誤差導(dǎo)數(shù)。由于網(wǎng)絡(luò)層數(shù)增多,平方誤差 e 與權(quán)值的連接沒有之前單個(gè)神經(jīng)元時(shí)那么直接,故可以使用鏈?zhǔn)揭?guī)則的概念來找到導(dǎo)數(shù)。下面對一個(gè)含有一層隱含神經(jīng)元的 BP 網(wǎng)絡(luò)進(jìn)行討論,網(wǎng)絡(luò)結(jié)構(gòu)如下圖所示:x0 = 11a0ma01åsy1b1y0 = 1x11b0x21å1zb
12、man1ymxn1anmås各個(gè)神經(jīng)元的輸入輸出關(guān)系為:yi =11 + e-uinj =0x, mmi =0設(shè)目標(biāo)輸出為 t ,則平方誤差 e 定義為:Page 8 of 25, ui = å a ji j , i = 1, 2,z = v, v = å bi iy12使用鏈?zhǔn)椒▌t,分別列出平方誤差 e 對所有網(wǎng)絡(luò)參數(shù)的導(dǎo)數(shù):¶e¶v= -(t - z)¶e¶bi¶e¶v, m¶e¶yi¶e¶v, m= × = ׶ui ¶
13、yi ¶ui ¶yi (1+ e-ui )2, i = 1, 2, m¶e¶a ji= × = × x j , i = 1, 2, m, j = 0,1, 2, n在實(shí)際的編程過程中,我們需要的是¶e¶bi和¶e¶a ji,所以如果有需要,也可以直接采用以下整理之后的形式:¶e¶bi= -(t - z) × yi , i = 0,1, 2, m¶e¶a jie-ui(1 + e-ui )2, m, j = 0,1, 2, n研究表明,兩層網(wǎng)絡(luò)在其
14、隱層中使用 S 形激勵(lì)函數(shù),在輸出層中使用線性傳輸函數(shù),就幾乎可以以任意精度逼近任意感興趣的函數(shù),只要隱層中有足夠的單元可用。問題 1:試使用 BP 神經(jīng)網(wǎng)絡(luò)去逼近正弦函數(shù)的正半周,如下:t = sin(x), x Î0,p 由于輸入量 x 僅有一維,故 BP 神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)可以設(shè)計(jì)為:Page 9 of 25= × yi , i = 0,1, 2,= × bi , i = 1, 2,¶e ¶e ¶yi ¶e e-ui¶e ¶ui ¶e¶ui ¶a ji¶ui= -(
15、t - z) × bi × × x j , i = 1, 2,x0 = 1a01åsy1y0 = 1a02b1b0a11b2å1zx1 = xa12åsy2各個(gè)神經(jīng)元的輸入輸出關(guān)系為:yi =11 + e-ui1j =0x2i =0根據(jù)之前的推導(dǎo),平方誤差 e 對所有網(wǎng)絡(luò)參數(shù)的導(dǎo)數(shù)為:¶e¶bi= -(t - z) × yi , i = 0,1, 2¶e¶a jie-ui(1 + e-ui )2網(wǎng)絡(luò)參數(shù)修正方程為:k +1¶e¶bikak +1jijik ¶
16、;e k e-ui為加快尋找最優(yōu)權(quán)值的速度,可以使用動(dòng)量法。之前的方法中,收斂到最優(yōu)權(quán)值的速度取決于學(xué)習(xí)率的大小,但是過大的學(xué)習(xí)率會(huì)導(dǎo)致來回震蕩,不能穩(wěn)定到最優(yōu)權(quán)值點(diǎn)。動(dòng)量法的引入,使得較大的學(xué)習(xí)率也可以具有較好的穩(wěn)定性,即提供了在學(xué)習(xí)期間到達(dá)最優(yōu)權(quán)值時(shí)Page 10 of 25, ui = å a ji j , i = 1, 2z = v, v = å bi iy= -(t - z) × bi × × x j , i = 1, 2, j = 0,1bi ibk - b ×= bi + b × (t - z) ×
17、yi , i = 0,1, 2= a - b × = a ji + b × (t - z) × bi × × x j , i = 1, 2, j = 0,1¶a ji (1 + e-ui )2的穩(wěn)定性。這種方法基本上是將過去權(quán)值變化的平均值附加到每一次權(quán)值變化的新權(quán)值增量,從而使網(wǎng)絡(luò)權(quán)值的變化更平滑。數(shù)學(xué)表示如下:Dwk +1 = m × Dwk + (1- m ) × b × (-¶e¶w)式中, m 是一個(gè)在 0 和 1 之間的動(dòng)量參數(shù), Dwk 是在前一個(gè)訓(xùn)練時(shí)間里的權(quán)值變化。使
18、用動(dòng)量法的實(shí)際效果是:基本上,如果以前積累的變化與之前方向所暗示的是同一個(gè)方向時(shí),動(dòng)量部分就會(huì)加速當(dāng)前權(quán)值改變;如果當(dāng)前積累的變化是相反的方向,動(dòng)量將阻止當(dāng)前的變化。據(jù)此編寫 MATLAB 程序,源代碼如下:beta = 0.1;miu = 0.8;for i = 1 : 1 : 101;x1(1, i) = (i - 1) * pi / 100;t(1, i) = sin(x1(1, i);endx0 = 1;y0 = 1;a01 = rand();a02 = rand();a11 = rand();a12 = rand();b0 = rand();b1 = rand();b2 = rand
19、();delta_a01 = 0;delta_a02 = 0;delta_a11 = 0;delta_a12 = 0;delta_b0 = 0;delta_b1 = 0;delta_b2 = 0;k = 1;total_error = 0;Page 11 of 25while 1u1 = a01 * x0 + a11 * x1(1, k);u2 = a02 * x0 + a12 * x1(1, k);temp1 = exp(-u1) / (1 + exp(-u1) 2);temp2 = exp(-u2) / (1 + exp(-u2) 2);y1 = 1 / (1 + exp(-u1);y2
20、= 1 / (1 + exp(-u2);z = b0 * y0 + b1 * y1 + b2 * y2;total_error = total_error + (t(1, k) - z) 2 / 2;delta_b0 = miu * delta_b0 + (1 - miu) * beta * sum(t(1, k) - z) *y0);b0 = b0 + delta_b0;delta_b1 = miu * delta_b1 + (1 - miu) * beta * sum(t(1, k) - z) *y1);b1 = b1 + delta_b1;delta_b2 = miu * delta_b
21、2 + (1 - miu) * beta * sum(t(1, k) - z) *y2);b2 = b2 + delta_b2;delta_a01 = miu * delta_a01 + (1 - miu) * beta * sum(t(1, k) - z)* b1 * temp1 * x0);a01 = a01 + delta_a01;delta_a02 = miu * delta_a02 + (1 - miu) * beta * sum(t(1, k) - z)* b2 * temp2 * x0);a02 = a02 + delta_a02;delta_a11 = miu * delta_
22、a11 + (1 - miu) * beta * sum(t(1, k) - z)* b1 * temp1 * x1(1, k);a11 = a11 + delta_a11;delta_a12 = miu * delta_a12 + (1 - miu) * beta * sum(t(1, k) - z)* b2 * temp2 * x1(1, k);a12 = a12 + delta_a12;k = k + 1;if k = length(x1) + 1total_errork = 1;if total_error < 0.001break;elsetotal_error = 0;end
23、endendclear u1 u2 temp1 temp2 y1 y2 z x0 y0;Page 12 of 25x0 = ones(size(x1);y0 = ones(size(x1);u1 = a01 * x0 + a11 * x1;u2 = a02 * x0 + a12 * x1;y1 = 1 ./ (1 + exp(-u1);y2 = 1 ./ (1 + exp(-u2);z = b0 * y0 + b1 * y1 + b2 * y2;plot(x1, t, 'r');hold on;plot(x1, z, 'b');hold off;axis(0 p
24、i -0.2 1.2);程序運(yùn)行后,輸出擬合曲線與原函數(shù)曲線,如下圖所示:10.80.60.40.20-0.200.511.522.53可以看出,訓(xùn)練后的神經(jīng)網(wǎng)絡(luò)的預(yù)報(bào)輸出與目標(biāo)輸出已經(jīng)很接近,擬合效果是較為理想的。Page 13 of 25總的來說,神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)過程,是神經(jīng)網(wǎng)絡(luò)在外界輸入樣本的刺激下不斷改變網(wǎng)絡(luò)的連接權(quán)值乃至拓?fù)浣Y(jié)構(gòu),以使網(wǎng)絡(luò)的輸出不斷地接近期望的輸出。BP 算法是多層前向神經(jīng)網(wǎng)絡(luò)的一種學(xué)習(xí)規(guī)則,核心思想是將輸出誤差以某種形式通過隱層向輸入層逐層反傳,學(xué)習(xí)的過程就是信號的正向傳播與誤差的反向傳播交替的過程。多層前向神經(jīng)網(wǎng)絡(luò)的主要功能有:(1)非線性映射能力。多層前向神經(jīng)網(wǎng)絡(luò)
25、能學(xué)習(xí)和存儲大量輸入輸出模式映射關(guān)系,而無需事先了解描述這種映射關(guān)系的數(shù)學(xué)方程。只要能提供足夠多的樣本模式供對神經(jīng)網(wǎng)絡(luò)進(jìn)行學(xué)習(xí)訓(xùn)練,它便能完成由 n 維輸入空間到 m 維輸出空間的非線性映射。(2)泛化能力。當(dāng)向網(wǎng)絡(luò)輸入訓(xùn)練時(shí)未曾見過的非樣本數(shù)據(jù)時(shí),網(wǎng)絡(luò)也能完成由輸入空間到輸出空間的正確映射。(3)容錯(cuò)能力。輸入樣本中帶有較大的誤差甚至個(gè)別錯(cuò)誤對網(wǎng)絡(luò)的輸入輸出規(guī)律影響很小。多層前向神經(jīng)網(wǎng)絡(luò)的標(biāo)準(zhǔn) BP 學(xué)習(xí)算法有著以下明顯的缺陷:(1)易形成局部極?。▽儆谪澙匪惴ǎ植孔顑?yōu))而得不到全局最優(yōu);(2)訓(xùn)練次數(shù)多使得學(xué)習(xí)效率低下,收斂速度慢;(3)隱節(jié)點(diǎn)的選取缺乏理論支持;(4)訓(xùn)練時(shí)學(xué)習(xí)新樣本有
26、遺忘舊樣本的趨勢。標(biāo)準(zhǔn) BP 算法的改進(jìn)方法主要有:增加動(dòng)量項(xiàng);自適應(yīng)調(diào)節(jié)學(xué)習(xí)率等。增加動(dòng)量項(xiàng)已經(jīng)在之前進(jìn)行過討論,可以減小振蕩趨勢,提高Page 14 of 25訓(xùn)練速度。自適應(yīng)調(diào)節(jié)學(xué)習(xí)率是指根據(jù)環(huán)境變化增大或減小學(xué)習(xí)率,基本方法是:設(shè)一初始學(xué)習(xí)率,若經(jīng)過一批次權(quán)值調(diào)整后使總誤差增大,則本次調(diào)整無效,并令 b = a1b (a1 < 1) ;若經(jīng)過一批次權(quán)值調(diào)整后使總誤差減小,則本次調(diào)整有效,并令 b = a2b (a2 > 1)。下面通過一個(gè)非線性分類問題來考察前向神經(jīng)網(wǎng)絡(luò)在模式識別領(lǐng)域的應(yīng)用。問題 2:x - y平面上有 200 個(gè)點(diǎn),分別屬于兩個(gè)類別。試設(shè)計(jì)并訓(xùn)練一個(gè)多層前
27、向神經(jīng)網(wǎng)絡(luò),以完成該分類任務(wù),使得被錯(cuò)誤分類的樣本數(shù)量最低。 w1 類以綠色標(biāo)示, w2 類以藍(lán)色標(biāo)示。10.90.80.70.60.50.40.30.20.1000.10.20.30.40.50.60.70.80.91Page 15 of 25根據(jù)題意,前向神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)設(shè)計(jì)如下:x0 = 1a01åsy1y0 = 1a02b1b0x1 = xa11a12åszb2x2 = ya21a22åsy2網(wǎng)絡(luò)的輸入輸出關(guān)系及分類策略為:yi =21 + e-ui2j =0xz =21 + e-v2i=0yìw , z > 0îw2 , z &l
28、t; 0分類誤差定義為:1 2 ì1, ( x, y) Îw12 î-1, ( x, y) Îw2由此可得誤差量對網(wǎng)絡(luò)參數(shù)的導(dǎo)數(shù):¶e ¶e ¶z ¶v e-v¶bi ¶z ¶v ¶bi (1+ e-v )2¶e¶a ji-v2為簡化表達(dá)式,定義:p = -(t - z) ×-v2, i = 1, 2Page 16 of 25-1, ui = å a ji j , i = 1, 2-1, v = å bi i( x, y) &
29、#206; í 1= × × = -(t - z) × × yi¶e ¶yi i e e-ui¶u= × × = -(t - z) × × bi × × x j¶yi ¶ui ¶a ji (1 + e-v ) (1 + e-ui )2e e-ui, qi = bi ×(1 + e-v ) (1 + e-ui )2則有:¶e ¶e¶bi ¶a ji= pqi × x j
30、據(jù)此編寫 MATLAB 程序如下(標(biāo)準(zhǔn) BP 算法加動(dòng)量法優(yōu)化):clear x0 x1 x2;beta = 0.1;miu = 0;n m = size(x);for i = 1 : 1 : nx0(1, i) = 1;x1(1, i) = x(i, 1);x2(1, i) = x(i, 2);y0(1, i) = 1;t(1, i) = x(i, 3);enda01 = rand();a11 = rand();a21 = rand();a02 = rand();a12 = rand();a22 = rand();b0 = rand();b1 = rand();b2 = rand();del
31、ta_a01 = 0;delta_a11 = 0;delta_a21 = 0;delta_a02 = 0;delta_a12 = 0;delta_a22 = 0;delta_b0 = 0;delta_b1 = 0;delta_b2 = 0;l = 1;while 1u1 = a01 * x0 + a11 * x1 + a21 * x2;u2 = a02 * x0 + a12 * x1 + a22 * x2;y1 = 2 ./ (1 + exp(-u1) - 1;y2 = 2 ./ (1 + exp(-u2) - 1;v = b0 * y0 + b1 * y1 + b2 * y2;z = 2 .
32、/ (1 + exp(-v) - 1;Page 17 of 25= p × yi ,error = 0;for i = 1 : 1 : nif (z(1, i) > 0 && t(1, i) = 1) | (z(1, i) < 0 && t(1, i) = -1)%elseerror = error + 1;endenderrortemp0 = -(t - z) .* exp(-v) ./ (1 + exp(-v) . 2;temp1 = b1 .* exp(-u1) ./ (1 + exp(-u1) . 2;temp2 = b2 .* e
33、xp(-u2) ./ (1 + exp(-u2) . 2;delta_b0 = miu * delta_b0 + (1 - miu) * beta * sum(-temp0 .* y0);delta_b1 = miu * delta_b1 + (1 - miu) * beta * sum(-temp0 .* y1);delta_b2 = miu * delta_b2 + (1 - miu) * beta * sum(-temp0 .* y2);delta_a01 = miu * delta_a01 + (1 - miu) * beta * sum(-temp0 .* temp1 .*x0);d
34、elta_a11 = miu * delta_a11 + (1 - miu) * beta * sum(-temp0 .* temp1 .*x1);delta_a21 = miu * delta_a21 + (1 - miu) * beta * sum(-temp0 .* temp1 .*x2);delta_a02 = miu * delta_a02 + (1 - miu) * beta * sum(-temp0 .* temp2 .*x0);delta_a12 = miu * delta_a12 + (1 - miu) * beta * sum(-temp0 .* temp2 .*x1);d
35、elta_a22 = miu * delta_a22 + (1 - miu) * beta * sum(-temp0 .* temp2 .*x2);b0 = b0 + delta_b0;b1 = b1 + delta_b1;b2 = b2 + delta_b2;a01 = a01 + delta_a01;a11 = a11 + delta_a11;a21 = a21 + delta_a21;a02 = a02 + delta_a02;a12 = a12 + delta_a12;a22 = a22 + delta_a22;l = l + 1;if l = 1000break;endPage 18
36、 of 25endj1 = 1;j2 = 1;k1 = 1;k2 = 1;for i = 1 : 1 : nif x(i, 3) = -1if z(1, i) < 0x11(j1, :) = x(i, :);j1 = j1 + 1;elsex12(j2, :) = x(i, :);j2 = j2 + 1;endelseif z(1, i) > 0x21(k1, :) = x(i, :);k1 = k1 + 1;elsex22(k2, :) = x(i, :);k2 = k2 + 1;endendendhold on;plot(x11(:, 1), x11(:, 2), 'g
37、*');plot(x12(:, 1), x12(:, 2), 'r+');plot(x21(:, 1), x21(:, 2), 'bo');plot(x22(:, 1), x22(:, 2), 'r+');hold off;axis(0 1 0 1);程序運(yùn)行結(jié)果,經(jīng)過訓(xùn)練,該神經(jīng)網(wǎng)絡(luò)對 200 個(gè)樣本的分類正確率達(dá)到了 96.5%,分類效果較好,具體分類情況如下圖所示,其中被錯(cuò)誤分類的樣本已用紅色標(biāo)示出,其它正確分類的樣本仍用原類別對應(yīng)的顏色進(jìn)行標(biāo)示。Page 19 of 2510.90.80.70.60.50.40.30.20.100
38、0.10.20.30.40.50.60.70.80.91之前的所有程序都是完整地按照多層前向神經(jīng)網(wǎng)絡(luò)的標(biāo)準(zhǔn) BP 學(xué)習(xí)算法過程進(jìn)行編寫的,程序較為復(fù)雜,而且如果出現(xiàn)差錯(cuò),也不易發(fā)現(xiàn),因此應(yīng)用有一定難度,下面介紹使用 MATLAB 的神經(jīng)網(wǎng)絡(luò)工具箱進(jìn)行人工神經(jīng)網(wǎng)絡(luò)的設(shè)計(jì)與訓(xùn)練的方法。關(guān)于神經(jīng)網(wǎng)絡(luò)工具箱的幫助信息,可以在 Product Help 中搜索“Neural Network Toolbox”獲得,包含有較為詳細(xì)的使用方法,可以在需要時(shí)進(jìn)行查閱。下面以一個(gè)函數(shù)擬合的問題為例,演示如何使用神經(jīng)網(wǎng)絡(luò)工具箱。首先介紹幾個(gè)將要用到的函數(shù):premnmx:用于將網(wǎng)絡(luò)的輸入數(shù)據(jù)或輸出數(shù)據(jù)進(jìn)行歸一化,歸
39、一化后的數(shù)據(jù)將分布在 -1,1區(qū)間內(nèi)。其語法格式為:Page 20 of 25Pn, minp, maxp, Tn, mint, maxt = premnmx(P, T);tramnmx:在訓(xùn)練網(wǎng)絡(luò)是如果所用的是經(jīng)過歸一化的樣本數(shù)據(jù),那么以后使用網(wǎng)絡(luò)時(shí)所用的新數(shù)據(jù)也應(yīng)該和樣本數(shù)據(jù)接收相同的預(yù)處理,tramnmx 用于完成此項(xiàng)處理,語法格式為:Pn_new = tramnmx(P_new,minp,maxp);Tn_new = tramnmx(T_new,mint,maxt);postmnmx:網(wǎng)絡(luò)輸出結(jié)果需要反歸一化還原為原始數(shù)據(jù),常用的函數(shù)即是 postmnmx,其語法格式為:Y = pos
40、tmnmx(Yn,mint,maxt);newff:訓(xùn)練前饋網(wǎng)絡(luò)的第一步是建立網(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ù)名稱的細(xì)胞數(shù)組;最后一個(gè)參數(shù)是用到的訓(xùn)練函數(shù)的名稱。例如可以這樣建立一個(gè)網(wǎng)絡(luò)對象:net = newff(minmax(PN1),NodeNum TypeNum,TF1 TF2, 'trainlm');或者可以在建立網(wǎng)絡(luò)對象時(shí)并不設(shè)定訓(xùn)練函數(shù),而是之后進(jìn)行指定,如:net = n
41、ewff(minmax(PN1),NodeNum TypeNum,TF1 TF2);net.trainFcn = 'trainlm'兩者是等效的。train:BP 神經(jīng)網(wǎng)絡(luò)的訓(xùn)練函數(shù),其語法格式為:net = train(net,Pn,Tn);sim:對于給定的輸入量,模擬神經(jīng)網(wǎng)絡(luò)的輸出,其語法格式為:Yn = sim(net,Pn);Page 21 of 25例如使用神經(jīng)網(wǎng)絡(luò)工具箱對一個(gè)正弦函數(shù)進(jìn)行擬合,源程序如下:clcclearclose all%-% 產(chǎn)生訓(xùn)練樣本與測試樣本P1 = 1:2:200; % 訓(xùn)練樣本,每一列為一個(gè)樣本T1 = sin(P1*0.1); %
42、訓(xùn)練目標(biāo)P2 = 2:2:200; % 測試樣本,每一列為一個(gè)樣本T2 = sin(P2*0.1); % 測試目標(biāo)%-% 歸一化PN1,minp,maxp,TN1,mint,maxt = premnmx(P1,T1);PN2 = tramnmx(P2,minp,maxp);TN2 = tramnmx(T2,mint,maxt);%-% 設(shè)置網(wǎng)絡(luò)參數(shù)NodeNum = 20; % 隱層節(jié)點(diǎn)數(shù)TypeNum = 1; % 輸出維數(shù)TF1 = 'tansig'TF2 = 'purelin' % 判別函數(shù)(缺省值)%TF1 = 'tansig'TF2 =
43、 'logsig'%TF1 = 'logsig'TF2 = 'purelin'%TF1 = 'tansig'TF2 = 'tansig'%TF1 = 'logsig'TF2 = 'logsig'%TF1 = 'purelin'TF2 = 'purelin'net = newff(minmax(PN1),NodeNum TypeNum,TF1 TF2);%-% 指定訓(xùn)練參數(shù)% net.trainFcn = 'traingd' % 梯度下降
44、算法% net.trainFcn = 'traingdm' % 動(dòng)量梯度下降算法% net.trainFcn = 'traingda' % 變學(xué)習(xí)率梯度下降算法Page 22 of 25% net.trainFcn = 'traingdx' % 變學(xué)習(xí)率動(dòng)量梯度下降算法% (大型網(wǎng)絡(luò)的首選算法)% net.trainFcn = 'trainrp' % RPROP(彈性 BP)算法,內(nèi)存需求最小% 共軛梯度算法% net.trainFcn = 'traincgf' % Fletcher-Reeves 修正算法% net.trainFcn = 'traincgp' % Polak-Ribiere 修正算法,內(nèi)存需求比Fletcher-Reeves 修正算法略大% net.trainFcn = 'traincgb' % Powell-Beal 復(fù)位算法,內(nèi)存需求比 Polak-Ribiere修正算法略大% (大型網(wǎng)絡(luò)的首選算法)%net.trainFcn = 'trainscg' % Scaled Conjugate Gradient 算法
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(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è)技術(shù)學(xué)院《中級財(cái)務(wù)會(huì)計(jì)B(下)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024年貨物進(jìn)出口代理合同(詳細(xì)代理范圍和責(zé)任劃分)
- 2025版物流企業(yè)整體轉(zhuǎn)讓合作協(xié)議范本3篇
- 2025版鋼結(jié)構(gòu)工程風(fēng)險(xiǎn)管理與應(yīng)急響應(yīng)合同3篇
- 二零二五年勞動(dòng)局規(guī)范下的勞動(dòng)合同范本3篇
- 二零二五年度互聯(lián)網(wǎng)醫(yī)療平臺外包服務(wù)協(xié)議3篇
- 2024年離婚房貸權(quán)益分配協(xié)議3篇
- 【可行性報(bào)告】2024年錘紋漆行業(yè)項(xiàng)目可行性分析報(bào)告
- 2025年黃南貨運(yùn)資格證試題及答案
- 二零二五年度健身房會(huì)員卡互轉(zhuǎn)協(xié)議3篇
- 文件袋、檔案袋密封條模板
- 校本課程《典籍里的中國》教案
- CNAS-CV03-2022 溫室氣體 第三部分 溫室氣體聲明審定與核查規(guī)范和指南
- 四年級上冊信息技術(shù)教案-9演示文稿巧編輯 |人教版
- 2022年人力資源管理各專業(yè)領(lǐng)域必備知識技能
- 租賃(出租)物品清單表
- 提高聚氯乙烯卷材地面一次驗(yàn)收合格率
- 【部編版】2022年語文七年級上:作文能力提升—謀篇布局(含答案)
- 甲型H1N1流感防治應(yīng)急演練方案(1)
- LU和QR分解法解線性方程組
- 漏油器外殼的落料、拉深、沖孔級進(jìn)模的設(shè)計(jì)【畢業(yè)論文絕對精品】
評論
0/150
提交評論