1. 程式人生 > >深度學習 --- Hopfield神經網路詳解

深度學習 --- Hopfield神經網路詳解

       前面幾節我們詳細探討了BP神經網路,基本上很全面深入的探討了BP,BP屬於前饋式型別,但是和BP同一時期的另外一個神經網路也很重要,那就是Hopfield神經網路,他是反饋式型別。這個網路比BP出現的還早一點,他的學習規則是基於灌輸式學習,即網路的權值不是通過訓練出來的,而是按照一定規則計算出來的, Hopfield神經網路就是採用了這種學習方式,其權值一旦確定就不在改變,而網路中各神經元的狀態在執行過程中不斷更新,網路演變到穩定時各神經元的狀態便是問題之解。在這裡簡要解釋一下為什麼要學習這個神將網路,因為深度學習演算法起源來源於這裡還有BP,從這裡開始後面會引入玻爾茲曼機、受限玻爾茲曼機、深度置信網路,徑向基逼向器、卷積神經網路、遞迴神經網路。因此從這裡一步步的深入進去是很好的開始,等到卷積你會有總體感,不會覺得太突兀。

         Hopfield神經網路分為離散型和連續型兩種網路模型,分別記為DHNN(Discrete Hopfield Neural Network)和CHNN(Continues  Hopfield Neural Network),這裡主要討論離散型網路模型,下面預設都是離散型的。

1.CHNN工作原理:

如上圖是離散型網路的拓撲結構圖,這是單層全反饋網路,共有n個神經元 。任一神經元的輸出x_i均通過連線權接收所有神經元輸出的反饋回來的資訊,其目的就在於任何一個神經元都受到所有神經元輸出的控制,從而使各神經元的輸出相互制約,每個神經元均設有一個閾值T_j

,目的是反映對輸入的噪聲的控制。DHNN網路可簡記為N = (W,T).,他們是全連線的,上圖看不清楚,看下圖:

