RBF神經網路和BP神經網路有什麼區別?

以前做過RBF神經網路的研究,現在要接觸BP神經網路。就我目前的了解,能看到的區別只有這兩種神經網路中所採用的核函數不一樣。請各位大神指導這兩種神經網路的區別,謝謝!


先上定義

BP Neural Network - 使用 Automatic Differentiation (Backpropagation) 進行導數計算的層級圖模型 (layer-by-layer graphical model)

只要模型是一層一層的,並使用AD/BP演算法,就能稱作 BP Network。RBF Network 是其中一個特例

關於 AD 與 BP 演算法的介紹

1. 請問自動微分法(Automatic differentiation)是如何用C++實現的? - 李瞬生的回答

2. Backwards differentiation in AD and neural nets: Past links and new opportunities

接下來簡單介紹 RBF Network 相比一般 Neural Network 具有的特點。

機器學習的模型通常存在各種解讀。相對正統的是統計上的解讀。但這裡只談直觀上的解讀,以求易讀。

RBF Network 通常只有三層。輸入層、中間層計算輸入 x 矢量與樣本矢量 c 歐式距離的 Radial Basis Function (RBF) 的值,輸出層算它們的線性組合。

圖一

如此可見,和普通的三層神經網路,RBF 神經網路的區別在中間層。中間層採用 RBF Kernel 對輸入作非線性變換,以便輸出層訓練線性分類器。

那麼RBF Kernel 有什麼特點呢?

圖二 Radial Basis Function

圖三 Plot of Radial Basis Function with 2D input

RBF 擁有較小的支集。針對選定的樣本點,它只對樣本附近的輸入有反應,如下圖。

圖四 RBF 使樣本點只被附近(圈內)的輸入激活

T. Poggio 將 RBF 比作記憶點。與記憶樣本越近,該記憶就越被激活。

有的同學看到這,也許會說:這不就是 SVM with RBF Kernel 么。

這些同學對了一半。光看模型,RBF Network 確實與 SVM with RBF kernel 無異。區別在於訓練方式。

其實在深度學習出現之前,RBF神經網路就已經提出了 2-stage training。

第一階段為非監督學習,從數據中選取記憶樣本(圖四中的紫色中心)。例如聚類演算法可在該階段使用。

第二階段為監督學習,訓練記憶樣本與樣本輸出的聯繫。該階段根據需要可使用 AD/BP。

小結:

1. RBF神經網路的訓練過程可以使用BP,因此應納入BP神經網路的範疇。

2. RBF神經網路的訓練分兩階段,這一點類似深度學習,且使RBF神經網路不同於SVM with RBF kernel。


更新一下:發現這個問題問的有點偏差。

BP 神經網路:BP 是back propagation,是一種監督神經網路的訓練方式,跟神經元無關。

RBF 神經網路:對神經元訓練方式都做了限定: 用高斯函數作為神經元+(自監督+監督)的訓練方式。 自監督:聚類演算法。 監督: BP 訓練方式。

BP 神經網路最常用的神經元是perceptron,最popular的用法是多層的perceptrons。其實就是深度學習的模型。長這個樣子:輸入層 一層,輸出層 一層,中間層 很多層。

圖片引用點這裡。

RBF 神經網路長這樣:輸入層 一層,輸出層 一層,中間層 一層。

圖片引用點這裡


兩者最重要的區別:1 中間層神經元的區別。2 中間層數的區別。3 運行速度的區別。

多層perceptron 的Back propagation neural network 是自1943年起被廣泛應用的經典神經網路.

perception,輸出結果:1,0. (是 或 非)。

例子: 我的心裡想著吳亦凡,

你可以問很多問題,他是名人嗎 他結婚了嗎 他是男生嗎 他喜歡free style 嗎?

但是我只能回答說 yes 或者 no。

問題可以一直持續,直到你猜到最後的正確答案。

每個神經元只會做一個是非決策。

中間層有無數layer (對應例子中的無數個問題).

BP_NN 的訓練方式

第一步 隨機取輸入值

第二步 估計輸出結果跟目標的誤差。

第三步 改變每層每個神經元的權重(weight) 。以求更小誤差。

(Perceptron神經元的權重:就是每個神經元的輸出對總的輸出佔多大的分量。)

非常實用. 用的最多。

但是致命點: 非常之慢。因為每次估計誤差都要調整每一層的每個weight.


Radial basis function neural network (RBF_NN) 1988年的開始出現【1】

RBF: 神經元是一個以gaussian函數為核函數的神經元。

Radial basis function: exp[-(b(x-w))^{2}] .

  • x 是自變數,即輸入的很多值, b: 是bias,一般為固定常數,決定Gaussian函數的寬度。
  • w:weight (輸入權重),決定Gaussian 函數的中心點,是一個可變常數。

輸出結果: 不再是非0 即1,而是一組很平滑的小數,在特定的輸入值(weight)處具有最大的函數值, 輸入離這個特定的值越遠,輸出就成指數下降。

中間層:只有一層

經過訓練後每一個神經元得以確定 輸入權重:即每一個神經元知道要在什麼樣的輸入值下引起最大的響應。

RBF_NN的訓練方式: 聚類方式(自監督訓練方式) + back propagation (BP)(監督訓練方式)

但是RBF比BP 快不止1000倍。為什麼?

原因當然是因為層數,層數越少,需要確定的權重(weight)越少,越快。

為什麼三層可以做這麼多層的事兒?

原因是核函數的輸出: 是一個局部的激活函數。在weight那一點有最大的反應;接近weight 則反應最大,遠離反應成指數遞減。

如 @李瞬生 答主講的那樣。 函數位置隨著weight 變化。不同的weight 有一個不同位置,就類似於 每個神經元的weight對應不同的 感知域。

