線性分類BP神經(jīng)網(wǎng)絡(luò)_第1頁
線性分類BP神經(jīng)網(wǎng)絡(luò)_第2頁
線性分類BP神經(jīng)網(wǎng)絡(luò)_第3頁
線性分類BP神經(jīng)網(wǎng)絡(luò)_第4頁
線性分類BP神經(jīng)網(wǎng)絡(luò)_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、模式識別實驗報告 西安交通大學(xué) 感知器準(zhǔn)則線性分類一、實驗原理線性分類法的判別函數(shù)是的線性函數(shù),即 (1)式中是維特征向量,是權(quán)向量,是個常數(shù),稱為閾值權(quán),并定義如下決策規(guī)則:對于感知準(zhǔn)則線性分類法,我們的工作就是用樣本按感知準(zhǔn)則算法去估計和,并按照決策規(guī)則將未知樣本歸入正確的類別中去。我們將式(1)定義的線性判別函數(shù)寫成如下形式 (2)其中為增廣樣本向量,為增廣權(quán)向量。w1yx1x2xdw2wdw0mi圖-1 單層感知器模型假設(shè)期望輸出為d,我們希望調(diào)整權(quán)系數(shù),使得誤差盡可能小。對于關(guān)于求導(dǎo),有 (3)這樣我們就得到權(quán)系數(shù)調(diào)整的梯度下降算法,即 (4)其中。通過迭代運算即可得到滿足要求的。二

2、、實驗步驟1. 設(shè)置變量和參數(shù)。下式中n為迭代次數(shù),則為輸入向量,也即訓(xùn)練樣本;為權(quán)值向量。2. 初始化,賦給一個較小的隨機非零值,n=0。3. 對于一組輸入樣本,指定它的期望輸出d。如果,則d=1,如果,則d=-1。4. 計算實際輸出。5. 調(diào)整感知器的權(quán)值向量。下式中p為學(xué)習(xí)速率,則6. 判斷是否滿則條件(這里的條件可以使誤差小于設(shè)定的值,或者權(quán)值變化很小,另外,在實現(xiàn)過程中還應(yīng)設(shè)置最大迭代次數(shù),以防算法不收斂程序進入死循環(huán)):若滿足,算法結(jié)束,否則,將n加1,轉(zhuǎn)第3步重新執(zhí)行。三、實驗結(jié)果及分析由于訓(xùn)練樣本的輸入順序?qū)W(xué)習(xí)的結(jié)果和收斂速度有一定影響,故一般情況下訓(xùn)練樣本最好在各類樣本中輪

3、流進行,以防止權(quán)值調(diào)整的不均勻。因此我們首先將樣本順序打亂,然后開始訓(xùn)練。1. 分別用第一組和第二組的30個數(shù)據(jù)進行訓(xùn)練,剩下的各20個樣本進行測試分類。結(jié)果如下:columns 1 through 20 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 columns 21 through 40 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1前20個為第一組,后20個為第二組,分類正確無誤。某次實驗誤差絕對值收斂曲線如圖2。圖-2 1、2組誤差絕對值收斂曲線2. 分別用第一組和第三組的30個

4、數(shù)據(jù)進行訓(xùn)練,剩下的各20個樣本進行測試分類。結(jié)果如下: columns 1 through 20 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 columns 21 through 40 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1前20個為第一組,后20個為第三組,分類正確無誤。某次實驗誤差絕對值收斂曲線如圖3。圖-3 1、3組分類誤差絕對值收斂曲線3. 分別用第二組和第三組的30個數(shù)據(jù)進行訓(xùn)練,剩下的各20個樣本進行測試分類。結(jié)果如下: columns 1 through 20 1

