模式識別實驗二_第1頁
模式識別實驗二_第2頁
模式識別實驗二_第3頁
模式識別實驗二_第4頁
模式識別實驗二_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、感知器準(zhǔn)則算法1、 實驗原理: 假設(shè)已知一組容量為N的樣本集,其中為維增廣樣本向量,分別來自和類。如果有一個線性機器能把每個樣本正確分類,即存在一個權(quán)向量,使得對于任何,都有>0,而對一任何,都有<0,則稱這組樣本集線性可分;否則稱線性不可分。若線性可分,則必存在一個權(quán)向量,能將每個樣本正確分類。 由上面原理可知,樣本集,是線性可分,則必存在某個權(quán)向量,使得 如果我們在來自類的樣本前面加上一個負(fù)號,即令=,其中,則也有>0。因此,我們令那么,我們就可以不管樣本原來的類型標(biāo)志,只要找到一個對全部樣本都滿足>0,的權(quán)向量就行了。此過程稱為樣本的規(guī)范化,成為規(guī)范化增廣樣本向量

2、,后面我們用來表示它。我們的目的是找到一個解向量,使得為此我們首先考慮處理線性可分問題的算法,先構(gòu)造這樣一個準(zhǔn)則函數(shù)式中是被權(quán)向量錯分類的樣本集合。錯分類時有,或因此總是大于等于0。下一步便是求解使達(dá)到極小值時的解向量。這里我們采用梯度下降法,首先對求梯度,這是一個純量函數(shù)對向量的求導(dǎo)問題,不難看出梯度是一個向量,其方向是J增長最快的方向,福梯度方向是減小最快的,這指引我們在求準(zhǔn)則函數(shù)的極小值時沿負(fù)梯度方向能最快達(dá)到極小值點。梯度下降法的迭代公式為,將上式代入得這樣,經(jīng)過有限次修改,一定能找到一個解向量。其中任意給定權(quán)向量。3、 實驗內(nèi)容:實驗所需樣本數(shù)據(jù)如下表給出(每個樣本空間為兩維,x1表

3、示一維的值,x2表示第二維的值),編制程序?qū)崿F(xiàn)、類的分類。我們將符號簡化,把=1。這樣,梯度下降算法可以寫成其中對任何都有。實驗時,=1的情況來找到一個解向量。 感知器算法實驗數(shù)據(jù)樣本12345678910W1x10.16.8-3.52.04.13.1-0.80.95.03.9x21.17.1-4.12.72.85.0-1.31.26.44.0W2x17.1-1.44.56.34.21.42.42.58.44.1x24.2-4.30.01.61.9-3.2-4.0-6.13.7-2.2W3x1-3.00.52.9-0.1-4.0-1.3-3.4-4.1-5.11.9x2-2.98.72.15.

4、22.23.76.23.41.65.1W4x1-2.0-8.9-4.2-8.5-6.7-0.5-5.3-8.7-7.1-8.0x2-8.40.2-7.7-3.2-4.2-9.2-6.7-6.4-9.7-6.34、 實驗結(jié)果及分析:1)梯度下降算法輸出結(jié)果:a=0;0;0的收斂步驟 a=1;1;1的收斂步驟 a=1;1;1將更快收斂到。由此可見對于同一個樣本,權(quán)向量的初值會影響到修正時的收斂步數(shù)。梯度下降算法:主要程序clear;W1=0.1 6.8 -3.5 2.0 4.1 3.1 -0.8 0.9 5.0 3.9; 1.1 7.1 -4.1 2.7 2.8 5.0 -1.3 1.2 6.4