(1)網路的狀態

         DHNN網路中的每個神經元都有相同的功能,其輸出稱為狀態,用x_j表示,所有神經元狀態構成的反饋網路的狀態X = [x_1,x_2,....,x_n]^T,反饋網路的初始狀態為輸入表示為X(0) = [x_1(0),x_2(0),...,x_n(0)]^T,一旦初始值給定後,網路就開始進行動態演變,網路中的每個神經元的狀態在不斷的變化,變化規律如下:

                                                    x_j = f(net_j)

                   j = 1,2,3,...,n

            式中,f(\cdot )為啟用函式(轉移函式),通常為符號函式:

                                                      x_j = sgn(net_j) = \left\{\begin{matrix} 1, net_j\geq 0 & \\ & j = 1,2,3,..,n\\ & \\ -1,net_j< 0& \end{matrix}\right.                     (1)

              輸入net_j為;

                                                       net_j = \sum_{i=1}^{n}(w_{ij}x_i - T_j)                      j=1,2,3,...,n

對於DHNN網路,一般有w_{ii}=0,w_{ij}=w_{ji}.

當網路的每個神經元的狀態都不在改變時,此時的轉態就是網路的輸出轉態,表示為:

                                                          \lim_{t\rightarrow \infty }x(t)

(2) 網路的非同步工作方式

                所謂非同步是針對權值更新來說的,網路執行時每次只有一個神經元的i按照(1)式進行轉態的更新,其他神經元的狀態權值不變,即:

                                                          x_j(t+1) = \left\{\begin{matrix} sgn[net_j(t)], j=i & \\ & \\ & \\ x_j(t), j\neq i& \end{matrix}\right.

          神經元狀態的調整可以按照預先設定順序進行調整,也可以隨機選定。

(3)網路額同步工作方式

                 和非同步相對應,網路的同步工作方式是一種並行方式,所有神經元同時調整狀態,即:

                                                        x_j(t+1) = sgn[net_j(t))]                   j = 1,2,3,,,,,n

2、Hopfield神經網路的穩定性分析

    Hopfield神經網路按神經動力學的方式進行執行,工作過程為狀態的演化過程,對於給定的初始狀態,按照能力減小的方式演化,最終達到穩定的狀態。神經動力學分為確定性神經動力學和統計性的神將動力學,前者將神經網路作為確定性行為,用非線性微分方程來描述,方程的解以概率的方式給出。

      網路從初態x(0)開始,若能經過有限次遞迴後,其狀態不在發生變化即x(t+1) = x(t),則稱為網路是穩定的,如果網路是穩定的,他可以從任意初態收斂到穩態,反之如果網路不穩定,但是因為每個神經元只有兩個狀態即0,1,因此在整體也不會呈現發散的狀態,可能出現限幅的自持振盪,這種網路成為有限環網路,如果網路轉態即不重複也不停止。轉態變化無情多個,則為混沌現象。如下圖所示:

3、吸引子與能量函式         

        網路達到穩定時的狀態x,稱為網路的吸引子。一個動力學的系統的最終行為是由他的吸引子決定的,若把需要記憶的樣本資訊儲存於不同的吸引子中,當輸入含有部分記憶資訊的樣本時,網路的演變過程便是從部分資訊尋找全部資訊,即聯想回憶的過程。

        下面給出DHNN網路的吸引子的定義和定理:

         1.  若網路狀態x滿足x = f(W^Tx - T) ,則稱x為網路的吸引子

          2.對於DHNN網路,若按照非同步方式調整網路的狀態,且連線權矩陣w為對稱陣,則對於任意的初態,網路都最終收斂到一個吸引子中。

下面通過能量函式對對定理1進行證明:

定義網路的能量函式為:

                              E(t) = -\frac{1}{2}X^T(t)WX(t) + X^T(t)X                                       (2)

這個函式是根據動力學來的,來源我也不是很清楚,我們只需接受即可。

令網路能量的改變數為\Delta E,網路狀態的改變數為\Delta x,則:

                            \Delta E(t) = E(t+1) - E(t)                                                              (3)

                            \Delta x(t) = x(t+1) - x(t)                                                            (4)

將(3)、(4)兩式代入(2)式得:

                            \Delta E(t) = E(t+1) - E(t)

                                           = -\Delta x^T(t)[wx(t)-T] - \frac{1}{2}\Delta x^T(t)w\Delta x(t)

按照上面的非同步工作方式,第t個時刻只有一個神經元調整狀態,設該神經元為j,將\Delta x(t) = [0,0,...,\Delta x_j(t),0,...,0]代入上式,並考慮w為對稱矩陣:

                               \Delta E(t) = -\Delta x_j(t)[\sum_{i=1}^{n}(w_{ij} - T_j)] - \frac{1}{2}\Delta x_j^2(t)w_{ij}

因為各自神經元不存在自反饋,所以,w_{ii} = 0,並將上式化簡為:

                                  \Delta E(t) = -\Delta x_j(t)net_j(t)                                                              (5)

下面我們就要針對\Delta E進行討論:

情況1.    x_j(t) = -1, x_j(t+1) = 1即輸入輸出為異號時,根據(4)式得到\Delta x_j(t) = 2,因此net_j\geq 0,代入(5)式得 到:

                                   \Delta E(t)\leq 0.

         注:這裡解釋一下,因為x_j(t) = -1,而經過sgn(net_j)後x_j(t+1) = 1,說明net_j\geq 0,否則得不到                                         x_j(t+1) = 1,因為符號函式要想得到1,輸入必須大於等於0,下面一樣的思考。

情況2.     x_j(t) = 1, x_j(t+1) = -1,即輸入輸出為同號時,根據(4)式得到\Delta x_j(t) =- 2,因此net_j< 0,代入(5)式                     得 到:

                                  \Delta E(t)< 0.

情況3.      x_j(t) = x_j(t+1),所以\Delta x_j(t)=0,從而得到:

                                  \Delta E(t)= 0  

 

下面繼續討論E(t)收斂於常數時,是否對應於網路的穩態,當E(t)收斂與常數時,此時的\Delta E(t)= 0,此時對應兩種情況:

   情況1, x_j(t) = x_j(t+1) = 1或者x_j(t) = x_j(t+1) = -1,這種情況下,神經元的狀態不在改變,表明已經達到穩態                   了,此時對應的網路狀態為吸引子狀態。

   情況2,  x_{j} (t) =-1,x_j(t+1) =1,net_j(t) = 0,這種情況下網路繼續演變時,x_j = 1將不會在變化,如果x_j由1變化                          為-1,此時\Delta E(t)< 1,因此和收斂常數相矛盾。

 

綜上所述,當網路工作方式和權值滿足定理時則一定收斂到一個吸引子。

定理2:

            對於DHNN網路,若按照同步方式進行調整,且連線權矩陣w為非負定對稱矩陣,對於任意初態,網路都能收斂到一個吸引子上。

 

總結;

           從上面可以看到,非同步更新要比同步更新更好,當網路的能量始終向減小的方向演變,當能量最終穩定與一個常數時,該常數對應網路能量的極小狀態,稱該網路的極小狀態為能量井,能量井對應網路的吸引子。

好, 到這裡我們知道了什麼是吸引子,下一節就詳細的講解一下吸引子,本節結束。