RBF神經網絡資料_第1頁
RBF神經網絡資料_第2頁
RBF神經網絡資料_第3頁
已閱讀5頁,還剩12頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、徑向基函數(RBF)神經網絡RBF 簡單說明一下為什么 RBF 網絡學習收斂得比較快。當網絡的一個或多個可調參數(權值或閾值對任何一個輸出都有影響時,這樣的網絡稱為全局逼近網絡。由于對于每次輸入,網絡上的每一個權 值都要調整,從而導致全局逼近網絡的學習速度很慢。BP網絡就是一個典型的例子。如果對于輸入空間的某個局部區域只有少數幾個連接權值影響輸出,則該網絡稱為局部逼近網絡。常見的局部逼近網絡有 RBF 網絡、小腦模型(CMAC)網絡、B 樣條網絡等。徑向基函數解決插值問題完全內插法要求插值函數經過每個樣本點,即。樣本點總共有P個。RBF 的方法是要選擇 P 個基函數,每個基函數對應一個訓練數據

2、,各基函數形式為者叫 2 范數。,由于距離是徑向同性的,因此稱為徑向基函數。|X-Xp|表示差向量的模,或基于為徑向基函數的插值函數為:X m P,PmXp p m P,低維線性不可分的情況到高維就線性可分了。將插值條件代入:寫成向量的形式為顯然是個規模這P對稱矩陣且與X的維度無關當可逆時有。對于一大類函數,當輸入的 X 各不相同時, 就是可逆的。下面的幾個函數就屬于這“一大類”函數:Gauss(高斯)函數Reflected Sigmoidal(S型)函數Inverse multiquadrics(擬多二次)函數 稱為徑向基函數的擴展常數,它反應了函數圖像的寬度, 完全內插存在一些問題:使泛化

3、能力下降。由于輸入樣本中包含噪聲,所以我們可以設計隱藏層大小為 K,KP,從樣本中選取 K 個(假設不包含噪聲)作為 函數的中心。超定的,插值矩陣求逆時可能導致不穩定。擬合函數 F 的重建問題滿足以下 3 個條件時,稱問題為適定的:解的存在性解的唯一性解的連續性不適定問題大量存在,為解決這個問題,就引入了正則化理論。正則化理論正則化的基本思想是通過加入一個含有解的先驗知識的約束來控制映射函數的光滑性,這樣相似的輸入就對應著相似的輸出。尋找逼近函數 F(x)通過最小化下面的目標函數來實現: 是一個線性微分算子,代表了對F(x) 的先驗知識。曲率過大(光滑度過低)的 F(x)通常具有較大的|DF|

4、值,因此將受到較大的懲罰。直接給出(1)式的解:權向量*(2)G(X,Xp)稱為 Green 函數,G 稱為 Green 矩陣。Green 函數與算子 D 的形式有關,當 D 具有旋轉不變性和平移不變性時, 多元 Gauss 函數:。這類 Green 函數的一個重要例子是。正則化RBF 網絡P p 的擴展常數 1,層的權值是需要訓練得到的:逐一輸入所有的樣本,計算隱藏層上所有的Green (2)式計算權值。廣義RBF 網絡Cover 分。RBF 網絡:從輸入層到隱藏層相當于是把低維空間的數據映射到高維空間,輸入層細胞個數為據進行線性分類的過程,可以采用單層感知器常用的那些學習規則,參見神經網絡

5、基礎和感知器。注意廣義 RBF 實際上它比樣本數目要少得多。因為在標準 RBF 網絡中,當樣本數目很大時,就需要很多基函數, RBF RBF 網相比,還有以下不同:徑向基函數的中心不再限制在輸入數據點上,而由訓練算法確定。各徑向基函數的擴展常數不再統一,而由訓練算法確定。差別。因此廣義 RBF 網絡的設計包括: 結構設計-參數設計-各基函數的數據中心及擴展常數、輸出節點的權值。下面給出計算數據中心的兩種方法:數據中心從樣本中選取。樣本密集的地方多采集一些。各基函數采用統一的偏擴展常數:x 徑向基函數太尖或太平。確定以后,根據各中心之間的距離確定對應徑向基函數的擴展常數。 是重疊系數。3.W 偽

6、逆。了,因為對于廣義 RBF 網絡,其行數大于列數,此時數據中心的監督學習算法BP 網絡的學習原理一樣。同樣采用梯度下降法,定義目標函數為ei為輸入第 i 個樣本時的誤差信號。上式的輸出函數中忽略了閾值。為使目標函數最小化,各參數的修正量應與其負梯度成正比,即具體計算式為本輸入一輪后調整一次。目標函數也可以為瞬時值形式,即當前輸入引起的誤差此時參數的修正值為:下面我們就分別用本文最后提到的聚類的方法和數據中心的監督學習方法做一道練習題。考慮 Hermit 多項式的逼近問題P=100 xi 且服從xieii 為添加00.1 的正態分布。用聚類方法求數據中心和擴展常數,輸出權值和閾值用偽逆法求解。

7、隱藏節點數 M=10=110個訓練樣本。+ View Code?#include #include #include #include #include #include #include #include #include #includematrix.husing namespace std;const int P=100;/輸入樣本的數vector X(P);/輸入樣本Matrix Y(P,1);/輸入樣本對應的期望輸const int M=10;/隱藏層節點數目vector center(M);/M個Green函數的數據中心vector delta(M);/M個Green函數的擴展常數

8、Matrix Green(P,M);/Green矩陣Matrix Weight(M,1);/權值矩陣/*Hermit 多項式函數*/inline double Hermit(double x)return 1.1*(1-x+2*x*x)*exp(-1*x*x/2);/*產生指定區間上均勻分布的隨機數*/inline double uniform(double floor,double ceil) return floor+1.0*rand()/RAND_MAX*(ceil-floor);/*產生區間floor,ceil上服從正態分布 Nmu,sigma的隨機數*/inline double R

9、andomNorm(double mu,double sigma,double floor,double ceil) double x,prob,y;dox=uniform(floor,ceil);prob=1/sqrt(2*M_PI*sigma)*exp(-1*(x-mu)*(x-mu)/(2*sigma*sigma); y=1.0*rand()/RAND_MAX;while(yprob); return x;/*產生輸入樣本*/void generateSample() for(int i=0;iP;+i)double in=uniform(-4,4); Xi=in;Y.put(i,0,H

10、ermit(in)+RandomNorm(0,0.1,-0.3,0.3);/*尋找樣本離哪個中心最近*/int nearest(const vector& center,double sample) int rect=-1;double dist=numeric_limits:max(); for(int i=0;icenter.size();+i)dist=fabs(sample-centeri); rect=i;return rect;/*計算簇的質心*/double calCenter(const vector &g) int len=g.size();double sum=0.0; f

11、or(int i=0;ilen;+i)sum+=gi; return sum/len;/*KMeans 聚類法產生數據中心*/ void KMeans()assert(P%M=0);vectorvector group(M);/記錄各個聚類中包含哪些樣double gap=0.001;/聚類中心的改變量小于為個值時,迭代終止for(int i=0;iM;+i)/PP個作為初始聚類中心centeri=X10*i+3;/輸入是均勻分布的,所以我們均勻地選取while(1)for(int i=0;iM;+i) groupi.clear();/for(int i=0;iP;+i)/int c=near

12、est(center,Xi); groupc.push_back(Xi);vector new_center(M);/for(int i=0;iM;+i)vector g=groupi; new_centeri=calCenter(g);bool flag=false;for(int i=0;igap)flag=true; break;center=new_center; if(!flag)break;/*生成 Green 矩陣*/ void calGreen()for(int i=0;iP;+i) for(int j=0;jM;+j)Green.put(i,j,exp(-1.0*(Xi-ce

13、nterj)*(Xi-centerj)/(2*deltaj*deltaj);/*求一個矩陣的偽逆*/Matrix getGereralizedInverse(const Matrix &matrix)return (matrix.getTranspose()*matrix).getInverse()*(matrix.getTranspose();/*利用已訓練好的神經網絡,由輸入得到輸出*/ double getOutput(double x)double y=0.0; for(int i=0;iM;+i)y+=Weight.get(i,0)*exp(-1.0*(x-centeri)*(x-c

14、enteri)/(2*deltai*deltai); return y;int main(int argc,char *argv)generateSample();/產生輸入和對應的期望輸出樣本KMeans();/對輸入進行聚類,產生聚類中心sort(center.begin(),center.end();/對聚類中心(一維數據)進行排序/根據聚類中心間的距離,計算各擴展常數delta0=center1-center0; deltaM-1=centerM-1-centerM-2; for(int i=1;iM-1;+i)double d1=centeri-centeri-1; double d

15、2=centeri+1-centeri; deltai=d1d2?d1:d2;calGreen();/Green矩陣Weight=getGereralizedInverse(Green)*Y;/計算權值矩陣/根據已訓練好的神經網絡作幾組測試for(int x=-4;x5;+x) coutxt;coutsetprecision(8)setiosflags(ios:left)setw(15); coutgetOutput(x)Hermit(x)endl;/return 0;RBF =0.001 ,M=10,初始權值為-0.1,0.1內的隨機數,初始數據中心為-4,4內的隨機數,初始擴展常數取0.1

16、,0.3內的隨機數,目標誤差為 0.9,最大訓5000。+ View Code?#include #include #include #include #include #include #includeusing namespace std;const int P=100;/輸入樣本的數量vector X(P);/ 輸 入 樣 本 vector Y(P);/輸入樣本對應的期望輸const int M=10;/隱藏層節點數目vector center(M);/M個Green函數的數據中心vector delta(M);/M個Green函數的擴展常數double GreenPM;/Green矩陣

17、vector Weight(M);/權值矩const double eta=0.001;/學習率const double ERR=0.9;/目標誤差const int ITERATION_CEIL=5000;/最大訓練次vector error(P);/單個樣本引起的誤差/*Hermit 多項式函數*/inline double Hermit(double x)return 1.1*(1-x+2*x*x)*exp(-1*x*x/2);/*產生指定區間上均勻分布的隨機數*/inline double uniform(double floor,double ceil) return floor+1

18、.0*rand()/RAND_MAX*(ceil-floor);/*產生區間floor,ceil上服從正態分布 Nmu,sigma的隨機數*/inline double RandomNorm(double mu,double sigma,double floor,double ceil) double x,prob,y;dox=uniform(floor,ceil);prob=1/sqrt(2*M_PI*sigma)*exp(-1*(x-mu)*(x-mu)/(2*sigma*sigma); y=1.0*rand()/RAND_MAX;while(yprob); return x;/*產生輸入

19、樣本*/void generateSample() for(int i=0;iP;+i)double in=uniform(-4,4); Xi=in;Yi=Hermit(in)+RandomNorm(0,0.1,-0.3,0.3);/*給向量賦予floor,ceil上的隨機值*/void initVector(vector &vec,double floor,double ceil)for(int i=0;ivec.size();+i) veci=uniform(floor,ceil);/*根據網絡,由輸入得到輸出*/ double getOutput(double x)double y=0.0; for(int i=0;iM;+i)y+=Weighti*exp(-1.0*(x-centeri)*(x-centeri)/(2*deltai*deltai); return y;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論