「感知域」 —— receptive field.

一個神經元,只負責對某一塊進行響應。速度當然快得多。

聽著有沒有很熟悉?

大腦里的神經元就是這麼工作的。你聞到花香的時候,不會刺激到感受辣味的神經元。

本回答引用耶魯大學RBF鼻祖級論文:

【1】Moody, J. and Darken, C., 1988. Learning with localized receptive fields (pp. 133-143). Yale Univ., Department of Computer Science.


補充@Zach的回答:

局部逼近與全局逼近

BP神經網路的隱節點採用輸入模式與權向量的內積作為激活函數的自變數,而激活函數採用Sigmoid函數。各隱節點對BP網路的輸出具有同等地位的影響,因此BP神經網路是對非線性映射的全局逼近

RBF神經網路的隱節點採用輸入模式與中心向量的距離(如歐式距離)作為函數的自變數,並使用徑向基函數(如Gaussian函數)作為激活函數。神經元的輸入離徑向基函數中心越遠,神經元的激活程度就越低。RBF網路的輸出與數據中心離輸入模式較勁的「局部」隱節點關係較大,RBF神經網路因此具有「局部映射」特性。

參考:《人工神經網路原理與實踐》 陳雯柏


RBF神經網路與BP神經網路都是非線性多層前向網路,它們都是通用逼近器。對於任一個BP神經網路,總存在一個RBF神經網路可以代替它,反之亦然。但是這兩個網路也存在著很多不同點,這裡從網路結構、訓練演算法、網路資源的利用及逼近性能等方面對RBF神經網路和BP神經網路進行比較研究。

  1. 從網路結構上看。 BP神經網路實行權連接,而RBF神經網路輸入層到隱層單元之間為直接連接,隱層到輸出層實行權連接。BP神經網路隱層單元的轉移函數一般選擇非線性函數(如反正切函數),RBF神經網路隱層單元的轉移函數是關於中心對稱的RBF(如高斯函數)。BP神經網路是三層或三層以上的靜態前饋神經網路,其隱層和隱層節點數不容易確定,沒有普遍適用的規律可循,一旦網路的結構確定下來,在訓練階段網路結構將不再變化;RBF神經網路是三層靜態前饋神經網路,隱層單元數也就是網路的結構可以根據研究的具體問題,在訓練階段自適應地調整,這樣網路的適用性就更好了。
  2. 從訓練演算法上看。 BP神經網路需要確定的參數是連接權值和閾值,主要的訓練演算法為BP演算法和改進的BP演算法。但BP演算法存在許多不足之處,主要表現為易限於局部極小值,學習過程收斂速度慢,隱層和隱層節點數難以確定;更為重要的是,一個新的BP神經網路能否經過訓練達到收斂還與訓練樣本的容量、選擇的演算法及事先確定的網路結構(輸入節點、隱層節點、輸出節點及輸出節點的傳遞函數)、期望誤差和訓練步數有很大的關係。RBF神經網路的訓練演算法在前面已做了論述,目前,很多RBF神經網路的訓練演算法支持在線和離線訓練,可以動態確定網路結構和隱層單元的數據中心和擴展常數,學習速度快,比BP演算法表現出更好的性能。
  3. 從網路資源的利用上看。 RBF神經網路原理、結構和學習演算法的特殊性決定了其隱層單元的分配可以根據訓練樣本的容量、類別和分布來決定。如採用最近鄰聚類方式訓練網路,網路隱層單元的分配就僅與訓練樣本的分布及隱層單元的寬度有關,與執行的任務無關。在隱層單元分配的基礎上,輸入與輸出之間的映射關係,通過調整隱層單元和輸出單元之間的權值來實現,這樣,不同的任務之間的影響就比較小,網路的資源就可以得到充分的利用。這一點和BP神經網路完全不同,BP神經網路權值和閾值的確定由每個任務(輸出節點)均方差的總和直接決定,這樣,訓練的網路只能是不同任務的折中,對於某個任務來說,就無法達到最佳的效果。而RBF神經網路則可以使每個任務之間的影響降到較低的水平,從而每個任務都能達到較好的效果,這種並行的多任務系統會使RBF神經網路的應用越來越廣泛。

總之,RBF神經網路可以根據具體問題確定相應的網路拓撲結構,具有自學習、自組織、自適應功能,它對非線性連續函數具有一致逼近性,學習速度快,可以進行大範圍的數據融合,可以並行高速地處理數據。RBF神經網路的優良特性使得其顯示出比BP神經網路更強的生命力,正在越來越多的領域內替代BP神經網路。目前,RBF神經網路已經成功地用於非線性函數逼近、時間序列分析、數據分類、模式識別、信息處理、圖像處理、系統建模、控制和故障診斷等。

[1] MATLAB中文論壇. MATLAB神經網路30個案例分析[M]. 北京航空航天大學出版社, 2010.

[2] letsgoaway. 神經網路及BP與RBF比較[EB/OL]. https://wenku.baidu.com/view/fdcb2ba7195f312b3069a54c.html.


要最簡單的說法就是,激活函數不同。

RBF是徑向基函數;而BP一般是sigmoid函數 (或者Relu)。


推薦閱讀:

卷積神經網路和深度神經網路的區別是什麼?
神經網路中激活函數的真正意義?一個激活函數需要具有哪些必要的屬性?還有哪些屬性是好的屬性但不必要的?
在眾多的神經網路框架如chainer, caffe, torch,mxnet等之間如何做選擇?
你在訓練RNN的時候有哪些特殊的trick?
有沒有可能運用人工神經網路將一種編程語言的代碼翻譯成任意的另一種編程語言,而不經過人工設計的編譯過程?

TAG:機器學習 | 神經網路 |