BP神經(jīng)網(wǎng)絡(luò)設(shè)計(jì)ppt課件
《BP神經(jīng)網(wǎng)絡(luò)設(shè)計(jì)ppt課件》由會(huì)員分享,可在線閱讀,更多相關(guān)《BP神經(jīng)網(wǎng)絡(luò)設(shè)計(jì)ppt課件(44頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
基于BP網(wǎng)絡(luò)數(shù)據(jù)分類設(shè)計(jì),1,目 錄,前饋神經(jīng)網(wǎng)絡(luò)簡介 BP網(wǎng)絡(luò)簡介 BP神經(jīng)網(wǎng)絡(luò)的工作原理 BP網(wǎng)絡(luò)的特點(diǎn) BP網(wǎng)絡(luò)的建立及執(zhí)行 BP網(wǎng)絡(luò)應(yīng)用于模式分類 BP網(wǎng)絡(luò)的其他學(xué)習(xí)算法的應(yīng)用 結(jié)論,2,一.前饋神經(jīng)網(wǎng)絡(luò)簡介,對(duì)于很多應(yīng)用,一個(gè)確定的網(wǎng)絡(luò)計(jì)算與確定的時(shí)間行為一樣重要。網(wǎng)絡(luò)架構(gòu)允許中間單元的循環(huán)結(jié)構(gòu)計(jì)算依靠神經(jīng)元內(nèi)部激活的輸出值。即使輸入不變化,輸出也可能不同,直到網(wǎng)絡(luò)內(nèi)的計(jì)算達(dá)到穩(wěn)定狀態(tài),單元之間不僅有單方向連接的網(wǎng)絡(luò),而且有反方向的網(wǎng)絡(luò),這些相反方向的網(wǎng)絡(luò)稱為前饋網(wǎng)絡(luò)。,3,一.前饋神經(jīng)網(wǎng)絡(luò)簡介,前饋神經(jīng)網(wǎng)絡(luò)包括感知器網(wǎng)絡(luò)和BP神經(jīng)網(wǎng)絡(luò)。 感知器網(wǎng)絡(luò)是最簡單的前饋網(wǎng)絡(luò),主要用于模式分類,也可用在基于模式分類的學(xué)習(xí)控制和多模態(tài)控制中。感知器網(wǎng)絡(luò)中神經(jīng)元的變換函數(shù)采用的是符號(hào)函數(shù),即輸出為二值量1或?1,它主要用于模式分類。 BP神經(jīng)網(wǎng)絡(luò)的神經(jīng)元變換函數(shù)采用S形函數(shù)時(shí),系統(tǒng)的輸出量將為0~1之間的連續(xù)量,它可實(shí)現(xiàn)從輸入到輸出的任意非線性映。,4,二.BP神經(jīng)網(wǎng)絡(luò)簡介,BP神經(jīng)網(wǎng)絡(luò)即反向傳播網(wǎng)絡(luò),這是由于該算法連接權(quán)的調(diào)整采用的是反向傳播(Back Propagation)。在人工神經(jīng)網(wǎng)絡(luò)的實(shí)際應(yīng)用中,BP網(wǎng)絡(luò)廣泛應(yīng)用于函數(shù)逼近、模式識(shí)別/分類、數(shù)據(jù)壓縮等,80%~90%的人工神經(jīng)網(wǎng)絡(luò)模型是采用BP網(wǎng)絡(luò)或它的變化形式,它也是前饋網(wǎng)絡(luò)的核心部分,體現(xiàn)了人工神經(jīng)網(wǎng)絡(luò)最精華的部分。,5,三.BP神經(jīng)網(wǎng)絡(luò)的工作原理,6,三.BP神經(jīng)網(wǎng)絡(luò)的工作原理,BP神經(jīng)元與其他神經(jīng)元類似,不同的是BP神經(jīng)元的傳輸函數(shù)為非線性函數(shù),最常用的函數(shù)是 和 函數(shù),有的輸出層也采用線性函數(shù)( )。其輸出為 BP網(wǎng)絡(luò)一般為多層神經(jīng)網(wǎng)絡(luò)。由BP神經(jīng)網(wǎng)絡(luò)構(gòu)成的二層網(wǎng)絡(luò)如圖1.2所示。,7,三.BP神經(jīng)網(wǎng)絡(luò)的工作原理,8,三.BP神經(jīng)網(wǎng)絡(luò)的工作原理,BP網(wǎng)絡(luò)的信息從輸入層流向輸出層,因此是一種多層前饋神經(jīng)網(wǎng)絡(luò)。 如果多層BP網(wǎng)絡(luò)的輸出層采用S形傳輸函數(shù)(如 ),其輸出值將會(huì)限制在一個(gè)較小的范圍內(nèi)(0,1);而采用線性傳輸函數(shù)則可以取任意值。 在確定了BP網(wǎng)絡(luò)的結(jié)構(gòu)后,要通過輸入和輸出樣本集對(duì)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,以及對(duì)網(wǎng)絡(luò)的閾值和權(quán)值進(jìn)行學(xué)習(xí)和修正,以使網(wǎng)絡(luò)實(shí)現(xiàn)給定的輸入輸出映射關(guān)系。,9,三.BP神經(jīng)網(wǎng)絡(luò)的工作原理,BP網(wǎng)絡(luò)的學(xué)習(xí)過程包含兩個(gè)過程,即正向傳播和反向傳播。 (1)正向傳播。輸入已知學(xué)習(xí)樣本,通過設(shè)置的網(wǎng)絡(luò)結(jié)構(gòu)和前一次迭代的權(quán)值和閾值,從網(wǎng)絡(luò)的第一層向后計(jì)算各神經(jīng)元輸出。 (2)反向傳播:反向傳播時(shí),對(duì)權(quán)值和閾值進(jìn)行修改:從最后一層向前計(jì)算各權(quán)值和閾值對(duì)總誤差的影響(梯度),據(jù)此對(duì)各權(quán)值和閾值進(jìn)行修改。 以上兩個(gè)過程反復(fù)交替,直到達(dá)到收斂為止,10,三.BP神經(jīng)網(wǎng)絡(luò)的工作原理,由于誤差逐層往回傳遞,以修正層與層間的權(quán)值和閾值,所以稱該算法為誤差反向傳播(back propagation)算法,這種誤差反傳學(xué)習(xí)算法可以推廣到有若干個(gè)中間層的多層網(wǎng)絡(luò),因此該多層網(wǎng)絡(luò)常稱之為BP網(wǎng)絡(luò)。標(biāo)準(zhǔn)的BP算法,其權(quán)值的修正是沿著誤差性能函數(shù)梯度的反方向進(jìn)行的。,11,四.BP網(wǎng)絡(luò)的特點(diǎn),1.BP網(wǎng)絡(luò)具有以下主要優(yōu)點(diǎn): 只有有足夠多的隱含層結(jié)點(diǎn)和隱含層,BP網(wǎng)絡(luò)可以逼近任意的非線性映射關(guān)系 BP網(wǎng)絡(luò)的學(xué)習(xí)算法屬于局部逼近的方法,因此它具有較好的泛化能力 2.BP網(wǎng)絡(luò)的主要缺點(diǎn)如下: 收斂速度慢 容易陷入局部極值點(diǎn) 難以確定隱含層和隱含層結(jié)點(diǎn)的個(gè)數(shù) ?,12,五. BP網(wǎng)絡(luò)的建立及執(zhí)行,1.建立BP網(wǎng)絡(luò) 首先需要選擇網(wǎng)絡(luò)的層數(shù)和每層的結(jié)點(diǎn)數(shù)。 網(wǎng)絡(luò)輸入層和輸出層的結(jié)點(diǎn)個(gè)數(shù)與輸入變量個(gè)數(shù)及輸出變量個(gè)數(shù)對(duì)應(yīng)。 隱含層結(jié)點(diǎn)的選擇應(yīng)遵循以下原則:盡量選取較少的隱含層結(jié)點(diǎn),使網(wǎng)絡(luò)盡量簡單。一種方法是先設(shè)置較少結(jié)點(diǎn),對(duì)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,并測試網(wǎng)絡(luò)的逼近能力,然后逐漸增加結(jié)點(diǎn)數(shù),直到測試的誤差不再有明顯的較小為止;另一種方法是先設(shè)置較多的結(jié)點(diǎn),再對(duì)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,從而得到一個(gè)適合規(guī)模的網(wǎng)絡(luò)結(jié)構(gòu)。 一般采用單隱層的BP網(wǎng)絡(luò)就可以實(shí)現(xiàn)較好的訓(xùn)練效果。,13,五. BP網(wǎng)絡(luò)的建立及執(zhí)行,2.確定網(wǎng)絡(luò)的初始權(quán)值 BP網(wǎng)絡(luò)的各層初始權(quán)值一般選取一組較小的非零隨機(jī)數(shù)。為了避免出現(xiàn)局部極值問題,可選取多組初始權(quán)值,最后選用最好的一種。 3.產(chǎn)生訓(xùn)練樣本 建立樣本數(shù)據(jù)之前,首先要收集大量的原始數(shù)據(jù),并在大量的原始數(shù)據(jù)中確定出最主要的輸入模式,分析數(shù)據(jù)的相關(guān)性,選擇其中最主要的輸入模式,并確保所選擇的輸入模式互不相同。 在確定了最重要的輸入模式后,需要進(jìn)行尺度變換和預(yù)處理。使得經(jīng)變換后的數(shù)據(jù)對(duì)神經(jīng)網(wǎng)絡(luò)更容易學(xué)習(xí)和訓(xùn)練。 確定樣本大小,樣本大小取決于許多因素,如網(wǎng)絡(luò)的大小、網(wǎng)絡(luò)測試的需要和輸入/輸出的分布等。其中,網(wǎng)絡(luò)的大小是最關(guān)鍵的因素。通常較大的網(wǎng)絡(luò)需要較多的訓(xùn)練數(shù)據(jù)。經(jīng)驗(yàn)規(guī)則:訓(xùn)練模式應(yīng)是連接權(quán)總數(shù)的3~5倍。,14,五. BP網(wǎng)絡(luò)的建立及執(zhí)行,4.訓(xùn)練網(wǎng)絡(luò) 通常訓(xùn)練一個(gè)網(wǎng)絡(luò)需要多次,但并非訓(xùn)練的次數(shù)越多,越能得到正確的輸入/輸出的映射關(guān)系。由于所收集的數(shù)據(jù)都是包含噪聲的,訓(xùn)練的次數(shù)過多,網(wǎng)絡(luò)將包含噪聲的數(shù)據(jù)都記錄下來。 5.測試網(wǎng)絡(luò) 在測試時(shí)需要保持連接權(quán)系數(shù)不改變,用確定的數(shù)據(jù)作為網(wǎng)絡(luò)的輸入,正向運(yùn)行該網(wǎng)絡(luò),檢驗(yàn)輸出的均方誤差。 6.判斷網(wǎng)絡(luò) 在實(shí)際確定BP網(wǎng)絡(luò)時(shí),通常應(yīng)將訓(xùn)練和測試交替進(jìn)行,即每訓(xùn)練一次,同時(shí)用測試數(shù)據(jù)測試一遍網(wǎng)絡(luò),畫出均方誤差隨訓(xùn)練次數(shù)的變化曲線。,15,六. BP網(wǎng)絡(luò)應(yīng)用于模式分類,,1.網(wǎng)絡(luò)創(chuàng)建及重要代碼介紹 (1)網(wǎng)絡(luò)的構(gòu)建: 首先需要構(gòu)造一個(gè)網(wǎng)絡(luò)構(gòu)架,函數(shù)newff()就是構(gòu)建神經(jīng)網(wǎng)的。 下面具體介紹參數(shù)的選擇。 網(wǎng)絡(luò)層數(shù):選用兩層BP網(wǎng)絡(luò)即可。 輸入層節(jié)點(diǎn)數(shù)m:其節(jié)點(diǎn)數(shù)取決于矢量的維數(shù)。 輸出層節(jié)點(diǎn)數(shù)n:輸出層的節(jié)點(diǎn)數(shù)取決于兩個(gè)方面,輸出數(shù)據(jù)類型和表示該類型所需數(shù)據(jù)大小。當(dāng)BP網(wǎng)絡(luò)用于模式分類時(shí),則輸出層的節(jié)點(diǎn)數(shù)可根據(jù)待分類模式數(shù)來確定。 隱含層結(jié)點(diǎn)數(shù):對(duì)于用于模式識(shí)別/分類的BP網(wǎng)絡(luò),隱層節(jié)點(diǎn)數(shù)可以參照以下公式進(jìn)行設(shè)計(jì): 其中,m為輸入層結(jié)點(diǎn)數(shù);n為輸出層結(jié)點(diǎn)數(shù);a為1~10之間的常數(shù)。,16,六. BP網(wǎng)絡(luò)應(yīng)用于模式分類,,傳輸函數(shù):BP網(wǎng)絡(luò)中的傳輸函數(shù)通常采用S( )形函數(shù),在某些特定情況下還可能采用純線性( )函數(shù)。 訓(xùn)練函數(shù):BP神經(jīng)網(wǎng)絡(luò)的訓(xùn)練函數(shù)有 等,每種訓(xùn)練函數(shù)各有特點(diǎn),但是沒有一種函數(shù)能適應(yīng)所有情況下的訓(xùn)練過程。代碼如下: net=newff(minmax(p),[12,4],{'tansig','logsig'},'trainlm'); (2)網(wǎng)絡(luò)的初始化: 網(wǎng)絡(luò)的輸入向量: 。 網(wǎng)絡(luò)的目標(biāo)向量: 。 網(wǎng)絡(luò)初始化程序:net=init(net)。,17,六. BP網(wǎng)絡(luò)應(yīng)用于模式分類,,(3)訓(xùn)練參數(shù)初始化: 代碼如下: max_epoch=x; %最大訓(xùn)練次數(shù)x err_goal=E ; %期望誤差 (4)網(wǎng)絡(luò)訓(xùn)練: net=train(net,p,t); (5)網(wǎng)絡(luò)仿真: y=sim(net,p_test); (6)結(jié)果對(duì)比:,18,六. BP網(wǎng)絡(luò)應(yīng)用于模式分類,,2.完整代碼 本例采用BP網(wǎng)絡(luò)對(duì)酒瓶顏色進(jìn)行分類。其中,前29組數(shù)據(jù)已確定類別,后30組數(shù)據(jù)待確定類別。 BP網(wǎng)絡(luò)的輸入和輸出層的神經(jīng)元數(shù)目由輸入和輸出向量的維數(shù)確定。輸入向量由A、B、C這三列決定,所以輸入層的神經(jīng)元數(shù)目為3;輸出結(jié)果有4種模式,1、2、3、4代表4種輸出,因此輸出層的神經(jīng)元個(gè)數(shù)為4。模式識(shí)別程序如下: %構(gòu)建訓(xùn)練樣本中的輸入向量p p=[1739.94 373.3 1756.77 864.45 222.85 877.88 1803.58 2352.12 401.3 363.34 1571.17 104.8 499.85 2297.28 2092.62 1418.79 1845.59 2205.36 2949.16 1692.62 1680.67 2802.88 172.78 2063.54 1449.58 1651.52 341.59 291.02 237.63;1675.15 3087.05 1652 1647.31 3059.54 2031.66 1583.12 2557.04 3259.94 3477.95 1731.04 3389.83 3305.75 3340.14 3177.21 1775.89 1918.81 3243.74 3244.44 1867.5 1575.78 3017.11 3084.49 3199.76 1641.58 1713.28 3076.62 3095.68 3077.78;2395.96 2429.47 1514.98 2665.9 2002.33 3071.18 2163.05 1411.53 2150.98 2462.86 1735.33 2421.83 2196.22 535.62 584.32 2772.9 2226.49 1202.69 662.42 2108.97 1725.1 1984.98 2328.65 1257.21 3405.12 1570.38 2438.63 2088.95 2251.96];,19,六. BP網(wǎng)絡(luò)應(yīng)用于模式分類,,%構(gòu)建訓(xùn)練樣本中的目標(biāo)向量t t=[0 1 0 0 1 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1; 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 1 0 0 0 0 1 0 0 0; 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 1 1 0 0 1 0 1 0 0 0 0 0; 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0]; %創(chuàng)建一個(gè)BP網(wǎng)絡(luò),隱含層有12個(gè)神經(jīng)元,傳遞函數(shù)為tansig %中間層有4個(gè)神經(jīng)元,傳遞函數(shù)為logsig,訓(xùn)練函數(shù)為trainlm net=newff(minmax(p),[12,4],{'tansig','logsig'},'trainlm'); %訓(xùn)練次數(shù) 默認(rèn)為100 net.trainParam.epochs=500; %訓(xùn)練的目標(biāo) 默認(rèn)為0 net.trainParam.goal=0.01; %神經(jīng)網(wǎng)絡(luò)訓(xùn)練 net=train(net,p,t); %測試樣本進(jìn)行分類 p_test=[1702.8 1877.93 867.81 1831.49 460.69 2374.98 2271.89 1783.64 198.83 1494.63 1597.03 1598.93 1243.13 2336.31 354 2144.47 426.31 1507.13 343.07 2201.94 2232.43 1580.1 1962.4 1495.18 1125.17 24.22 1269.07 1802.07 1817.36 1860.45;,20,六. BP網(wǎng)絡(luò)應(yīng)用于模式分類,,1639.79 1860.96 2334.68 1713.11 3274.77 3346.98 3482.97 1597.99 3250.45 2072.59 1921.52 1921.08 1814.07 2640.26 3300.12 2501.62 3105.29 1556.89 3271.72 3196.22 3077.87 1752.07 1594.97 1957.44 1594.39 3447.31 1910.72 1725.81 1927.4 1782.88; 2068.74 1975.3 2535.1 1604.68 2172.99 975.31 946.7 2261.31 2445.08 2550.51 2126.76 1623.33 3441.07 1599.63 2373.61 591.51 2057.8 1954.51 2036.94 935.53 1298.87 2463.04 1835.95 3498.02 2937.73 2145.01 2701.97 1966.35 2328.79 1875.83]; y=sim(net,p_test); 運(yùn)行上述程序代碼后,可以得到網(wǎng)絡(luò)的訓(xùn)練結(jié)果: TRAINLM-calcjx, Epoch 0/500, MSE 0.303441/0.01, Gradient 173.123/1e-010 TRAINLM-calcjx, Epoch 25/500, MSE 0.0862919/0.01, Gradient 0.0209707/1e-010 TRAINLM-calcjx, Epoch460/500, MSE 0.00159/0.01, Gradient 0.226/1e-07 TRAINLM, Performance goal met.,21,六. BP網(wǎng)絡(luò)應(yīng)用于模式分類,,如圖1為神經(jīng)網(wǎng)絡(luò)訓(xùn)練模塊,在這里可以查看訓(xùn)練結(jié)果、訓(xùn)練狀態(tài)等??梢娋W(wǎng)絡(luò)經(jīng)過460次訓(xùn)練后即可達(dá)到誤差要求,結(jié)果如圖2所示。從圖中可以看出網(wǎng)絡(luò)具有非常好的學(xué)習(xí)性能,網(wǎng)絡(luò)輸出與目標(biāo)輸出的誤差已經(jīng)達(dá)到了預(yù)先的要求。,圖1 神經(jīng)網(wǎng)絡(luò)訓(xùn)練圖,圖2 訓(xùn)練曲線圖,22,六. BP網(wǎng)絡(luò)應(yīng)用于模式分類,,對(duì)預(yù)測樣本值的仿真輸出結(jié)果如下: y = 1 至 18 列 0.0144 0.0144 0.4828 0.0144 0.9788 0.0353 0.0353 0.0144 0.9788 0.0877 0.0144 0.0239 0.0525 0.0353 0.9788 0.0353 0.9788 0.0144 0.9857 0.9857 0.3637 0.9857 0.0187 0.0300 0.0300 0.9857 0.0187 0.9528 0.9857 0.8961 0.1056 0.0300 0.0187 0.0300 0.0187 0.9857 0.0057 0.0057 0.0020 0.0057 0.0221 0.9693 0.9693 0.0057 0.0221 0.0006 0.0057 0.0822 0.0001 0.9693 0.0221 0.9693 0.0221 0.0057 0.0264 0.0264 0.0233 0.0264 0.0565 0.0050 0.0050 0.0264 0.0565 0.0453 0.0264 0.0099 0.8830 0.0050 0 .0565 0.0050 0.0565 0.0264 19 至 30 列 0.9787 0.0353 0.0353 0.0144 0.0144 0.0525 0.0525 0.9788 0.0568 0.0144 0.0144 0.0144 0.0187 0.0300 0.0300 0.9857 0.9857 0.1056 0.1056 0.0187 0.1208 0.9857 0.9857 0.9857 0.0221 0.9693 0.9693 0.0057 0.0057 0.0001 0.0001 0.0221 0.0001 0.0057 0.0057 0.0057 0.0565 0.0050 0.0050 0.0264 0.0264 0.8830 0.8830 0.0565 0.8643 0.0264 0.0264 0.0264,23,七. BP網(wǎng)絡(luò)的其他學(xué)習(xí)算法的應(yīng)用,在應(yīng)用其他學(xué)習(xí)方法訓(xùn)練BP網(wǎng)絡(luò)之前,先將樣本數(shù)據(jù)(bp_train_sample_data.dat)、目標(biāo)數(shù)據(jù)(bp_train_target_data.dat)及待分類數(shù)據(jù)(bp_simulate_data.dat)存放到數(shù)據(jù)文件,各文件內(nèi)容及格式如圖所示。,24,1.采用梯度法進(jìn)行學(xué)習(xí) 前向神經(jīng)網(wǎng)絡(luò)BP算法采用最速下降尋優(yōu)算法,即梯度法。假設(shè)有N對(duì)學(xué)習(xí)樣本,采取批處理學(xué)習(xí)方法,目標(biāo)函數(shù): 其中 、 分別為第K對(duì)樣本的期望輸出和實(shí)際輸出向量。E反映網(wǎng)絡(luò)輸出與樣本的總體誤差。學(xué)習(xí)過程就是通過修改各神經(jīng)元之間的權(quán)值,使得目標(biāo)函數(shù)E的值最小,權(quán)值按下列公式修正: 其中,?為學(xué)習(xí)速率。,七. BP網(wǎng)絡(luò)的其他學(xué)習(xí)算法的應(yīng)用,25,七. BP網(wǎng)絡(luò)的其他學(xué)習(xí)算法的應(yīng)用,應(yīng)用traingd函數(shù)訓(xùn)練,應(yīng)調(diào)整全值和閾值沿著表現(xiàn)函數(shù)的負(fù)梯度方向,如果應(yīng)用梯度下降法訓(xùn)練函數(shù),需要在訓(xùn)練之前將網(wǎng)絡(luò)構(gòu)成函數(shù)的相應(yīng)參數(shù)trainFcn設(shè)置為traingd。 與函數(shù)traingd有關(guān)的訓(xùn)練參數(shù)有:epochs、goal、lr、max_fail、min_grad、show、time,如果不設(shè)置就表示應(yīng)用內(nèi)定缺省值。 net.trainParam.epochs 最大訓(xùn)練次數(shù)(缺省為10) net.trainParam.goal 訓(xùn)練要求精度(缺省為0) net.trainParam.lr 學(xué)習(xí)率(缺省為0.01) net.trainParam.max_fail 最大失敗次數(shù)(缺省為5) net.trainParam.min_grad 最小梯度要求(缺省為1e-10) net.trainParam.show 顯示訓(xùn)練迭代過程(NaN表示不顯示,缺省為25) net.trainParam.time 最大訓(xùn)練時(shí)間(缺省為inf) 訓(xùn)練過程中,只要滿足下面四個(gè)條件之一,訓(xùn)練就會(huì)停止: 超過最大迭代次數(shù)epochs。 表現(xiàn)函數(shù)值小于誤差指標(biāo)goal。 梯度值小于要求精度mingrad。 訓(xùn)練所用時(shí)間超過時(shí)間限制time。 最大失敗次數(shù)超過次數(shù)限制max_fail.,26,七. BP網(wǎng)絡(luò)的其他學(xué)習(xí)算法的應(yīng)用,完整程序代碼: function f=bpfun() %Neural Network %build train and simulate %bpfun.m %輸入矩陣的范圍(數(shù)據(jù)源) P=[20 3000;1400 3500;500 3500;]; %創(chuàng)建網(wǎng)絡(luò) net=newff(P,[12 4 1],{'tansig' 'tansig' 'purelin','traingd'}); %初始化神經(jīng)網(wǎng)絡(luò) net=init(net); %設(shè)置訓(xùn)練的參數(shù) %停止方式按鍵 %pause; %兩次顯示之間的訓(xùn)練步數(shù)默認(rèn)為25 net.trainParam.show=50; %lr不能選擇太大,太大了會(huì)造成算法不收斂,太小了會(huì)使訓(xùn)練時(shí)間太長 %一般選擇0.01~0.1之間,27,七. BP網(wǎng)絡(luò)的其他學(xué)習(xí)算法的應(yīng)用,%訓(xùn)練速度 net.trainParam.lr=0.05; %訓(xùn)練次數(shù) 默認(rèn)為100 net.trainParam.epochs=3000; %訓(xùn)練時(shí)間 默認(rèn)為inf,表示訓(xùn)練時(shí)間不限 net.trainParam.time=6000; %訓(xùn)練的目標(biāo) 默認(rèn)為0 net.trainParam.goal=0.001; %建立源數(shù)據(jù)的矩陣 SourceDataConvert=importdata('bp_train_sample_data.dat'); SourceData=SourceDataConvert' TargetConvert=importdata('bp_train_target_data.dat'); Target=TargetConvert' %神經(jīng)網(wǎng)絡(luò)訓(xùn)練 net=train(net,SourceData,Target) %顯示訓(xùn)練后的各層權(quán)重 mat1=cell2mat(net.IW(1,1)),28,七. BP網(wǎng)絡(luò)的其他學(xué)習(xí)算法的應(yīng)用,mat2=cell2mat(net.LW(2,1)) mat3=cell2mat(net.LW(3,2)) %讀取仿真文件數(shù)據(jù) simulate_data_convert=importdata('bp_simulate_data.dat'); simulate_data=simulate_data_convert'; result=sim(net,simulate_data) 多次運(yùn)行上述程序,可以得到滿足誤差要求的網(wǎng)絡(luò)的訓(xùn)練結(jié)果: T TRAINLM-calcjx, Epoch 0/3000, Time 0.0%, MSE 14.4178/0.001, Gradient 10741.9/1e-010 TRAINLM-calcjx, Epoch 40/3000, Time 0.0%, MSE 0.000438/0.001, Gradient 0.196/1e-07 TRAINLM, Performance goal met,29,七. BP網(wǎng)絡(luò)的其他學(xué)習(xí)算法的應(yīng)用,如圖3為神經(jīng)網(wǎng)絡(luò)訓(xùn)練模塊,在這里可以查看訓(xùn)練結(jié)果、訓(xùn)練狀態(tài)等。訓(xùn)練后即可達(dá)到誤差要求,結(jié)果如圖4所示。,圖3 神經(jīng)網(wǎng)絡(luò)訓(xùn)練模塊,圖4 訓(xùn)練曲線圖,30,七. BP網(wǎng)絡(luò)的其他學(xué)習(xí)算法的應(yīng)用,對(duì)預(yù)測樣本值的仿真輸出結(jié)果如下: result = 1 至 9 列 3.0016 0.9969 3.0011 3.9847 1.9460 1.9460 3.0016 3.9873 10 至 18 列 0.9973 3.0016 2.9982 0.9969 2.0245 3.9873 1.9460 3.9850 3.0016 19 至 27 列 3.8844 1.9460 2.0245 2.5884 3.0016 0.9969 0.9969 3.9816 0.9969 28 至 30 列 3.0016 3.0016 3.0016 3.0015,31,七. BP網(wǎng)絡(luò)的其他學(xué)習(xí)算法的應(yīng)用,2.采用帶動(dòng)量最速下降法進(jìn)行學(xué)習(xí) 帶動(dòng)量最速下降法在非二次型較強(qiáng)的區(qū)域能使目標(biāo)函數(shù)收斂較快。BP算法的最速下降方向即目標(biāo)函數(shù)E在權(quán)值空間上的負(fù)梯度方向,在無約束優(yōu)化目標(biāo)函數(shù)E時(shí),相鄰的兩個(gè)搜索方向正交。因此,當(dāng)權(quán)值接近于極值區(qū)域時(shí),每次迭代移動(dòng)的步長很小,呈現(xiàn)出“鋸齒”現(xiàn)象,嚴(yán)重影響了收斂速率,有時(shí)甚至不能收斂而在局部極值區(qū)域振蕩。 為此,提出了各種加速學(xué)習(xí)速率的優(yōu)化算法,其中加動(dòng)量項(xiàng)的算法為當(dāng)前廣為應(yīng)用的方法,其權(quán)值修正公式:? 為動(dòng)量系數(shù)。,32,七. BP網(wǎng)絡(luò)的其他學(xué)習(xí)算法的應(yīng)用,完整程序代碼:,function f=bpfun() %Neural Network %build train and simulate %bpfun.m %輸入矩陣的范圍(數(shù)據(jù)源) P=[20 3000;1400 3500;500 3500;]; %創(chuàng)建網(wǎng)絡(luò) net=newff(P,[12 4 1],{'tansig' 'tansig' 'purelin','traingdx'}); %初始化神經(jīng)網(wǎng)絡(luò) net=init(net); %設(shè)置訓(xùn)練的參數(shù) %停止方式按鍵 %pause; %兩次顯示之間的訓(xùn)練步數(shù)默認(rèn)為25 net.trainParam.show=50; %lr不能選擇太大,太大了會(huì)造成算法不收斂,太小了會(huì)使訓(xùn)練時(shí)間太長,33,七. BP網(wǎng)絡(luò)的其他學(xué)習(xí)算法的應(yīng)用,%一般選擇0.01~0.1之間 %訓(xùn)練速度 net.trainParam.lr=0.05; %速度增長系數(shù) net.trainParam.lr_inc=1.2; %速度下調(diào)系數(shù) net.trainParam.lr_dec=0.8; %添加動(dòng)量因子 net.trainParam.mc=0.9; %訓(xùn)練次數(shù) 默認(rèn)為100 net.trainParam.epochs=3000; %訓(xùn)練時(shí)間 默認(rèn)為inf,表示訓(xùn)練時(shí)間不限 net.trainParam.time=6000; %訓(xùn)練的目標(biāo) 默認(rèn)為0 net.trainParam.goal=0.001; %建立源數(shù)據(jù)的矩陣 SourceDataConvert=importdata('bp_train_sample_data.dat'); SourceData=SourceDataConvert' TargetConvert=importdata('bp_train_target_data.dat');,34,七. BP網(wǎng)絡(luò)的其他學(xué)習(xí)算法的應(yīng)用,Target=TargetConvert' %神經(jīng)網(wǎng)絡(luò)訓(xùn)練 net=train(net,SourceData,Target) %顯示訓(xùn)練后的各層權(quán)重 mat1=cell2mat(net.IW(1,1)) mat2=cell2mat(net.LW(2,1)) mat3=cell2mat(net.LW(3,2)) %讀取仿真文件數(shù)據(jù) simulate_data_convert=importdata('bp_simulate_data.dat'); simulate_data=simulate_data_convert'; result=sim(net,simulate_data),多次運(yùn)行上述程序,可以得到滿足誤差要求的網(wǎng)絡(luò)的訓(xùn)練結(jié)果: TRAINLM-calcjx, Epoch 0/3000, Time 0.0%, MSE 14.0262/0.001, Gradient 7315.37/1e-010 TRAINLM-calcjx, Epoch 335/3000, Time 0.0%, MSE 0.000442/0.001, Gradient1.19/1e-7 TRAINLM, Performance goal met,35,七. BP網(wǎng)絡(luò)的其他學(xué)習(xí)算法的應(yīng)用,神經(jīng)網(wǎng)絡(luò)訓(xùn)練工具如圖5所示,訓(xùn)練后即可達(dá)到誤差要求,結(jié)果如圖6所示。,圖5神經(jīng)網(wǎng)絡(luò)訓(xùn)練工具箱,圖6 訓(xùn)練曲線圖,36,七. BP網(wǎng)絡(luò)的其他學(xué)習(xí)算法的應(yīng)用,對(duì)預(yù)測樣本值的仿真輸出結(jié)果如下: result = 1 至 9 列 3.0296 2.9309 1.5220 2.9256 3.9876 1.9889 1.9904 3.0315 3.9897 10 至 18 列 1.3982 3.0274 2.5501 1.0009 2.0562 3.9843 2.0376 3.9917 3.0733 19 至 27 列 3.9915 2.0045 2.0212 1.8679 2.9285 0.9716 1.0037 4.0013 1.4880 28 至 31 列 2.9780 2.9835 2.9379 3.0032,37,七. BP網(wǎng)絡(luò)的其他學(xué)習(xí)算法的應(yīng)用,3.采用共軛梯度法進(jìn)行學(xué)習(xí) 共軛梯度法是重要的無約束最優(yōu)化方法,它利用一維搜索所得到的極小點(diǎn)處的最速下降方向生成共軛方向,并據(jù)此搜索目標(biāo)函數(shù)極值。共軛梯度法的計(jì)算步驟和梯度法的計(jì)算步驟差別不大,主要差別在搜索方向的不同,即每一步的方向不再是梯度方向,而是一種共軛的方向,由原來的負(fù)梯度方向加上一個(gè)修正項(xiàng)(前一點(diǎn)的梯度乘以適當(dāng)?shù)南禂?shù))得到共軛方向。設(shè)梯度向量為g,共軛向量為P,則第k次的共軛方向?yàn)?其中, 為標(biāo)量,其大小必須保證 和 為共軛方向。,38,七. BP網(wǎng)絡(luò)的其他學(xué)習(xí)算法的應(yīng)用,可以說共軛梯度法綜合利用過去的梯度和現(xiàn)在某點(diǎn)的梯度信息,用其線性組合來構(gòu)造更好的搜索方向,這樣權(quán)值的修正公式 : 共軛梯度法在二次型較強(qiáng)的區(qū)域能使目標(biāo)函數(shù)收斂較快。而一般目標(biāo)函數(shù)在極小點(diǎn)附近的形態(tài)近似于二次函數(shù),故共軛梯度法在極小點(diǎn)附近有較好的收斂性。,39,七. BP網(wǎng)絡(luò)的其他學(xué)習(xí)算法的應(yīng)用,完整程序代碼: function f=bpfun() %Neural Network %build train and simulate %bpfun.m %輸入矩陣的范圍(數(shù)據(jù)源) P=[20 3000;1400 3500;500 3500;]; %創(chuàng)建網(wǎng)絡(luò) net=newff(P,[12 4 1],{'tansig' 'tansig' 'purelin','traincgb'}); %初始化神經(jīng)網(wǎng)絡(luò) net=init(net); %設(shè)置訓(xùn)練的參數(shù) %停止方式按鍵 %pause; %兩次顯示之間的訓(xùn)練步數(shù)默認(rèn)為25 net.trainParam.show=50; %lr不能選擇太大,太大了會(huì)造成算法不收斂,太小了會(huì)使訓(xùn)練時(shí)間太長 %一般選擇0.01~0.1之間 %訓(xùn)練速度,40,七. BP網(wǎng)絡(luò)的其他學(xué)習(xí)算法的應(yīng)用,net.trainParam.lr=0.05; %訓(xùn)練次數(shù) 默認(rèn)為100 net.trainParam.epochs=3000; %訓(xùn)練時(shí)間 默認(rèn)為inf,表示訓(xùn)練時(shí)間不限 net.trainParam.time=6000; %訓(xùn)練的目標(biāo) 默認(rèn)為0 net.trainParam.goal=0.001; %建立源數(shù)據(jù)的矩陣 SourceDataConvert=importdata('bp_train_sample_data.dat'); SourceData=SourceDataConvert' TargetConvert=importdata('bp_train_target_data.dat'); Target=TargetConvert' %神經(jīng)網(wǎng)絡(luò)訓(xùn)練 net=train(net,SourceData,Target) %顯示訓(xùn)練后的各層權(quán)重 mat1=cell2mat(net.IW(1,1)) mat2=cell2mat(net.LW(2,1)) mat3=cell2mat(net.LW(3,2)) %讀取仿真文件數(shù)據(jù) simulate_data_convert=importdata('bp_simulate_data.dat'); simulate_data=simulate_data_convert'; result=sim(net,simulate_data),41,七. BP網(wǎng)絡(luò)的其他學(xué)習(xí)算法的應(yīng)用,多次運(yùn)行上述程序,可以得到滿足誤差要求的網(wǎng)絡(luò)的訓(xùn)練結(jié)果: TRAINLM-calcjx, Epoch 0/3000, Time 0.0%, MSE 14.0262/0.001, Gradient 7315.37/1e-010 TRAINLM-calcjx, Epoch 7/3000, Time 0.0%, MSE 6.11e-0.5/0.001, Gradient 0.185/1e-07 TRAINLM, Performance goal met 對(duì)預(yù)測樣本值的仿真輸出結(jié)果如下: result = 1 至 9 列 2.9953 2.9953 1.0002 2.9962 3.9875 2.6118 2.6118 2.9953 4.0590 10 至 18 列 3.2461 2.9953 3.4248 1.0096 1.9975 3.9875 2.0003 3.9875 2.9953 19 至 27 列 3.9875 2.6118 1.9975 3.0221 2.9953 1.0011 1.0137 3.9888 1.0001 28 至 31 列 2.9953 2.9953 2.9953 1.9339,42,七. BP網(wǎng)絡(luò)的其他學(xué)習(xí)算法的應(yīng)用,如圖7為神經(jīng)網(wǎng)絡(luò)訓(xùn)練模塊,在這里可以查看訓(xùn)練結(jié)果、訓(xùn)練狀態(tài)等。訓(xùn)練后即可達(dá)到誤差要求,結(jié)果如圖8所示。,圖7神經(jīng)網(wǎng)絡(luò)訓(xùn)練模塊,圖8 訓(xùn)練曲線圖,43,八.結(jié)論,BP神經(jīng)網(wǎng)絡(luò)是神經(jīng)網(wǎng)絡(luò)中最常用的算法。它包括梯度法、帶動(dòng)量最速下降法及共軛梯度法。梯度下降算法、LM算法及共軛梯度法均可以實(shí)現(xiàn)對(duì)給定數(shù)據(jù)的分類。而梯度下降算法存在收斂速度慢、網(wǎng)絡(luò)易陷于局部極小,學(xué)習(xí)過程常常發(fā)生震蕩等缺點(diǎn),在實(shí)際應(yīng)用中,梯度下降算法很難勝任。而LM算法的收斂速度快,如果要求的精度比較高,則該算法優(yōu)點(diǎn)尤其突出。共軛梯度法在二次型較強(qiáng)的區(qū)域能使目標(biāo)函數(shù)收斂較快,而一般目標(biāo)函數(shù)在極小點(diǎn)附近的形態(tài)近似于二次函數(shù),故共軛梯度法在極小點(diǎn)附近有較好的收斂性。,44,- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
200 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- BP 神經(jīng)網(wǎng)絡(luò) 設(shè)計(jì) ppt 課件
鏈接地址:http://www.820124.com/p-1258519.html