Python实战RBF神经网络
程序員A:哥們兒,最近手頭緊,借點錢? 程序員B:成啊,要多少? A:1000行不? B:咱倆誰跟誰!給你湊個整,這1024,拿去吧。
之前我們講了神經網絡,人工神經網絡是受到人類大腦結構的啟發而創造出來的,這也是它能擁有真智能的根本原因。在我們的大腦中,有數十億個稱為神經元的細胞,它們連接成了一個神經網絡。
人工神經網絡正是模仿了上面的網絡結構。下面是一個人工神經網絡的構造圖。每一個圓代表著一個神經元,他們連接起來構成了一個網絡。
人類大腦神經元細胞的樹突接收來自外部的多個強度不同的刺激,并在神經元細胞體內進行處理,然后將其轉化為一個輸出結果。人工神經元也有相似的工作原理。
上面的x是神經元的輸入,相當于樹突接收的多個外部刺激。w是每個輸入對應的權重,它影響著每個輸入x的刺激強度。
大腦的結構越簡單,那么智商就越低。單細胞生物是智商最低的了。人工神經網絡也是一樣的,網絡越復雜它就越強大,所以我們需要深度神經網絡。這里的深度是指層數多,層數越多那么構造的神經網絡就越復雜。
訓練深度神經網絡的過程就叫做深度學習。網絡構建好了后,我們只需要負責不停地將訓練數據輸入到神經網絡中,它內部就會自己不停地發生變化不停地學習。打比方說我們想要訓練一個深度神經網絡來識別貓。我們只需要不停地將貓的圖片輸入到神經網絡中去。訓練成功后,我們任意拿來一張新的圖片,它都能判斷出里面是否有貓。但我們并不知道他的分析過程是怎樣的,它是如何判斷里面是否有貓的。就像當我們教小孩子認識貓時,我們拿來一些白貓,告訴他這是貓,拿來一些黑貓,告訴他這也是貓,他腦子里會自己不停地學習貓的特征。最后我們拿來一些花貓,問他,他會告訴你這也是貓。但他是怎么知道的?他腦子里的分析過程是怎么樣的?我們無從知道~~
只要模型是一層一層的,并使用AD/BP算法,就能稱作 BP神經網絡。RBF 神經網絡是其中一個特例。本文主要包括以下內容:
什么是徑向基函數
RBF神經網絡
RBF神經網絡的學習問題
RBF神經網絡與BP神經網絡的區別
RBF神經網絡與SVM的區別
為什么高斯核函數就是映射到高維區間
前饋網絡、遞歸網絡和反饋網絡
完全內插法
一、什么是徑向基函數
1985年,Powell提出了多變量插值的徑向基函數(RBF)方法。徑向基函數是一個取值僅僅依賴于離原點距離的實值函數,也就是Φ(x)=Φ(‖x‖),或者還可以是到任意一點c的距離,c點稱為中心點,也就是Φ(x,c)=Φ(‖x-c‖)。任意一個滿足Φ(x)=Φ(‖x‖)特性的函數Φ都叫做徑向基函數,標準的一般使用歐氏距離(也叫做歐式徑向基函數),盡管其他距離函數也是可以的。
RBF網絡能夠逼近任意非線性的函數??梢蕴幚硐到y內難以解析的規律性,具有很好的泛化能力,并且具有較快的學習速度。當網絡的一個或多個可調參數(權值或閾值)對任何一個輸出都有影響時,這樣的網絡稱為全局逼近網絡。
由于對于每次輸入,網絡上的每一個權值都要調整,從而導致全局逼近網絡的學習速度很慢,比如BP網絡。如果對于輸入空間的某個局部區域只有少數幾個連接權值影響輸出,則該網絡稱為局部逼近網絡,比如RBF網絡。接下來重點先介紹RBF網絡的原理,然后給出其實現。先看如下圖
最常用的徑向基函數是高斯核函數 ,形式為 k(||x-xc||)=exp{- ||x-xc||2/(2*σ)2) } 其中x_c為核函數中心,σ為函數的寬度參數 , 控制了函數的徑向作用范圍。
二、RBF神經網絡
RBF神將網絡是一種三層神經網絡,其包括輸入層、隱層、輸出層。從輸入空間到隱層空間的變換是非線性的,而從隱層空間到輸出層空間變換是線性的。流圖如下:
RBF網絡的基本思想是:用RBF作為隱單元的“基”構成隱含層空間,這樣就可以將輸入矢量直接映射到隱空間,而不需要通過權連接。當RBF的中心點確定以后,這種映射關系也就確定了。而隱含層空間到輸出空間的映射是線性的,即網絡的輸出是隱單元輸出的線性加權和,此處的權即為網絡可調參數。其中,隱含層的作用是把向量從低維度的p映射到高維度的h,這樣低維度線性不可分的情況到高維度就可以變得線性可分了,主要就是核函數的思想。這樣,網絡由輸入到輸出的映射是非線性的,而網絡輸出對可調參數而言卻又是線性的。網絡的權就可由線性方程組直接解出,從而大大加快學習速度并避免局部極小問題。
徑向基神經網絡的激活函數可表示為:
其中xp
徑向基神經網絡的結構可得到網絡的輸出為:
當然,采用最小二乘的損失函數表示:
三、RBF神經網絡的學習問題
求解的參數有3個:基函數的中心、方差以及隱含層到輸出層的權值。
(1)自組織選取中心學習方法:
第一步:無監督學習過程,求解隱含層基函數的中心與方差
第二步:有監督學習過程,求解隱含層到輸出層之間的權值
首先,選取h個中心做k-means聚類,對于高斯核函數的徑向基,方差由公式求解:
cmax為所選取中心點之間的最大距離。
隱含層至輸出層之間的神經元的連接權值可以用最小二乘法直接計算得到,即對損失函數求解關于w的偏導數,使其等于0,可以化簡得到計算公式為:
(2)直接計算法:
隱含層神經元的中心是隨機地在輸入樣本中選取,且中心固定。一旦中心固定下來,隱含層神經元的輸出便是已知的,這樣的神經網絡的連接權就可以通過求解線性方程組來確定。適用于樣本數據的分布具有明顯代表性。
(3)有監督學習算法:
通過訓練樣本集來獲得滿足監督要求的網絡中心和其他權重參數,經歷一個誤差修正學習的過程,與BP網絡的學習原理一樣,同樣采用梯度下降法。因此RBF同樣可以被當作BP神經網絡的一種。
四、RBF神經網絡與BP神經網絡之間的區別
1、局部逼近與全局逼近:
BP神經網絡的隱節點采用輸入模式與權向量的內積作為激活函數的自變量,而激活函數采用Sigmoid函數。各調參數對BP網絡的輸出具有同等地位的影響,因此BP神經網絡是對非線性映射的全局逼近。RBF神經網絡的隱節點采用輸入模式與中心向量的距離(如歐式距離)作為函數的自變量,并使用徑向基函數(如Gaussian函數)作為激活函數。神經元的輸入離徑向基函數中心越遠,神經元的激活程度就越低(高斯函數)。RBF網絡的輸出與部分調參數有關,譬如,一個wij值只影響一個yi的輸出(參考上面第二章網絡輸出),RBF神經網絡因此具有“局部映射”特性。
所謂局部逼近是指目標函數的逼近僅僅根據查詢點附近的數據。而事實上,對于徑向基網絡,通常使用的是高斯徑向基函數,函數圖象是兩邊衰減且徑向對稱的,當選取的中心與查詢點(即輸入數據)很接近的時候才對輸入有真正的映射作用,若中心與查詢點很遠的時候,歐式距離太大的情況下,輸出的結果趨于0,所以真正起作用的點還是與查詢點很近的點,所以是局部逼近;而BP網絡對目標函數的逼近跟所有數據都相關,而不僅僅來自查詢點附近的數據。
2、中間層數的區別
BP神經網絡可以有多個隱含層,但是RBF只有一個隱含層。
3、訓練速度的區別
使用RBF的訓練速度快,一方面是因為隱含層較少,另一方面,局部逼近可以簡化計算量。對于一個輸入x,只有部分神經元會有響應,其他的都近似為0,對應的w就不用調參了。
4、Poggio和Girosi已經證明,RBF網絡是連續函數的最佳逼近,而BP網絡不是。
五、RBF神經網絡與SVM的區別
SVM等如果使用核函數的技巧的話,不太適應于大樣本和大的特征數的情況,因此提出了RBF。另外,SVM中的高斯核函數可以看作與每一個輸入點的距離,而RBF神經網絡對輸入點做了一個聚類。RBF神經網絡用高斯核函數時,其數據中心C可以是訓練樣本中的抽樣,此時與svm的高斯核函數是完全等價的,也可以是訓練樣本集的多個聚類中心,所以他們都是需要選擇數據中心的,只不過SVM使用高斯核函數時,這里的數據中心都是訓練樣本本身而已。
最后上python代碼實現:
總結
以上是生活随笔為你收集整理的Python实战RBF神经网络的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 物联网单片机毕业设计实现
- 下一篇: python灰色预测模型步骤人口预测_人