學習筆記 RBF神經網路初探

2022-07-21 07:39:11 字數 3790 閱讀 5102

徑向基函式是一種函式的取值僅僅與輸入的中心點有關的函式,具有這種性質的函式就稱為徑向基函式。

比如,高斯函式是一種徑向基函式,其輸出值的大小與距離中心點的距離有關,距離中心點越遠,函式值越小,距離中心點越近,函式值越大。

rbf神經網路一般具有兩層結構,是一種前向神經網路。第一層的作用是將輸入由非線性可分轉變為線性可分,第二層一般是感知機型別的神經元層或adaline型別的神經元層。

對於只有乙個兩維的輸入(p1, p2)而言,假定函式的中心點c1和c2已知(同樣假設只有兩個中心),利用高斯函式作為徑向基函式,如果高斯函式的標準差σ1和σ2已知,那麼第一層的輸出即為:

計算過程為:

計算由樣本(p1,p2)組成的點到中心c1的距離r1,通過高斯徑向基函式投影為φ1

同理計算到到c2的距離投影到φ2.

上述過程假定中心c和標準差σ是已知的,實際上很多任務中是需要學習這兩個量的,對於中心c,我們一般採用kmeans聚類演算法來確定,因此聚類的中心點數量k也是乙個超參。而σ的確定也非常簡單,即以到聚類中心點的距離(平方根距離)最近的前k個樣本的聚類的均值為σ,之後每個σ就都確定了。

還有一種方法來確定c和σ,就是認為c和σ是可學習的引數,利用梯度下降來更新學習c和σ。後面的**例子中將利用梯度來學習c和σ。

對於第一層輸出p(假設為5維向量),其輸出為線性對映:

\[a = hardlim(wp + b)

\]其中w為1x5矩陣,b為1x1常量,harddim為sgn函式:

其中感知機和adaline其實有一些不同點,雖然前向過程的purelin恒等函式看起來沒啥用(只是形式上要走個啟用函式),但兩者在更新引數時使用的標籤是不同的,感知機是用離散的標籤作為gt來更新前面的引數,而adaline則是直接根據加權求和的結果,也就是連續值來更新前面的引數,具體可以見下圖:

本文僅以高斯徑向基函式,第二層為感知機模型,利用梯度下降演算法更新引數為例來寫乙個rbf神經網路的demo。(求梯度的公式感覺自己推就太麻煩了,有自動求導為啥不用.)

測試擬合情況:

rbf神經網路 RBF神經網路以及Python實現

rbf網路能夠逼近任意非線性的函式。可以處理系統內難以解析的規律性,具有很好的泛化能力,並且具有較快的學 習速度。當網路的乙個或多個可調引數 權值或閾值 對任何乙個輸出都有影響時,這樣的網路稱為全域性逼近網路。由於對於每次輸入,網路上的每乙個權值都要調整,從而導致全域性逼近網路的學習速度很慢,比如b...

RBF神經網路

核函式一般有如下函式 高斯函式 u e u2 2 反射sigmoid函式 u 1 1 eu 2 2 逆多二次函式 u 1 u2 2 1 2 其中,0 為基函式的拓展常數或寬度。rbf 徑向基函式神經網路 網路結構圖如下 對於輸入x x1,x2,xn t c1 c2,cm 為樣本中心,w w1,w2,...

神經網路rbf

clc clear close all ld 400 定義學習樣本的數量 x rand 2,ld 得到乙個2 400的乙個矩陣,每個元素在0 1之間 x x 0.5 1.5 2 1.5,1.5 x1 x 1,得到矩陣的第1行 x2 x 2,得到矩陣的第2行 f 20 x1.2 10 cos 2 pi...