1. 程式人生 > >深度學習 --- 徑向基神經網路RBF詳解

深度學習 --- 徑向基神經網路RBF詳解

上一節我們基本上打開了深度學習的大門,其實下一步應該是卷積神經網路即CNN了,但是呢卷積神經網路的最後一層採用的是徑向基神經網路,為了以後到CNN不用再費力氣將RBF和保持CNN的整體性和連貫性,因此這裡我們系統的學習一下,講解之前我們還是先好好回顧我們的總體學習思路,首先我們從BP神經網路開始,介紹了BP的優缺點和改良思路,後面就開始介紹Hopfield神經網路,該網路是從動力能量角度進行建模的神經網路,但是缺點是存在偽吸引子或者說容易陷入區域性最優解,為了解決這個問題我們引入了玻爾茲曼分佈和模擬退火演算法構成新的神經網路即玻爾茲曼機解決了為偽吸引子的問題,但是帶來的問題的是計算量太大,為了解決這個問題,hinton發明了受限玻爾茲曼機,通過吉布斯取樣很好的解決了玻爾茲曼機的計算量大的問題,在此基礎上,構造了深度置信網路DBN,後面又和BP結合構成DNN即深度學習網路,也因此我們算是打開了深度學習的大門了,後面就是CNN了,這就是我們學習的過程,為了後面的更系統的學習CNN,需要講解一下徑向基神經網路,因為CNN中用到了,好,廢話不多說,下面就開始:

徑向基基礎知識

徑向基在機器學習中講過了一點概念性的東西,不懂的請檢視我的這篇部落格的後半部分,這裡就不細講了,直接把哪裡的結果拿過了。

                                   \large F(X) = d^p                \large p = 1,2,3,.....,P                         \large \left ( 1 \right )

採用徑向基函式技術解決插值問題的方法是,選擇P個基函式個訓練資料,各基函式的形式為:
                                 \large \varphi (\left \| x-x^p \right \|)                    \large p = 1,2,....,P                            \large \left ( 2 \right )


式中,基函式\large \varphi為非線性函式,訓練資料點\large x^p\large \varphi的中心。基函式以輸人空間的點x與中心\large x^p的距離作為函式的自變數。由於距離是徑向同性的,故函式被稱為徑向基函式。基於徑向基函式技術的差值函式定義為基函式的線性組合:

                                 \large F(x) = \sum_{p=1}^{P}w_p\varphi (\left \| x-x^p \right \|)                                                       \large \left ( 3 \right )

將(1)式的插值條件代入上式,得到P個關於未知係數\large w^p,\large p = 1,2,....,P的線性方程組:

                                                    \large \sum_{p=1}^{P}w_p\varphi (\left \| \mathbf{x^1-x^p} \right \|)=d^1

                                                     \large \sum_{p=1}^{P}w_p\varphi (\left \| \mathbf{x^2-x^p} \right \|)=d^2

                                                                            \large \begin{matrix} \end{matrix}\large \wr

                                                     \large \sum_{p=1}^{P}w_p\varphi (\left \| \mathbf{x^P-x^p} \right \|)=d^P                                     \large \left ( 4 \right )

\large \varphi _{ip}=\varphi (\left \|\mathbf{ x^i-x^p} \right \|),i=1,2,...,P,p = 1,2,...,P,則上述方程組可改寫為:

                                   \large \begin{bmatrix} \varphi _{11},\varphi _{12},...,\varphi _{1P} &\\ \varphi _{11},\varphi _{12},...,\varphi _{1P} &\\ ......,......,...,..... &\\ \varphi _{11},\varphi _{12},...,\varphi _{1P} &\\ \end{bmatrix}\begin{bmatrix} w_1 &\\ w_2 &\\ ....&\\ w_P &\\ \end{bmatrix} = \begin{bmatrix} d^1 &\\ d^2 &\\ ....&\\ d^P &\\ \end{bmatrix}                                 \large \left ( 5 \right )

\large \Phi表示元素\large \varphi _{ip}的PxP階矩陣,\large w\large d分別表示係數向量和期望輸出向量,(5)式還可以寫成下面的向量形式:

                                                                 \large \Phi w =d                                                                 \large \left ( 6 \right )