5、 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 columns 21 through 40 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1前20個為第一組,后20個為第三組,由上面結(jié)果可知,第二組一個樣本被錯誤分到第三類中去。某次實驗誤差絕對值收斂曲線如圖4。圖-4 2、3組誤差絕對值收斂曲線4. 如果我們用樣本未被打亂的第二組和第三組的30個數(shù)據(jù)進行訓(xùn)練,剩下的各20個樣本進行測試分類運行后結(jié)果如下,顯然第二類測試樣本分類基本錯誤,且誤差不收斂。columns 1 through 20 -

6、1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 -1columns 21 through 40 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1圖-5 未將樣本次序打亂時2、3組誤差絕對值收斂曲線附1:感知器線性分類源程序11clear% 原始數(shù)據(jù)導(dǎo)入iris = load('c:matlab7work模式識別iris.txt');m=30;for k=1:2 for i = 1:m x1(i+(k-1)*m,1) =1; for j = 2:5

7、%第一組和第二組分類訓(xùn)練樣本 %x1(i+(k-1)*m,j) = iris(i+(k-1)*50,j); %第一組和第三組分類訓(xùn)練樣本 %x1(i+(k-1)*m,j) = iris(i+(k-1)*100,j); %第二組和第三組分類訓(xùn)練樣本 x1(i+(k-1)*m,j) = iris(i+k*50,j); end d1(i+(k-1)*m,1)=2*(1.5-k); endendx2(:,1:5)=x1;x2(:,6)=d1;%將數(shù)據(jù)順序打亂xd=x2(randperm(numel(x2)/6),:);%xd=x2;x=xd(:,1:5);d=xd(:,6);w=rand(5,1)*(

8、1-0)%初始權(quán)系數(shù)p=0.2;%學(xué)習(xí)因子n=2*m;%最大迭代次數(shù)為60*n次for l=1:60 for i=1:n if(x(i,:)*w>0) y(i)=1; else y(i)=-1; end e(i)=d(i)-y(i); w=w+p*e(i)*x(i,:)' plot(i+n*(l-1),sum(abs(e),'r.') hold on end if sum(abs(e)<1 break; endxlabel('迭代次數(shù)')ylabel('error')title('誤差的收斂曲線')k=50-m

9、;for k=1:2 for i = 1:k xt(i+(k-1)*k,1) =1; for j = 2:5 %第一組和第二組分類訓(xùn)練樣本 %xt(i+(k-1)*k,j) = iris(i+(k-1)*50+m,j); %第一組和第三組分類訓(xùn)練樣本 %xt(i+(k-1)*k,j) = iris(i+(k-1)*100+m,j); %第二組和第三組分類訓(xùn)練樣本 xt(i+(k-1)*k,j) = iris(i+k*50+m,j); end endendg=2*(xt(:,:)*w>0)-0.5); %測試g' iris數(shù)據(jù)bp神經(jīng)網(wǎng)絡(luò)分類一、實驗原理bp網(wǎng)絡(luò)實質(zhì)上實現(xiàn)了一個從輸

10、入到輸出的映射功能,而數(shù)學(xué)理論已證明它具有實現(xiàn)任何復(fù)雜非線性映射的功能,把輸入空間變換到其隱層輸出所張成的空間,在這個空間中分類問題變得比較容易。這使得它特別適合于求解內(nèi)部機制復(fù)雜的問題,比如模式識別等。我們無需建立模型或了解其內(nèi)部過程,只需輸入樣本,獲得輸出。只要bp網(wǎng)絡(luò)結(jié)構(gòu)優(yōu)秀,一般20個輸入函數(shù)以下的問題都能在50000次的學(xué)習(xí)以內(nèi)收斂到最低誤差附近。網(wǎng)絡(luò)能通過學(xué)習(xí)帶正確答案的實例集自動提取“合理的”求解規(guī)則,即具有自學(xué)習(xí)能力,同時網(wǎng)絡(luò)具有一定的推廣、概括能力。bp網(wǎng)絡(luò)的工作過程由正向計算輸出和誤差反向傳播兩部分組成。在正向計算輸出過程中,從輸入層向后逐層計算輸出,直到輸出層的最終輸出值

