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