式中,\large \Phi稱為插值矩陣,若\large \Phi為可逆矩陣,就可以從(6)式中解出係數向量\large w,即:

                                                                   \large w = \Phi ^{-1}d                                                           \large \left ( 7 \right )

高斯徑向基函式:

                                                        \large \varphi (r) = e^{-\frac{r^2}{2\delta ^2}}                                               \large \left ( 8 \right )

 橫軸就是到中心的距離用半徑r表示,如上圖,我們發現當距離等於0時,徑向基函式等於1,距離越遠衰減越快,其中高斯徑向基的引數\large \delta在支援向量機中被稱為到達率或者說函式跌落到零的速度。紅色\large \delta=1,藍色\large \delta=5,綠色\large \delta=0.5,我們發現到達率越小其越窄。 

正則化徑向基神經網路

正則化RBF網路的結構如下圖所示。其特點是:網路具有N個輸人節點,P個隱節點,i個輸出節點;網路的隱節點數等於輸人樣本數,隱節點的啟用函式常高斯徑向基函式,並將所有輸人樣本設為徑向基函式的中心,各徑向基函式取統一的擴充套件常數。

    設輸入層的任意節點你用i表示,隱節點任一節點用j表示,輸出層的任一節點用k表示。對各層的數學描述如下:

         輸入向量:

                                        \large \mathbf{x} = (x_1,x_2,...,x_N)^T

        任一隱節點的啟用函式:

                                        \large \varphi _j(\mathbf{x}) , (j = 1,2,3,..,P) 

                                        稱為基函式。一般使用高斯函式。

         輸出權矩陣:         \large w      ,其中\large w_{ik} , (j=1,2,...,P,k=1,2,...,l)為隱層的第j個節點與輸出層第k個節點間                                                         的 突觸權值。

         輸出向量:             \large Y = (y_1,y_2,...,y_l)

                                       輸出層神經元採用線性啟用函式。

當輸人訓練集中的某個樣本\large \mathbf{x}^p時,對應的期望輸出\large \mathbf{d}^p就是教師訊號。為了確定網路隱層到輸出層之間的P個權值,需要將訓練集中的樣本逐一輸人一遍,從而可得到式(4)中的方程組。網路的權值確定後,對訓練集的樣本實現了完全內插,即對所有樣本誤差為0。而對非訓練集的輸人模式,網路的輸出值相當於函式的內插,因此徑向基函式網路可用作數逼近。
正則化RBF網路具有以下3個特點:
        ① 正則化網路是一種通用逼近器,只有要足夠的節點,它可以以任意精度逼近緊集上的任意多元連續函式。
        ② 具有最佳逼近特性,即任給一個未知的非線性函式\large f,總可以找到一組權值使得正則化網路對於\large f的逼近優於所有其可                 能的選擇。

         ③ 正則化網路得到的解是最佳的,所謂“最佳”體現在同時滿足對樣本的逼近誤差和逼近曲線的平滑性。


正則化RBF網路的學習演算法


        當採用正則化RBP網路結構時,隱節點數即樣本數,基函式的資料中心即為樣本本身,只需考慮擴充套件常數和輸出節點的權值。徑向基函式的擴充套件常數可根據資料中心的散佈而確定,為了避免每個徑向基函式太尖或太平,一種選擇方法是將所有徑向基函式的擴充套件常數設為:

                                              \large \delta = \frac{d_{max}}{\sqrt{2P}}                                                                              \large \left ( 9 \right )

 式中,\large d_{max}是樣本之間的最大距離;P是樣本的數目。

         輸出層的權值採用最小均方誤差演算法LMS(不懂的請看這篇文章),LMS的輸入向量即為隱節點的輸出向量,權值調整公式為:

                                            \large \Delta\textb{W_K} = \eta (d_k - \mathbf{w_k^T\Phi })\Phi                                                \large \left ( 10 \right )   

       \large \Delta W_k的各分量為:

                                              \large \Delta\textb{W_{jk}} = \eta (d_k - \mathbf{w_k^T\Phi })\varphi _j         \large (j=1,2,...,P,k=1,2,...,l)      \large \left ( 11 \right )

          權值初始化任意值。