11、,之后計算實際輸出與目標(biāo)輸出之間的誤差。在誤差反向傳播中,從輸出層開始反向逐層傳播誤差信號,修正各層權(quán)值。反復(fù)執(zhí)行這兩個過程,直到知道網(wǎng)絡(luò)輸出值和目標(biāo)值之間的誤差小于給定精度要求。bp算法通過學(xué)習(xí)來修正多層神經(jīng)網(wǎng)絡(luò)的權(quán)值,采用梯度下降法實現(xiàn)最小化,使得網(wǎng)絡(luò)輸出值和目標(biāo)值之間誤差平方最小。其學(xué)習(xí)算法有最速下降bp算法、動量bp算法、學(xué)習(xí)率可變的bp算法、彈性算法、變梯度算法和lm算法等。三層網(wǎng)絡(luò)的bp網(wǎng)絡(luò)結(jié)構(gòu)如圖-1所示。圖-1 bp網(wǎng)絡(luò)結(jié)構(gòu)圖二、實驗步驟matlab中有專門的神經(jīng)網(wǎng)絡(luò)工具箱,可以調(diào)用相關(guān)函數(shù)完成網(wǎng)絡(luò)的訓(xùn)練和測試。下面的程序首先用樣本訓(xùn)練bp網(wǎng)絡(luò)權(quán)值,達到誤差限,滿足要求,然后將

12、待識別樣本輸入到訓(xùn)練好的網(wǎng)絡(luò)中,得到輸出結(jié)果,根據(jù)判別規(guī)則,判斷其類別。當(dāng)網(wǎng)絡(luò)用于分類時,樣本的期望輸出值為d = 0 或d=1 ,但由于 y 值在u = ± 時才為0 或1,這有可能將某些網(wǎng)絡(luò)權(quán)值驅(qū)向無窮大。為了避免這種飽和現(xiàn)象,期望輸出可適當(dāng)放寬,如y>0.9 為1,y<0.1 為0。bp算法步驟如下:1、確定訓(xùn)練樣本和測試樣本。三類樣本各取前30個樣本作為訓(xùn)練,剩下的用作測試分類樣本。由于有3個類別,我們用2個數(shù)表示類別,0.9 0.1表示第一組,0.1 0.9表示第二組,0.9 0.9表示第三組,然后將二進制數(shù)組合成目標(biāo)向量。2、樣本數(shù)據(jù)處理,包括歸一化和打亂樣本

13、數(shù)據(jù)順序。其中把數(shù)據(jù)重新打亂順序進行輸入,可以讓數(shù)據(jù)更加具備典型性和更優(yōu)良的泛化能力!3、建立神經(jīng)網(wǎng)絡(luò),設(shè)置網(wǎng)絡(luò)層數(shù)為3層,即輸入層、隱層、輸出層;輸入層神經(jīng)元數(shù)為4,隱層神經(jīng)元數(shù)為10,,輸出層神經(jīng)元數(shù)為2,隱含層的傳輸函數(shù)為sigmoid函數(shù),輸出層傳輸函數(shù)亦為sigmoid函數(shù)(logsig),如圖-2所示。圖-2 logsig函數(shù)4、確定訓(xùn)練函數(shù)進行訓(xùn)練。我們選擇適用于模式識別分類時速度最快的彈性算法。即當(dāng)連續(xù)兩迭代的梯度方向相同時,可將權(quán)值和閾值的修正值乘以一個增量因子,使其修正值增加,當(dāng)連續(xù)兩迭代的梯度方向相反時,可將權(quán)值和閾值的修正值乘以一個減量因子,使其修正值減?。划?dāng)梯度為零時