5、4.0;W2=7.1 -1.4 4.5 6.3 4.2 1.4 2.4 2.5 8.4 4.1; 4.2 -4.3 0.0 1.6 1.9 -3.2 -4.0 -6.1 3.7 -2.2;W3=-3.0 0.5 2.9 -0.1 -4.0 -1.3 -3.4 -4.1 -5.1 1.9; -2.9 8.7 2.1 5.2 2.2 3.7 6.2 3.4 1.6 5.1;%將所有訓(xùn)練樣本進(jìn)行規(guī)范化增廣ww1=ones(1,size(W1,2);W1; ww2=ones(1,size(W2,2);W2;ww3=ones(1,size(W3,2);W3;%對W1、W2訓(xùn)練w12=ww1,-ww2;

6、%增廣樣本規(guī)范化為w12y=zeros(1,size(w12,2); %產(chǎn)生大小為1行,size(x,2)列的矩陣,矩陣元素都是0。a=0;0;0;%初始權(quán)向量ak=0;while any(y<=0) for i=1:size(y,2) %y矩陣的列數(shù) y(i)=a'*w12(:,i); %a表示轉(zhuǎn)秩 end; a=a+(sum(w12(:,find(y<=0)')' %修正向量a k=k+1;%收斂步數(shù)end;a %顯示最終求得的權(quán)向量a的值k %迭代次數(shù)值subplot(1,2,1);plot(W1(1,:),W1(2,:),'r.');

7、hold on;plot(W2(1,:),W2(2,:),'*');%找到樣本在坐標(biāo)中的集中區(qū)域,以便于打印樣本坐標(biāo)圖xmin=min(min(W1(1,:),min(W2(1,:);xmax=max(max(W1(1,:),max(W2(1,:);xindex=xmin-1:(xmax-xmin)/100:xmax+1;yindex=-a(2)*xindex/a(3)-a(1)/a(3);plot(xindex,yindex);BP算法實現(xiàn)異或問題一、實驗原理 BP算法由于硬限幅函數(shù)是非可微函數(shù),不能實現(xiàn)多層神經(jīng)網(wǎng)絡(luò)的一種有效的LMS學(xué)習(xí)算法。而BP算法中所用到的是Sigmo

8、id型函數(shù),它既具有完成分類所需的非線性特性,又具有實現(xiàn)LMS算法所需的可微特性。采用S型函數(shù)的神經(jīng)元的輸入和輸出之間的關(guān)系為: 采用了S型函數(shù)就可將用于單神經(jīng)元的LMS學(xué)習(xí)算法適當(dāng)推廣,得到一種適用于前向多層神經(jīng)網(wǎng)絡(luò)的有效學(xué)習(xí)算法。我們現(xiàn)在著手研究一個采用S型函數(shù)的前向三層神經(jīng)網(wǎng)絡(luò)來說明其原理。對于訓(xùn)練樣本p,它的輸入是N維矢量X,X=,網(wǎng)絡(luò)的第一,二,三層分別包括J,K,M個神經(jīng)元,它的總輸出是一個M維矢量,Y=,第i層到第i+1層之間的權(quán)重系數(shù)用來表示??稍O(shè)前向三層神經(jīng)網(wǎng)絡(luò)輸出各個分量的理想值是,i=0,1,M-1,而這些分量的實際值是, i=0,1,M-1,理想值和實際值之間的誤差是。

9、各輸出誤差的平方和可以表示為: 現(xiàn)在我們希望改變網(wǎng)絡(luò)中的各個加權(quán)系數(shù),使得盡可能的減小。為此我們可以采取最陡下降算法的公式來調(diào)整權(quán)重系數(shù)。公式如下: 式中的是學(xué)習(xí)的步幅,它應(yīng)隨學(xué)習(xí)過程而變化。對于通用神經(jīng)層,它的各個輸出與各個輸入之間的關(guān)系可以表示為: 如果設(shè),則式中的表示s型函數(shù)。我們不難看出上式即為給輸入加一個恒等于1部分,在神經(jīng)網(wǎng)絡(luò)中也應(yīng)相應(yīng)的加一個節(jié)點,而且這個節(jié)點的權(quán)系數(shù)就是這一層網(wǎng)絡(luò)的閾值。我們省去具體的推導(dǎo)過程,下面直接給出結(jié)果。(1)對于第三層: (2)對于第二層: (3)對于第一層: 其中: 通過以上公式就可得到三層神經(jīng)網(wǎng)絡(luò)的各個權(quán)系數(shù)的調(diào)整量??梢姡@一算法的計算過程是先計

10、算第三層(即輸出層)的各項“誤差分量”,然后用計算第二層(隱含層)的“等效誤差分量” ,最后再用計算第一層的“等效誤差分量” 。只要算出這些誤差分量,系數(shù)調(diào)整量即可立即求得。所以,這是一種由輸出層向輸入層逐步反推的學(xué)習(xí)算法,故稱之為“逆推”學(xué)習(xí)算法,即BP算法。二、實驗步驟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表示第二

11、組。2、樣本數(shù)據(jù)處理。把數(shù)據(jù)重新打亂順序進(jìn)行輸入,可以讓數(shù)據(jù)更加具備典型性和更優(yōu)良的泛化能力。3、建立神經(jīng)網(wǎng)絡(luò),設(shè)置網(wǎng)絡(luò)層數(shù)為3層,即輸入層、隱層、輸出層;輸入層神經(jīng)元數(shù)為2,隱層神經(jīng)元數(shù)為5,輸出層神經(jīng)元數(shù)為1。4、確定訓(xùn)練函數(shù)進(jìn)行訓(xùn)練。選擇適用于模式識別分類時速度最快的彈性算法。5、完成訓(xùn)練后,調(diào)用訓(xùn)練結(jié)果,輸入測試數(shù)據(jù)進(jìn)行測試,分析分類結(jié)果。三、實驗結(jié)果及分析運行程序后得到樣本(包括訓(xùn)練樣本和測試樣本),樣本如圖所示。設(shè)定網(wǎng)絡(luò)誤差為0.001,樣經(jīng)過訓(xùn)練,經(jīng)過30次迭代,得到的滿足誤差限的網(wǎng)絡(luò)性能曲線如圖所示。對于訓(xùn)練好的滿足要求的網(wǎng)絡(luò)測試剩下40個樣本,第1-10個樣本在以點(1,0)

12、為中心的區(qū)域內(nèi),第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ò)近似分界面,如圖所示。上圖中,兩條點線兩側(cè)的區(qū)域在此網(wǎng)絡(luò)中分為第一類,中間所夾的區(qū)域為第二類,點線為大致的分界面。顯然網(wǎng)絡(luò)確實可以實現(xiàn)非線性樣本特征的分類。異或問題的BP網(wǎng)絡(luò)分類法程序:clea

13、rn=30;a=1 0;0 1;0 0;1 1;for k=1:4x(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); %產(chǎn)生n行1列均值為a(k,1)a(k,2)標(biāo)準(zhǔn)差為0.05的正態(tài)分布 %取1至n行,1至2列的數(shù)據(jù) x(n*(k-1)+1):(n*k),3)=abs(floor(k/2-0.1)-0.9); %不大于的最大整數(shù)endfigure; %畫兩類樣本for i=1:2*n plot(x(i,1),x(i,2),'

14、r+') hold onendfor i=1:2*n plot(x(i+2*n,1),x(i+2*n,2),'b+') hold onendxlabel('x(1)')ylabel('x(2)')title('訓(xùn)練樣本')grid onaxis(-0.5 1.5 -0.5 1.5)M=20;%抽取樣本訓(xùn)練for k=1:4 for i = 1:M xpt(i+(k-1)*M,:)=x(i+(k-1)*n,:); endend%訓(xùn)練網(wǎng)絡(luò)xd=xpt(randperm(numel(xpt)/3),:); %P=randperm

15、(N,K)返回一個包含K個在0到N之間的隨機元素向量,P=randperm(N)返回一個包含N個在0到N之間產(chǎn)生的隨機元素的向量,各行各列重新排P=xd(:,1:2);T=xd(:,3);net=newff(minmax(P'),6,1,'logsig' 'logsig','trainrp'); %創(chuàng)建一個反饋式網(wǎng)絡(luò),6為隱含層節(jié)點數(shù),1為輸出層節(jié)點數(shù),'logsig'為輸入層到隱含層、隱含層到輸出層的傳遞函數(shù),'trainrp'為輸出層的訓(xùn)練函數(shù)net.trainparam.epochs=1000; %網(wǎng)

16、絡(luò)最大收斂次數(shù)net.trainparam.goal=0.0001; %收斂誤差net=train(net,P',T'); %調(diào)用TRAINGND算法訓(xùn)練BP網(wǎng)絡(luò)sim(net,P') %BP網(wǎng)絡(luò)進(jìn)行仿真結(jié)果figure %畫網(wǎng)絡(luò)分界面s=100;for i=1:s for j=1:s tt(:,(i-1)*s+j)=i/s;j/s; Y=sim(net,tt(:,(i-1)*s+j); %對bp網(wǎng)絡(luò)進(jìn)行仿真 if(abs(Y-0.5)<0.01) plot(i/s,j/s,'b.') hold on end endendgrid ontitle(

17、'網(wǎng)絡(luò)分界面')N=n-M;%提取測試樣本for k=1:4 for i = 1:N x_test(i+(k-1)*N,:) = x(i+(k-1)*n+M,1:2); endendP_p=x_test'Y=sim(net,P_p)Iris數(shù)據(jù)BP神經(jīng)網(wǎng)絡(luò)分類1、 實驗原理BP算法由于硬限幅函數(shù)是非可微函數(shù),不能實現(xiàn)多層神經(jīng)網(wǎng)絡(luò)的一種有效的LMS學(xué)習(xí)算法。而BP算法中所用到的是Sigmoid型函數(shù),它既具有完成分類所需的非線性特性,又具有實現(xiàn)LMS算法所需的可微特性。采用S型函數(shù)的神經(jīng)元的輸入和輸出之間的關(guān)系為: 采用了S型函數(shù)就可將用于單神經(jīng)元的LMS學(xué)習(xí)算法適當(dāng)推廣

18、,得到一種適用于前向多層神經(jīng)網(wǎng)絡(luò)的有效學(xué)習(xí)算法。對于訓(xùn)練樣本p,它的輸入是N維矢量X,X=,網(wǎng)絡(luò)的第一,二,三層分別包括J,K,M個神經(jīng)元,它的總輸出是一個M維矢量,Y=,第i層到第i+1層之間的權(quán)重系數(shù)用來表示。可設(shè)前向三層神經(jīng)網(wǎng)絡(luò)輸出各個分量的理想值是,i=0,1,M-1,而這些分量的實際值是, i=0,1,M-1,理想值和實際值之間的誤差是。各輸出誤差的平方和可以表示為: 現(xiàn)在我們希望改變網(wǎng)絡(luò)中的各個加權(quán)系數(shù),使得盡可能的減小。為此我們可以采取最陡下降算法的公式來調(diào)整權(quán)重系數(shù)。公式為: 式中的是學(xué)習(xí)的步幅,它應(yīng)隨學(xué)習(xí)過程而變化。對于通用神經(jīng)層,它的各個輸出與各個輸入之間的關(guān)系可以表示為:

19、 如果設(shè),則式中的表示s型函數(shù)。我們不難看出上式即為給輸入加一個恒等于1部分,在神經(jīng)網(wǎng)絡(luò)中也應(yīng)相應(yīng)的加一個節(jié)點,而且這個節(jié)點的權(quán)系數(shù)就是這一層網(wǎng)絡(luò)的閾值。我們省去具體的推導(dǎo)過程,下面直接給出結(jié)果。(1)對于第三層: (2)對于第二層: (3)對于第一層: 其中: 通過以上公式就可得到三層神經(jīng)網(wǎng)絡(luò)的各個權(quán)系數(shù)的調(diào)整量??梢?,這一算法的計算過程是先計算第三層(即輸出層)的各項“誤差分量”,然后用計算第二層(隱含層)的“等效誤差分量” ,最后再用計算第一層(隱含層)的“等效誤差分量” 。只要算出這些誤差分量,系數(shù)調(diào)整量即可立即求得。所以,這是一種由輸出層向輸入層逐步反推的學(xué)習(xí)算法,故稱之為“逆推”學(xué)

20、習(xí)算法,或BP算法。二、實驗步驟1、確定訓(xùn)練樣本和測試樣本。三類樣本各取前30個樣本作為訓(xùn)練,剩下的用作測試分類樣本。由于有3個類別,我們用2個數(shù)表示類別,0.9 0.1表示第一組,0.1 0.9表示第二組,0.9 0.9表示第三組,然后將二進(jìn)制數(shù)組合成目標(biāo)向量。2、樣本數(shù)據(jù)處理,包括歸一化和打亂樣本數(shù)據(jù)順序。其中把數(shù)據(jù)重新打亂順序進(jìn)行輸入,可以讓數(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ù)。4、確定訓(xùn)練

21、函數(shù)進(jìn)行訓(xùn)練。當(dāng)連續(xù)兩迭代的梯度方向相同時,可將權(quán)值和閾值的修正值乘以一個增量因子,使其修正值增加,當(dāng)連續(xù)兩迭代的梯度方向相反時,可將權(quán)值和閾值的修正值乘以一個減量因子,使其修正值減小;當(dāng)梯度為零時,權(quán)值和修正值保持不變;當(dāng)權(quán)值的修正發(fā)生震蕩時,其修正值將減小。5、完成訓(xùn)練后,調(diào)用訓(xùn)練結(jié)果,輸入測試數(shù)據(jù),進(jìn)行測試。6、分析分類結(jié)果。三、實驗結(jié)果及分析三類樣本前30個樣本訓(xùn)練,設(shè)定誤差為0.0045,經(jīng)過1178次迭代,得到的誤差性能曲線如圖所示。同時得到的統(tǒng)計結(jié)果為n1 = 20 n2 = 19 n3 = 18。分類結(jié)果如下圖所示,圖中“+”為第一組測試樣本,“*”為第二組測試樣本,“*”為第

22、三組測試樣本,可以看到第一組測試樣本分類完全正確,第二類測試樣本有一個樣本分到了第三組中,第三組測試樣本有2個分到第二組中。對于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)解。Iris數(shù)據(jù)BP神經(jīng)網(wǎng)絡(luò)分類程序:cleariris = load('iris.txt');M=30;for k=1:3 for i = 1:M for j = 1:4 x1(

23、i+(k-1)*M,j) = iris(i+(k-1)*50,j+1); endd1(i+(k-1)*M,1)=abs(mod(k,2)-0.1); %mod兩數(shù)相除的余數(shù) 0.9 0.1 0.9 d1(i+(k-1)*M,2)=abs(floor(k/2)-0.1); 0.9 0.9 0.9 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);%歸一化,Pn,minp,maxp,Tn,mint,maxt=premnmx(P,T);P,T分別為原始輸入和輸出數(shù)據(jù),minp和maxp分別為P中的最小值和最大值。mint和maxt分別為T的最小值和最大值。premnmx函數(shù)用于將網(wǎng)絡(luò)的輸入數(shù)據(jù)或輸出數(shù)據(jù)進(jìn)行歸一化,歸一化后的數(shù)據(jù)將分布在-1,1區(qū)間內(nèi)。P=P' T=d'net=newff(minmax(P),12,2,'logsig' 'logsig','trainrp');net.trainparam.epochs=2000;net.trainpara

溫馨提示

  • 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

提交評論