總結:

     正則化的RBF要求所有樣本對應一個隱層神經元,所帶來額問題是計算量很大,因為一旦樣本成千上萬則計算量急劇增加,樣本量很大帶來的另外一個問題是容易達到病態方程組問題,什麼是病態方程組問題?當方程組很多時,如樣本的不是很精確,稍微有點偏差都會引起權值的劇烈變化,因為樣本很多,那麼方程組就可能存在多重共線性問題,在嶺迴歸詳細探討了多重共線性問題(有興趣的可以參考我的這篇文章),因此需要改進RBF神經網路。因此廣義的RBF神經網路

廣義的RBF神經網路

由於正則化網路的訓練樣本與“基函式”是一一對應的。當樣本數P很大時,實現網路的計算量將大得驚人,此外P很大則權值矩陣也很大,求解網路的權值時容易產生病態問題(illconditioning)。為解決這一問題,可減少隱節點的個數,即N<M<P,N為樣本維數,P為樣本個數,從而得到廣義RBE網路。
廣義RBF網路的基本思想是:用徑向基函式作為隱單元的“基”,構成隱含層空間。隱含層對輸人向量進行變換,將低維空間的模式變換到高維空間內,使得在低維空間內的線性不可分問題在高維空間內線性可分。

如上圖N-M-L結構的廣義RBF神經網路結構圖,即網路具有N個輸入節點,M個隱節點,l個輸出節點,且M<P.。這裡和上面一樣,先從符號解釋開始:

輸入向量:

                               \large \mathbf{x} = (x_1,x_2,...,x_N)^T

啟用函式:      

                                \large \varphi _j(\mathbf{x}) , (j = 1,2,3,..,P)  為任一節點的基函式

                               一般選用格林函式

輸出權矩陣:          

                                 \large w      ,其中\large w_{ik} , (j=1,2,...,P,k=1,2,...,l)為隱層的第j個節點與輸出層第k個節點間                                                         的 突觸權值。

輸出閾值向量:\large T = (\mathrm{T_1,T_2,...,T_l})

網路輸出:     \large Y = (y_1,y_2,...,y_l)

與正則化RBF網路相比,廣義RBF網路有以下幾點不同:
①  徑向基函式的個數M與樣本的個數P不相等,且M常常遠小於P。
②  徑向基函式的中心不再限制在資料點上,而是由訓練演算法確定。
③  各徑向基數的擴充套件常數不再統一,其值由訓練演算法確定。
④  輸出函式的線性中包含閾值引數,用於補償基函式在樣本集上的平均值與目標值之間的差別。

廣義RBF網路設計方法   

廣義RBP網路的設計包括結構設計和引數設計。結構設計主要解決如何確定網路隱節點數的問題,引數設計一般需考慮包括三種引數:各基函式的資料中心和擴充套件常數,以及輸出節點的權值。
根據資料中心的取值方法,廣義RBF網的設計方法可分為兩類:
(1)第一類方法:資料中心從樣本輸人中選取一般來說,樣本密集的地方中心點可以適當多些,樣本稀疏的地方中心點可以少些;若資料本身是均勻分佈的,中心點也可以均勻分佈。總之,選出的資料中心應具有代表性。徑向基函式的擴充套件常數是根據資料中心的散佈而確定的,為了避免每個徑向基函式太尖或太平,一種選擇方法是將所有徑向基函式的擴充套件常數設為:
                                                            \large \delta = \frac{d_{max}}{\sqrt{2M}}

      式中,\large d_{max}是所選資料中心之間的最大距離;M是資料中心的數目。
(2)第二類方法:資料中心的自組織選擇常採用各種動態聚類演算法對資料中心進行自組織選擇,在學習過程中需對資料中心的位置進行動態調節,常用的方法是K-means聚類(不懂的建議自行學習一下),其優點是能根據各聚類中心之間的距離確定各隱節點的擴充套件常數。由於RBF網的隱節點數對其泛化能力有極大的影響,所以尋找能確定聚類數目的合理方法,是聚類方法設計RBE
網時需首先解決的問題。除聚類演算法外,還有梯度訓練方法、資源分配網路(RAN)等。

廣義RBF網路資料中心的聚類演算法

這裡預設大家都知道一些簡單的聚類思想了,例如最常見的K-means聚類演算法原理大家應該理解,這裡簡單的解釋一下K-means的原理,很簡單,在資料中我隨意選擇k箇中心點,然後這以這個k箇中心資料為基礎計算其他資料到此中心的距離,把新資料加入最近的那個中心點,沒加入一個數據就計算平均距離然後以這個平均距離作為本類的新中心,繼續計算下去,知道資料分類完成了。不懂的建議學習一下。