14、,權(quán)值和修正值保持不變;當(dāng)權(quán)值的修正發(fā)生震蕩時,其修正值將減小。在matlab中,此算法為trainrp函數(shù)。5、完成訓(xùn)練后,調(diào)用訓(xùn)練結(jié)果,輸入測試數(shù)據(jù),進行測試。6、分析分類結(jié)果。三、實驗結(jié)果及分析三類樣本前30個樣本訓(xùn)練,設(shè)定誤差為0.0045,經(jīng)過1178次迭代,得到的誤差性能曲線如圖-3所示。圖-3 誤差性能曲線同時得到的統(tǒng)計結(jié)果為n1 = 20 n2 = 19 n3 = 18。分類結(jié)果如圖-4所示,圖中“+”為第一組測試樣本,“*”為第二組測試樣本,“*”為第三組測試樣本,可以看到第一組測試樣本分類完全正確,第二類測試樣本有一個樣本分到了第三組中,第三組測試樣本有2個分到第二組中。圖

15、-4 三組測試樣本分類結(jié)果示意圖對于bp神經(jīng)網(wǎng)絡(luò),只要網(wǎng)絡(luò)隱層合適,訓(xùn)練的樣本有足夠的代表性,經(jīng)訓(xùn)練后的網(wǎng)絡(luò)能夠有效且快捷地解決很多非線性多類樣本的模式分類問題,它在工程應(yīng)用上也取得了很大的成功。但是對于網(wǎng)絡(luò)層數(shù),接點數(shù)、初始權(quán)值和學(xué)習(xí)速率能諸多因素有時還需憑經(jīng)驗確定,另外它所得到的解不唯一,且不能保證得到最優(yōu)解。附2:iris數(shù)據(jù)bp神經(jīng)網(wǎng)絡(luò)分類源程序clear% 原始數(shù)據(jù)導(dǎo)入iris = load('c:matlab7work模式識別iris.txt');m=30;for k=1:3 for i = 1:m for j = 1:4 x1(i+(k-1)*m,j) = iri

