https://blog.csdn.net/cyhbrilliant/article/details/52694943
廣義回歸神經網絡 GRNN
(General Regression Neural Network)
廣義回歸神經網絡是基於徑向基函數神經網絡的一種改進。
結構分析:
可以看出,這個結構與之前我們所講過的徑向基神經網絡非常相似,區別就在於多了一層加和層,而去掉了隱含層與輸出層的權值連接。
1.輸入層為向量,維度為m,樣本個數為n,線性函數為傳輸函數。
2.隱藏層與輸入層全連接,層內無連接,隱藏層神經元個數與樣本個數相等,也就是n,傳輸函數為徑向基函數。
3.加和層中有兩個節點,第一個節點為每個隱含層節點的輸出和,第二個節點為預期的結果與每個隱含層節點的加權和。
4.輸出層輸出是第二個節點除以第一個節點。
理論基礎
廣義回歸神經網絡對x的回歸定義不同於徑向基函數的對高斯權值的最小二乘法疊加,他是利用密度函數來預測輸出。
假定x,y為兩個隨機變量,聯合概率密度為 f(x,y)。
我們就得到以下公式: (x0)=F(y*f(x0,y))/F(f(x0,y)). F代表積分。
(x0)就是y在x0條件下在預測輸出。 x0是的觀測值。
現在未知數就是f(x,y)。
怎樣估計已知數值而未知分布的密度函數呢?這里我們使用Parzen非參數估計方法。
窗口函數選擇為高斯窗口。
得到下式 y(x0)=F(y*exp(-d))/F(exp(-d))。
d代表的就是離中心的距離,exp(-d)就是徑向基函數隱含層的輸出。
程序講解
首先我們還是和徑向基函數神經網絡一樣,設定一組數據。
p=-9:1:8;
x=-9:.2:8;
t=[129,-32,-118,-138,-125,-97,-55,-23,-4,2,1,-31,-72,-121,-142,-174,-155,-77];
1
2
3
4
p,t分別代表輸入輸出,x為測試樣本,與徑向基函數神經網絡不同的是,這些數據需要在創建時一起輸入,而不需要類似徑向基那樣的權值訓練,GRNN並不存在權值,所以網絡不能保存,用的時候直接擬合即可。
而正因為GRNN沒有權值這一說,所以不用訓練的優勢就體現在他的速度真的很快。而且曲線擬合的非常自然。樣本精准度不如徑向基精准,但在實際測試中表現甚至已經超越了bp。
接下來就是隱含層的處理,不同於RBF的是,隱含層沒有了恆為1的向量輸出添加。
spread=1;
chdis=dist(x',p);
chgdis=exp(-chdis.^2/spread);
chgdis=chgdis';
1
2
3
4
5
最后是加和層與輸出層,這里我們把式子寫在一起。
y=t*chgdis./(sum(chgdis));
1
看一下輸出效果
對比一下徑向基函數所訓練出來的權值神經網絡
結束語
雖然GRNN看起來沒有徑向基精准,但實際在分類和擬合上,特別是數據精准度比較差的時候有着很大的優勢。
---------------------
作者:cyhbrilliant
來源:CSDN
原文:https://blog.csdn.net/cyhbrilliant/article/details/52694943
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!