1989年,Moody和Darken提出一種由兩個階段組成的混合學習過程的思路。第一階段常採用Duda和Hart1973年提出的K-means聚類演算法,其任務是用自組織聚類方法為隱層節點的徑向基函式確定合適的資料中心,並根據各中心之間的距離確定隱節點的擴充套件常數。第二階段為監督學習階段,其任務是用有監督學習演算法訓練輸出層權值,一般採用梯度法進行訓練。在聚類確定資料中心的位置之前,需要先估計中心的個數M(從而確定了隱節點數),一般需要通過試驗來決定。

通過聚類得到徑向基的中心後,後面就是確定徑向基函式額擴充套件函式。擴充套件常數的確定是通過k個聚類中心點的距離決定的,一般去k箇中心點彼此距離最小的那個值加入為d,\large \delta = \lambda d

利用K-means聚類演算法得到各徑向基函式的中心和擴充套件常數後,混合學習過程的第2步是用有監督學習演算法得到輸出層的權值,常採用LMS法。更簡捷的方法是用偽逆法直接計算。以單輸出RBF網路為例,設輸人為時,第j個隱節點的輸出為:

                                                              \large \varphi _{pj} = \varphi (\left \| \mathbf{x^p-c_j} \right \|),      \large p = 1,2,3...,P, j=1,2,3,...,M
則隱層輸出矩陣為:

                                                              \large \hat{\Phi } = [\varphi _{pj}]_{P\times M}

若RBF網路的待定輸出權值為:\large \mathbf{W} = [w_1,w_2,....,w_M],則網路輸出向量為:

                                                                 \large F(X) = \hat{\Phi }w

令網路輸出向量等於期望訊號\large d。則\large w可以用\large \hat{\Phi }的偽逆\large \hat{\Phi }^+求出:

                                                                \large w = \hat{\Phi }^+d

                                                                 \large \hat{\Phi }^+ = (\hat{\Phi }^T\hat{\Phi })^{-1}\hat{\Phi }^T 

 以上就是權值更新思想。下面對比一下RBF和BP的差別:

RBF網路與BP網路都是非線性多層前向網路,它們都是通用逼近器。對於任一個BP網路,總存在一個RBF網路可以代替它,反之亦然。但是,這兩個網路也存在著很多不同點:

          ①  RBF網路只有一個隱層,而BP網路的隱層可以是一層也可以是多層的。
          ②  BP網路的隱層和輸出層其神經元模型是一樣的;而RBF網路的隱層神經元和輸出層神經元不僅模型不同,而且在網路中起到的作用也不一樣。
          ③  RBF網路的隱層是非線性的,輸出層是線性的。然而,當用BP網路解決模式分類問題時,它的隱層和輸出層通常選為非線性的。當用BP網路解決非線性迴歸問題時,通常選擇線性輸出層。
          ④  RBF網路的基函式計算的是輸人向量和中心的歐氏距離,而BP網路喼單元的激勵函式計算的是輸人單元和連線權值間的內積。
           ⑤  RBF網路使用區域性指數衰減的非線性數(如高斯函式)對非線性輸人輸出對映進行區域性逼近。BP網路的隱節點採用輸人模式與權向量的內積作為啟用函式的自變數,而啟用函式則採用Sigmoid函式或硬限幅函式,因此BP網路是對非線性對映的全域性逼近。RBF網最顯著的特點是隱節點採用輸人模式與中心向量的距離(如歐氏距離)作為函式的自變數,並使用徑向基函式(如函式)作為啟用函式。徑向基函式關於N維空間的一箇中心點具有徑向對稱性,而且神經元的輸人離該中心點越遠,神經元的啟用程度就越低。隱節點的這個特性常被稱為“區域性特性”。
由於RBF網路能夠逼近任意的非線性函式,可以處理系統內在的難以解析的規律性,並且具有很快的學習收斂速度,因此RBF網路有較為廣泛的應用。RBE網路已成功地用於非線性函式逼近、時間序列分析、資料分類、模式識別、資訊處理、影象處理、系統建模、控制和故障診斷等。

以上就是徑向基的基本內容了,好本節結束,下一節進入很火的神經網路CNN即卷積神經網路。