BP神經網絡設計ppt課件
《BP神經網絡設計ppt課件》由會員分享,可在線閱讀,更多相關《BP神經網絡設計ppt課件(44頁珍藏版)》請在裝配圖網上搜索。
基于BP網絡數(shù)據分類設計,1,目 錄,前饋神經網絡簡介 BP網絡簡介 BP神經網絡的工作原理 BP網絡的特點 BP網絡的建立及執(zhí)行 BP網絡應用于模式分類 BP網絡的其他學習算法的應用 結論,2,一.前饋神經網絡簡介,對于很多應用,一個確定的網絡計算與確定的時間行為一樣重要。網絡架構允許中間單元的循環(huán)結構計算依靠神經元內部激活的輸出值。即使輸入不變化,輸出也可能不同,直到網絡內的計算達到穩(wěn)定狀態(tài),單元之間不僅有單方向連接的網絡,而且有反方向的網絡,這些相反方向的網絡稱為前饋網絡。,3,一.前饋神經網絡簡介,前饋神經網絡包括感知器網絡和BP神經網絡。 感知器網絡是最簡單的前饋網絡,主要用于模式分類,也可用在基于模式分類的學習控制和多模態(tài)控制中。感知器網絡中神經元的變換函數(shù)采用的是符號函數(shù),即輸出為二值量1或?1,它主要用于模式分類。 BP神經網絡的神經元變換函數(shù)采用S形函數(shù)時,系統(tǒng)的輸出量將為0~1之間的連續(xù)量,它可實現(xiàn)從輸入到輸出的任意非線性映。,4,二.BP神經網絡簡介,BP神經網絡即反向傳播網絡,這是由于該算法連接權的調整采用的是反向傳播(Back Propagation)。在人工神經網絡的實際應用中,BP網絡廣泛應用于函數(shù)逼近、模式識別/分類、數(shù)據壓縮等,80%~90%的人工神經網絡模型是采用BP網絡或它的變化形式,它也是前饋網絡的核心部分,體現(xiàn)了人工神經網絡最精華的部分。,5,三.BP神經網絡的工作原理,6,三.BP神經網絡的工作原理,BP神經元與其他神經元類似,不同的是BP神經元的傳輸函數(shù)為非線性函數(shù),最常用的函數(shù)是 和 函數(shù),有的輸出層也采用線性函數(shù)( )。其輸出為 BP網絡一般為多層神經網絡。由BP神經網絡構成的二層網絡如圖1.2所示。,7,三.BP神經網絡的工作原理,8,三.BP神經網絡的工作原理,BP網絡的信息從輸入層流向輸出層,因此是一種多層前饋神經網絡。 如果多層BP網絡的輸出層采用S形傳輸函數(shù)(如 ),其輸出值將會限制在一個較小的范圍內(0,1);而采用線性傳輸函數(shù)則可以取任意值。 在確定了BP網絡的結構后,要通過輸入和輸出樣本集對網絡進行訓練,以及對網絡的閾值和權值進行學習和修正,以使網絡實現(xiàn)給定的輸入輸出映射關系。,9,三.BP神經網絡的工作原理,BP網絡的學習過程包含兩個過程,即正向傳播和反向傳播。 (1)正向傳播。輸入已知學習樣本,通過設置的網絡結構和前一次迭代的權值和閾值,從網絡的第一層向后計算各神經元輸出。 (2)反向傳播:反向傳播時,對權值和閾值進行修改:從最后一層向前計算各權值和閾值對總誤差的影響(梯度),據此對各權值和閾值進行修改。 以上兩個過程反復交替,直到達到收斂為止,10,三.BP神經網絡的工作原理,由于誤差逐層往回傳遞,以修正層與層間的權值和閾值,所以稱該算法為誤差反向傳播(back propagation)算法,這種誤差反傳學習算法可以推廣到有若干個中間層的多層網絡,因此該多層網絡常稱之為BP網絡。標準的BP算法,其權值的修正是沿著誤差性能函數(shù)梯度的反方向進行的。,11,四.BP網絡的特點,1.BP網絡具有以下主要優(yōu)點: 只有有足夠多的隱含層結點和隱含層,BP網絡可以逼近任意的非線性映射關系 BP網絡的學習算法屬于局部逼近的方法,因此它具有較好的泛化能力 2.BP網絡的主要缺點如下: 收斂速度慢 容易陷入局部極值點 難以確定隱含層和隱含層結點的個數(shù) ?,12,五. BP網絡的建立及執(zhí)行,1.建立BP網絡 首先需要選擇網絡的層數(shù)和每層的結點數(shù)。 網絡輸入層和輸出層的結點個數(shù)與輸入變量個數(shù)及輸出變量個數(shù)對應。 隱含層結點的選擇應遵循以下原則:盡量選取較少的隱含層結點,使網絡盡量簡單。一種方法是先設置較少結點,對網絡進行訓練,并測試網絡的逼近能力,然后逐漸增加結點數(shù),直到測試的誤差不再有明顯的較小為止;另一種方法是先設置較多的結點,再對網絡進行訓練,從而得到一個適合規(guī)模的網絡結構。 一般采用單隱層的BP網絡就可以實現(xiàn)較好的訓練效果。,13,五. BP網絡的建立及執(zhí)行,2.確定網絡的初始權值 BP網絡的各層初始權值一般選取一組較小的非零隨機數(shù)。為了避免出現(xiàn)局部極值問題,可選取多組初始權值,最后選用最好的一種。 3.產生訓練樣本 建立樣本數(shù)據之前,首先要收集大量的原始數(shù)據,并在大量的原始數(shù)據中確定出最主要的輸入模式,分析數(shù)據的相關性,選擇其中最主要的輸入模式,并確保所選擇的輸入模式互不相同。 在確定了最重要的輸入模式后,需要進行尺度變換和預處理。使得經變換后的數(shù)據對神經網絡更容易學習和訓練。 確定樣本大小,樣本大小取決于許多因素,如網絡的大小、網絡測試的需要和輸入/輸出的分布等。其中,網絡的大小是最關鍵的因素。通常較大的網絡需要較多的訓練數(shù)據。經驗規(guī)則:訓練模式應是連接權總數(shù)的3~5倍。,14,五. BP網絡的建立及執(zhí)行,4.訓練網絡 通常訓練一個網絡需要多次,但并非訓練的次數(shù)越多,越能得到正確的輸入/輸出的映射關系。由于所收集的數(shù)據都是包含噪聲的,訓練的次數(shù)過多,網絡將包含噪聲的數(shù)據都記錄下來。 5.測試網絡 在測試時需要保持連接權系數(shù)不改變,用確定的數(shù)據作為網絡的輸入,正向運行該網絡,檢驗輸出的均方誤差。 6.判斷網絡 在實際確定BP網絡時,通常應將訓練和測試交替進行,即每訓練一次,同時用測試數(shù)據測試一遍網絡,畫出均方誤差隨訓練次數(shù)的變化曲線。,15,六. BP網絡應用于模式分類,,1.網絡創(chuàng)建及重要代碼介紹 (1)網絡的構建: 首先需要構造一個網絡構架,函數(shù)newff()就是構建神經網的。 下面具體介紹參數(shù)的選擇。 網絡層數(shù):選用兩層BP網絡即可。 輸入層節(jié)點數(shù)m:其節(jié)點數(shù)取決于矢量的維數(shù)。 輸出層節(jié)點數(shù)n:輸出層的節(jié)點數(shù)取決于兩個方面,輸出數(shù)據類型和表示該類型所需數(shù)據大小。當BP網絡用于模式分類時,則輸出層的節(jié)點數(shù)可根據待分類模式數(shù)來確定。 隱含層結點數(shù):對于用于模式識別/分類的BP網絡,隱層節(jié)點數(shù)可以參照以下公式進行設計: 其中,m為輸入層結點數(shù);n為輸出層結點數(shù);a為1~10之間的常數(shù)。,16,六. BP網絡應用于模式分類,,傳輸函數(shù):BP網絡中的傳輸函數(shù)通常采用S( )形函數(shù),在某些特定情況下還可能采用純線性( )函數(shù)。 訓練函數(shù):BP神經網絡的訓練函數(shù)有 等,每種訓練函數(shù)各有特點,但是沒有一種函數(shù)能適應所有情況下的訓練過程。代碼如下: net=newff(minmax(p),[12,4],{'tansig','logsig'},'trainlm'); (2)網絡的初始化: 網絡的輸入向量: 。 網絡的目標向量: 。 網絡初始化程序:net=init(net)。,17,六. BP網絡應用于模式分類,,(3)訓練參數(shù)初始化: 代碼如下: max_epoch=x; %最大訓練次數(shù)x err_goal=E ; %期望誤差 (4)網絡訓練: net=train(net,p,t); (5)網絡仿真: y=sim(net,p_test); (6)結果對比:,18,六. BP網絡應用于模式分類,,2.完整代碼 本例采用BP網絡對酒瓶顏色進行分類。其中,前29組數(shù)據已確定類別,后30組數(shù)據待確定類別。 BP網絡的輸入和輸出層的神經元數(shù)目由輸入和輸出向量的維數(shù)確定。輸入向量由A、B、C這三列決定,所以輸入層的神經元數(shù)目為3;輸出結果有4種模式,1、2、3、4代表4種輸出,因此輸出層的神經元個數(shù)為4。模式識別程序如下: %構建訓練樣本中的輸入向量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網絡應用于模式分類,,%構建訓練樣本中的目標向量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)建一個BP網絡,隱含層有12個神經元,傳遞函數(shù)為tansig %中間層有4個神經元,傳遞函數(shù)為logsig,訓練函數(shù)為trainlm net=newff(minmax(p),[12,4],{'tansig','logsig'},'trainlm'); %訓練次數(shù) 默認為100 net.trainParam.epochs=500; %訓練的目標 默認為0 net.trainParam.goal=0.01; %神經網絡訓練 net=train(net,p,t); %測試樣本進行分類 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網絡應用于模式分類,,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); 運行上述程序代碼后,可以得到網絡的訓練結果: 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網絡應用于模式分類,,如圖1為神經網絡訓練模塊,在這里可以查看訓練結果、訓練狀態(tài)等??梢娋W絡經過460次訓練后即可達到誤差要求,結果如圖2所示。從圖中可以看出網絡具有非常好的學習性能,網絡輸出與目標輸出的誤差已經達到了預先的要求。,圖1 神經網絡訓練圖,圖2 訓練曲線圖,22,六. BP網絡應用于模式分類,,對預測樣本值的仿真輸出結果如下: 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網絡的其他學習算法的應用,在應用其他學習方法訓練BP網絡之前,先將樣本數(shù)據(bp_train_sample_data.dat)、目標數(shù)據(bp_train_target_data.dat)及待分類數(shù)據(bp_simulate_data.dat)存放到數(shù)據文件,各文件內容及格式如圖所示。,24,1.采用梯度法進行學習 前向神經網絡BP算法采用最速下降尋優(yōu)算法,即梯度法。假設有N對學習樣本,采取批處理學習方法,目標函數(shù): 其中 、 分別為第K對樣本的期望輸出和實際輸出向量。E反映網絡輸出與樣本的總體誤差。學習過程就是通過修改各神經元之間的權值,使得目標函數(shù)E的值最小,權值按下列公式修正: 其中,?為學習速率。,七. BP網絡的其他學習算法的應用,25,七. BP網絡的其他學習算法的應用,應用traingd函數(shù)訓練,應調整全值和閾值沿著表現(xiàn)函數(shù)的負梯度方向,如果應用梯度下降法訓練函數(shù),需要在訓練之前將網絡構成函數(shù)的相應參數(shù)trainFcn設置為traingd。 與函數(shù)traingd有關的訓練參數(shù)有:epochs、goal、lr、max_fail、min_grad、show、time,如果不設置就表示應用內定缺省值。 net.trainParam.epochs 最大訓練次數(shù)(缺省為10) net.trainParam.goal 訓練要求精度(缺省為0) net.trainParam.lr 學習率(缺省為0.01) net.trainParam.max_fail 最大失敗次數(shù)(缺省為5) net.trainParam.min_grad 最小梯度要求(缺省為1e-10) net.trainParam.show 顯示訓練迭代過程(NaN表示不顯示,缺省為25) net.trainParam.time 最大訓練時間(缺省為inf) 訓練過程中,只要滿足下面四個條件之一,訓練就會停止: 超過最大迭代次數(shù)epochs。 表現(xiàn)函數(shù)值小于誤差指標goal。 梯度值小于要求精度mingrad。 訓練所用時間超過時間限制time。 最大失敗次數(shù)超過次數(shù)限制max_fail.,26,七. BP網絡的其他學習算法的應用,完整程序代碼: function f=bpfun() %Neural Network %build train and simulate %bpfun.m %輸入矩陣的范圍(數(shù)據源) P=[20 3000;1400 3500;500 3500;]; %創(chuàng)建網絡 net=newff(P,[12 4 1],{'tansig' 'tansig' 'purelin','traingd'}); %初始化神經網絡 net=init(net); %設置訓練的參數(shù) %停止方式按鍵 %pause; %兩次顯示之間的訓練步數(shù)默認為25 net.trainParam.show=50; %lr不能選擇太大,太大了會造成算法不收斂,太小了會使訓練時間太長 %一般選擇0.01~0.1之間,27,七. BP網絡的其他學習算法的應用,%訓練速度 net.trainParam.lr=0.05; %訓練次數(shù) 默認為100 net.trainParam.epochs=3000; %訓練時間 默認為inf,表示訓練時間不限 net.trainParam.time=6000; %訓練的目標 默認為0 net.trainParam.goal=0.001; %建立源數(shù)據的矩陣 SourceDataConvert=importdata('bp_train_sample_data.dat'); SourceData=SourceDataConvert' TargetConvert=importdata('bp_train_target_data.dat'); Target=TargetConvert' %神經網絡訓練 net=train(net,SourceData,Target) %顯示訓練后的各層權重 mat1=cell2mat(net.IW(1,1)),28,七. BP網絡的其他學習算法的應用,mat2=cell2mat(net.LW(2,1)) mat3=cell2mat(net.LW(3,2)) %讀取仿真文件數(shù)據 simulate_data_convert=importdata('bp_simulate_data.dat'); simulate_data=simulate_data_convert'; result=sim(net,simulate_data) 多次運行上述程序,可以得到滿足誤差要求的網絡的訓練結果: 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網絡的其他學習算法的應用,如圖3為神經網絡訓練模塊,在這里可以查看訓練結果、訓練狀態(tài)等。訓練后即可達到誤差要求,結果如圖4所示。,圖3 神經網絡訓練模塊,圖4 訓練曲線圖,30,七. BP網絡的其他學習算法的應用,對預測樣本值的仿真輸出結果如下: 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網絡的其他學習算法的應用,2.采用帶動量最速下降法進行學習 帶動量最速下降法在非二次型較強的區(qū)域能使目標函數(shù)收斂較快。BP算法的最速下降方向即目標函數(shù)E在權值空間上的負梯度方向,在無約束優(yōu)化目標函數(shù)E時,相鄰的兩個搜索方向正交。因此,當權值接近于極值區(qū)域時,每次迭代移動的步長很小,呈現(xiàn)出“鋸齒”現(xiàn)象,嚴重影響了收斂速率,有時甚至不能收斂而在局部極值區(qū)域振蕩。 為此,提出了各種加速學習速率的優(yōu)化算法,其中加動量項的算法為當前廣為應用的方法,其權值修正公式:? 為動量系數(shù)。,32,七. BP網絡的其他學習算法的應用,完整程序代碼:,function f=bpfun() %Neural Network %build train and simulate %bpfun.m %輸入矩陣的范圍(數(shù)據源) P=[20 3000;1400 3500;500 3500;]; %創(chuàng)建網絡 net=newff(P,[12 4 1],{'tansig' 'tansig' 'purelin','traingdx'}); %初始化神經網絡 net=init(net); %設置訓練的參數(shù) %停止方式按鍵 %pause; %兩次顯示之間的訓練步數(shù)默認為25 net.trainParam.show=50; %lr不能選擇太大,太大了會造成算法不收斂,太小了會使訓練時間太長,33,七. BP網絡的其他學習算法的應用,%一般選擇0.01~0.1之間 %訓練速度 net.trainParam.lr=0.05; %速度增長系數(shù) net.trainParam.lr_inc=1.2; %速度下調系數(shù) net.trainParam.lr_dec=0.8; %添加動量因子 net.trainParam.mc=0.9; %訓練次數(shù) 默認為100 net.trainParam.epochs=3000; %訓練時間 默認為inf,表示訓練時間不限 net.trainParam.time=6000; %訓練的目標 默認為0 net.trainParam.goal=0.001; %建立源數(shù)據的矩陣 SourceDataConvert=importdata('bp_train_sample_data.dat'); SourceData=SourceDataConvert' TargetConvert=importdata('bp_train_target_data.dat');,34,七. BP網絡的其他學習算法的應用,Target=TargetConvert' %神經網絡訓練 net=train(net,SourceData,Target) %顯示訓練后的各層權重 mat1=cell2mat(net.IW(1,1)) mat2=cell2mat(net.LW(2,1)) mat3=cell2mat(net.LW(3,2)) %讀取仿真文件數(shù)據 simulate_data_convert=importdata('bp_simulate_data.dat'); simulate_data=simulate_data_convert'; result=sim(net,simulate_data),多次運行上述程序,可以得到滿足誤差要求的網絡的訓練結果: 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網絡的其他學習算法的應用,神經網絡訓練工具如圖5所示,訓練后即可達到誤差要求,結果如圖6所示。,圖5神經網絡訓練工具箱,圖6 訓練曲線圖,36,七. BP網絡的其他學習算法的應用,對預測樣本值的仿真輸出結果如下: 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網絡的其他學習算法的應用,3.采用共軛梯度法進行學習 共軛梯度法是重要的無約束最優(yōu)化方法,它利用一維搜索所得到的極小點處的最速下降方向生成共軛方向,并據此搜索目標函數(shù)極值。共軛梯度法的計算步驟和梯度法的計算步驟差別不大,主要差別在搜索方向的不同,即每一步的方向不再是梯度方向,而是一種共軛的方向,由原來的負梯度方向加上一個修正項(前一點的梯度乘以適當?shù)南禂?shù))得到共軛方向。設梯度向量為g,共軛向量為P,則第k次的共軛方向為 其中, 為標量,其大小必須保證 和 為共軛方向。,38,七. BP網絡的其他學習算法的應用,可以說共軛梯度法綜合利用過去的梯度和現(xiàn)在某點的梯度信息,用其線性組合來構造更好的搜索方向,這樣權值的修正公式 : 共軛梯度法在二次型較強的區(qū)域能使目標函數(shù)收斂較快。而一般目標函數(shù)在極小點附近的形態(tài)近似于二次函數(shù),故共軛梯度法在極小點附近有較好的收斂性。,39,七. BP網絡的其他學習算法的應用,完整程序代碼: function f=bpfun() %Neural Network %build train and simulate %bpfun.m %輸入矩陣的范圍(數(shù)據源) P=[20 3000;1400 3500;500 3500;]; %創(chuàng)建網絡 net=newff(P,[12 4 1],{'tansig' 'tansig' 'purelin','traincgb'}); %初始化神經網絡 net=init(net); %設置訓練的參數(shù) %停止方式按鍵 %pause; %兩次顯示之間的訓練步數(shù)默認為25 net.trainParam.show=50; %lr不能選擇太大,太大了會造成算法不收斂,太小了會使訓練時間太長 %一般選擇0.01~0.1之間 %訓練速度,40,七. BP網絡的其他學習算法的應用,net.trainParam.lr=0.05; %訓練次數(shù) 默認為100 net.trainParam.epochs=3000; %訓練時間 默認為inf,表示訓練時間不限 net.trainParam.time=6000; %訓練的目標 默認為0 net.trainParam.goal=0.001; %建立源數(shù)據的矩陣 SourceDataConvert=importdata('bp_train_sample_data.dat'); SourceData=SourceDataConvert' TargetConvert=importdata('bp_train_target_data.dat'); Target=TargetConvert' %神經網絡訓練 net=train(net,SourceData,Target) %顯示訓練后的各層權重 mat1=cell2mat(net.IW(1,1)) mat2=cell2mat(net.LW(2,1)) mat3=cell2mat(net.LW(3,2)) %讀取仿真文件數(shù)據 simulate_data_convert=importdata('bp_simulate_data.dat'); simulate_data=simulate_data_convert'; result=sim(net,simulate_data),41,七. BP網絡的其他學習算法的應用,多次運行上述程序,可以得到滿足誤差要求的網絡的訓練結果: 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 對預測樣本值的仿真輸出結果如下: 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網絡的其他學習算法的應用,如圖7為神經網絡訓練模塊,在這里可以查看訓練結果、訓練狀態(tài)等。訓練后即可達到誤差要求,結果如圖8所示。,圖7神經網絡訓練模塊,圖8 訓練曲線圖,43,八.結論,BP神經網絡是神經網絡中最常用的算法。它包括梯度法、帶動量最速下降法及共軛梯度法。梯度下降算法、LM算法及共軛梯度法均可以實現(xiàn)對給定數(shù)據的分類。而梯度下降算法存在收斂速度慢、網絡易陷于局部極小,學習過程常常發(fā)生震蕩等缺點,在實際應用中,梯度下降算法很難勝任。而LM算法的收斂速度快,如果要求的精度比較高,則該算法優(yōu)點尤其突出。共軛梯度法在二次型較強的區(qū)域能使目標函數(shù)收斂較快,而一般目標函數(shù)在極小點附近的形態(tài)近似于二次函數(shù),故共軛梯度法在極小點附近有較好的收斂性。,44,- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設計者僅對作品中獨創(chuàng)性部分享有著作權。
- 關 鍵 詞:
- BP 神經網絡 設計 ppt 課件
裝配圖網所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
鏈接地址:http://www.szxfmmzy.com/p-1258519.html