MATLAB神經網路(五):RBF網路

1988年,Broomhead和Lowc根據生物神經元具有局部響應這一特點,將RBF引入神經網路設計中,產生了RBF(Radical Basis Function)。1989年,Jackson論證了RBF神經網路對非線性連續函數的一致逼近性能。

RBF的基本思想是:用RBF作為隱單元的「基」構成隱藏層空間,隱含層對輸入矢量進行變換,將低維的模式輸入數據變換到高維空間內,使得在低維空間內的線性不可分的問題在高維空間內線性可分。

RBF神經網路結構簡單、訓練簡潔而且學習收斂速度快,能夠逼近任意非線性函數,因此已被廣泛應用於時間序列分析、模式識別、非線性控制和圖形處理等領域。

RBF神經網路學習演算法需要求解的參數有3個:基函數的中心、方差以及隱含層到輸出層的權值。下面介紹自組織的中心選取方法。該方法由兩個階段組成:一是自組織學習階段,此階段為無監督學習過程,求解隱含層基函數的中心與方差,二是有監督學習階段,此階段求解隱含層到輸出層之間的權值。

RBF網路的相關函數

[net,tr]=newrb(P,T,GOAL,SPREAD,MN,DF)nP為Q組輸入向量組成的R*Q維矩陣;T為Q組目標分類向量組成的S*Q維矩陣;GOAL為均方誤差目標(Mean Squared Error Goal)n默認為0;SPREAD為徑向基函數的擴展速度,默認為1;MN為神經元的最大數目,默認為Q;DF為兩次顯示之間所添加n的神經元數目,默認為25;NET為返回值,一個RBF網路,tr為返回值,訓練記錄。n用newrb()創建RBF網路是一個不但嘗試的過程,在創建過程中,需要不斷增加中間層神經元和個數,知道網路的輸出誤差滿足於顯色丁的值為止。nnnewrbe()n該函數用於設計一個嚴格(exact)徑向基網路。其調用格式為nnet=newrbe(P,T,SPREAD)nnradbas()n該函數為徑向基傳遞函數。其調用格式為nA=radbas(N)ninfo=radbas(code)n其中,N為輸入向量的S*Q維矩陣,A為函數返回矩陣,與N一一對應,即N中對的每個元素通過徑向基函數得到A。ninfo=radbas(code)表示根據code值的不同返回有關函數的不同信息。n

使用徑向基函數來實現非線性的函數回歸,代碼如下

interval=0.01;n%產生x1 x2nx1=-1.5:interval:1.5;nx2=-1.5:interval:1.5;n%按照函數先求得相應的函數值,作為網路的輸出。nF=20-+x1.^2-10*cos(2*pi*x1)+x2.^2-10*cos(2*pi*x2);n%%網路建立和訓練nnet=newrbe([x1;x2],F)n%%網路的效果驗證nty=sim(net,[x1;x2]);n%使用圖像來看網路對非線性函數的擬合效果nfigurenplot3(x1,x2,F,rd);nhold on;nplot3(x1,x2,ty,b-);nview(113,36)ntitle(可視化的方法觀察嚴格的RBF神經網路的擬合效果)nxlabel(x1)nylabel(x2)nzlabel(F)ngrid onn下面用approximate RBF網路對同意函數進行擬合。nnnnet=newrb(x,F);ninterval=0.1;;n[i,j]=meshgrid(-1.5:interval:1.5);nrow=size(i);ntx1=i(:);ntx1=tx1;ntx2=j(:);ntx2=tx2;ntx=[tx1;tx2];nnty=sim(net,tx);n%使用圖像,畫出3維圖ninterval=0.1;n[x1,x2]=meshgrid(-1.5:interval:1.5);nF=20-+x1.^2-10*cos(2*pi*x1)+x2.^2-10*cos(2*pi*x2);nsubplot(1,3,1)nmesh(x1,x2,F);nzlim([0,60])ntitle(真正的函數圖像)nv=reshape(ty,row);nsubplot(1,3,2)nmesh(i,j,v);nzlim([0,60])ntitle(RBF神經網路效果)n%誤差圖像nsubplot(1,3,3)nmesh(x1,x2,F-v);nzlim([0,60])ntitle(誤差圖像)nset(gcf,position,[300,250,900,400])n

推薦閱讀:

初學 Matlab 要如何開始?
MATLAB圖像處理中的小波變換
matlab有類似c語言struct又能用tabulate處理的類型嗎?
Matlab和C混合編程

TAG:MATLAB | 神经网络 |