16、s(i+(k-1)*50,j+1); endd1(i+(k-1)*m,1)=abs(mod(k,2)-0.1); d1(i+(k-1)*m,2)=abs(floor(k/2)-0.1); endendx2(:,1:4)=x1;x2(:,5:6)=d1;%訓(xùn)練樣本順序打亂xd=x2(randperm(numel(x2)/6),:);x=xd(:,1:4); d=xd(:,5:6);p,minp,maxp = premnmx(x);%歸一化p=p' t=d'net=newff(minmax(p),12,2,'logsig' 'logsig','

17、;trainrp');net.trainparam.epochs=2000;net.trainparam.goal=0.0045;net=train(net,p,t);sim(net,p)n=50-m;for k=1:3 for i = 1 : n for j = 1:4 p_test(i+(k-1)*n,j) = iris(i+(k-1)*50+m,j+1); end endendp_p,minp,maxp = premnmx(p_test);p_p=p_p'y=sim(net,p_p)figuren1=0;n2=0;n3=0;%統(tǒng)計各組分類正確數(shù)for k=1:3 for

18、i=1:n switch k case 1 plot(y(1,i+(k-1)*n),y(2,i+(k-1)*n),'r+') if(y(1,i)>0.5 && y(2,i)<0.5) n1=n1+1; end case 2 plot(y(1,i+(k-1)*n),y(2,i+(k-1)*n),'gs') if(y(1,i+n)<0.5 && y(2,i+n)>0.5) n2=n2+1; end case 3 plot(y(1,i+(k-1)*n),y(2,i+(k-1)*n),'b*') i

19、f(y(1,i+2*n)>0.5 && y(2,i+2*n)>0.5) n3=n3+1; end end hold on endendhold onplot(0:0.001:1,0.5,'-b' )hold onplot(0.5,0:0.001:1,'-b')axis(-0.2 1.2 -0.2 1.2)xlabel('y(1)')ylabel('y(2)')title('分類結(jié)果')grid on模式識別實驗報告 異或問題的bp網(wǎng)絡(luò)分類法一、實驗原理bp網(wǎng)絡(luò)的非線性映射特性使得它可以實

20、現(xiàn)線性不可分樣本的模式分類。具體參見實驗二iris數(shù)據(jù)bp神經(jīng)網(wǎng)絡(luò)分類的實驗原理部分。二、實驗步驟1、生成訓(xùn)練樣本和測試樣本。在(1,0)(0,1)(0,0)(1,1)四個點附近各有隨機生成服從高斯分布的30個樣本,其中20個用作訓(xùn)練,剩下10個用作測試。根據(jù)異或問題要求,將(1,0)(0,1)附近的點歸為第一組,(0,0)(1,1)附近的點歸為第二組。由于有2個類別,對于目標(biāo)結(jié)果,我們用0.9表示第一組,0.1表示第二組。2、樣本數(shù)據(jù)處理。把數(shù)據(jù)重新打亂順序進行輸入,可以讓數(shù)據(jù)更加具備典型性和更優(yōu)良的泛化能力!3、建立神經(jīng)網(wǎng)絡(luò),設(shè)置網(wǎng)絡(luò)層數(shù)為3層,即輸入層、隱層、輸出層;輸入層神經(jīng)元數(shù)為2,

21、隱層神經(jīng)元數(shù)為5,,輸出層神經(jīng)元數(shù)為1,隱含層的傳輸函數(shù)為sigmoid函數(shù),輸出層傳輸函數(shù)亦為sigmoid函數(shù)(logsig),如圖-2所示。4、確定訓(xùn)練函數(shù)進行訓(xùn)練。選擇適用于模式識別分類時速度最快的彈性算法。5、完成訓(xùn)練后,調(diào)用訓(xùn)練結(jié)果,輸入測試數(shù)據(jù),進行測試。6、分析分類結(jié)果。三、實驗結(jié)果及分析運行程序后得到樣本(包括訓(xùn)練樣本和測試樣本),樣本如圖-1所示。圖-1 訓(xùn)練樣本點設(shè)定網(wǎng)絡(luò)誤差為0.001,樣經(jīng)過訓(xùn)練,經(jīng)過30次迭代,得到的滿足誤差限的網(wǎng)絡(luò)性能曲線如圖-2所示。圖-2 誤差性能曲線 對于訓(xùn)練好的滿足要求的網(wǎng)絡(luò)測試剩下40個樣本,第1-10個樣本在以點(1,0)為中心的區(qū)域內(nèi)

22、,第11-20個樣本在以點(0,1)為中心的區(qū)域內(nèi),第21-30個樣本在以點(0,0)為中心的區(qū)域內(nèi),第31-40個樣本在以點(1,1)為中心的區(qū)域內(nèi),按異或規(guī)則,我們希望得到的前20個值在0.9左右,后20個值在0.1左右。測試結(jié)果如下,顯然與我們期望吻合,故分類正確。 如果我們以y=0.5為閾值,當(dāng)y0.5時,將樣本歸為第一類,當(dāng)y0.5時,將樣本歸為第一類,則可得到某個滿足要求的網(wǎng)絡(luò)近似分界面,如圖-3所示。圖-3 網(wǎng)絡(luò)近似分界面上圖中,兩條點線兩側(cè)的區(qū)域在此網(wǎng)絡(luò)中分為第一類,中間所夾的區(qū)域為第二類,點線為大致的分界面。顯然網(wǎng)絡(luò)確實可以實現(xiàn)非線性樣本特征的分類。附3:異或問題的bp網(wǎng)絡(luò)分類法源程序15clear%生成樣本n=30;a=1 0;0 1;0 0;1 1;for k=1:4 x(n*(k-1)+1):(n*k),1:2)=random('normal',a(k,1),0.05,n,1),random('normal',a(k,2),0.05,n,1); x(n*(k-1)+1):(n*k),3)=abs(floor(k/2-0.1)-0.9);endfigure;%畫兩類樣本for i=1:2*n plot(x(i,1),x(i,2),'r+') hold onendfor i=1:

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論