1. 程式人生 > >深度學習 --- Hopfield神經網路詳解(吸引子的性質、網路的權值的設計、網路的資訊儲存容量)

深度學習 --- Hopfield神經網路詳解(吸引子的性質、網路的權值的設計、網路的資訊儲存容量)

上一節我們詳細的講解了Hopfield神經網路的工作過程,引出了吸引子的概念,簡單來說,吸引子就是Hopfield神經網路穩定時其中一個狀態,不懂的請看 Hopfield神經網路詳解,下面我們就開始看看吸引子有什麼性質:

1.吸引子的性質

         性質1:若X是網路的一個吸引子,且閾值T=0,在sgn(n)處,x_j(t+1) = x_j(t),則(-x)也一定是該網路的吸引子。

              證明: 因為X是吸引子,即X = f(WX),從而有:

                           f[W(-X)] = f(-WX) =-f(WX)= -X

                          所以(-x)也一定是該網路的吸引子。

         性質2: 若X^a是網路的一個吸引子,則與X^a的海明距離dH(x^a,x^b) = 1x^b一定不是吸引子。

                注:所謂海明距離是通訊的含義就是說狀態位不一樣的個數,如1100和1000,其海明距離為1,因為不同的位就只有1位,

              證明:兩個向量的海明距離dH(x^a,x^b)

是指兩個向量中不同元素的個數,不妨設 

                          x_1^a\neq x_1^b,x_j^a\neq x_j^b,j=2,3,...,n,因為w_{11}=0,由吸引子定義,有:

                                                         x_1^a = f(\sum_{i=2}^{n}w_{ii}x_i^a - T_1) = f(\sum_{i=2}^{n}w_{ii}x_i^b-T_1)

                         由假設條件知,x_1^a\neq x_1^b,故:

                                                          x_1^b\neq f(\sum_{i=2}^{n}w_{ii}x_i^b-T_1)

                          所以x^b一定不是吸引子。

            性質3:

                           若有一組向量X^p(p=1,2,...,P)均是網路的吸引子,且在sgn(0)處,x_j(t+1) = x_j(t),則有該組向量線性組合而成的向量\sum_{p=1}^{P}a_pX^p也是該網路的吸引子。

2.吸引子的吸引域

          能使網路穩定在同一吸引子的所有初態的集合,稱該吸引子的吸引域,下面給出吸引域的定義:

          定義1: 若X^a是吸引子,對於非同步方式,若存在一個調整次序,使網路可以從狀態X演變到X^a,則稱X弱吸引到X^a;若對於任意調整次序,網路都可以從狀態X演變到X^a,則稱X強吸引到X^a

          定義2:若對於某些X,有X弱吸引到吸引子X^a,則稱這些X的集合為X^a的弱吸引域;若對某些X,有X強吸引到吸引子X^a,則稱這些X的集合為X^a的弱吸引域。

           欲使反饋網路具有聯想能力,每個吸引子應該都具有一定的吸引域,這樣這樣帶噪聲和缺失資訊的初始樣本,網路才能經過動態演變而穩定到某一個吸引子狀態,從而實現正確的聯想。反饋網路設計的目的就是要使網路能落到期望的穩定點上,並且具有最可能大的吸引域,以增強聯想的功能即抗干擾的能力。

下面舉個例子來說明是如何聯想的:

          這裡就不畫圖了,直接從書中截圖過來,然後詳細講解:

先解釋一下,(a)圖是說明x_1,x_2,x_3的權值和閾值,其中圓圈內的是閾值即T,連線旁邊的是權值,狀態的排列是這樣的即:x_1x_2x_3,假設的狀態的更新順序為x_1\rightarrow x_2\rightarrow x_3,在假設初始狀態為000,那麼下面開始第一步更新:

      設各節點狀態取值為1或者0,3節點的DHNN網路應有2^3 = 8種狀態,設x =(x_1,x_2,x_3)^T = (0,0,0)^T,更新順序為:x_1\rightarrow x_2\rightarrow x_3,下面開始:

第一步更新x_1:       x_1 = sgn[(-0.5)\times 0+0.2\times 0-(-0.1)]=sgn(0.1)=1,其他節點狀態不變,網路的狀態由(0,0,0)^T變為(1,0,0)^T,如果先更新x_2或者x_3,網路狀態仍為(0,0,0)^T,因此初始狀態保持不變的概率為\frac{2}{3},而變為(1,0,0)^T的概率為\frac{1}{3}.

第二步,此時的網路為(1,0,0)^T,更新x_2後,得到x_2 = sgn[(-0.5)\times 1+0.6\times 0-0]=sgn(-0.5) = 0,其他節點保持不變,網路狀態仍為(1,0,0)^T,如果本步先更新x_1或者x_3,網路的狀態將為(1,0,0)^T(1,0,1)^T,因此本狀態保持不變的概率為\frac{2}{3},為變為(1,0,1)^T\frac{1}{3}.

第三步,此時的網路狀態為(1,0,0)^T,更新x_3得到,x_3 = sgn(0.2\times 1+0.6\times 0-0) = sgn(0.2)=1

同理可算出其他狀態的直接的演變過程和狀態轉移概率,如上圖b給出八種狀態,從圖中我們看到x = (0,1,1)^T是一個吸引子,網路從任意狀態更新後都將達到此穩定狀態。

上面就是網路的轉移過程和聯想過程,下面我們來看看,如何設計吸引子,即如何設定網路權值。

3.網路的權值設計

       從上面我們知道了網路是如何動態的更新到吸引子的,那麼我們現在如何設計吸引子呢?

吸引子的分佈是由權值決定的,設計吸引子的核心是如何設計一組合適的權值,為了使所設計的權值滿足要求,權值矩陣應符合如下要求:

  1.  為保證非同步方式工作時網路收斂,w應該為對稱陣
  2.   為保證同步方式工作時網路收斂,w應該為非負定對稱陣
  3.  保證給定的樣本是網路的吸引子,並且要有一定的吸引域

根據所要求的的吸引子的數量,可以採用不同的方法設計吸引子,如下:

聯立方程法:

             下面根據上圖的3個節點繼續設計吸引子,設要求設計的吸引子為x^a = (0,1,0)^Tx^b = (1,1,1)^T,權值和閾值在【-1,1】區間取值,試求權值和閾值。

             考慮到w_{ij} = w_{ji},對於狀態x^a = (0,1,0)^T,各節點淨輸入應該滿足如下:

                                   net_1 = w_{12}\times 1+w_{13}\times 0 - T_1 = w_{12} - T_1 < 0

                                   net_2 = w_{12}\times 0+w_{23}\times 0 - T_2 = - T_2 > 0

                                    net_3 = w_{13}\times 0+w_{23}\times 1 - T_3= w_{23} - T_3 < 0

               對於x^b = (1,1,1)^T狀態,各節點淨輸入應滿足:

                                   net_1 = w_{12}\times 1+w_{13}\times 1 - T_1 > 0

                                   net_2 = w_{12}\times 1+w_{23}\times 1 - T_2 > 0

                                    net_3 = w_{13}\times 1+w_{23}\times 1 - T_3> 0

聯立可以接得:權值的範圍,在範圍內選擇一個權值就可以,下面直接給出答案了,權值不唯一:

                                     w_{12}=0.5,T_1 = 0.7

                                     w_{13}=0.4,T_1 = -0.2

                                     w_{23}=0.5,T_3= 0.1

因此該引數的從初態最終會演變到我們設計的兩個吸引子中。

但是此種方法只適合吸引子較少的時候計算,如果吸引子較多時就需要採用外積和法。

外積和法:

         更為通用的權值設計方法是採用Hebb規則的外積和法,設給定P個模式樣本x^p,p = 1,2,3,,,,,P,x\epsilon \left \{ -1,1 \right \}^n,並且設樣本兩兩正交,且n>p,則權值矩陣為記憶樣本的外積和:

                                      W = \sum_{p=1}^{P}x^p(x^p)^T                                                                              \left ( 1 \right )

          若w_{jj} =0,上式寫為:

                                      W = \sum_{p=1}^{P}[x^p(x^p)^T-I]                                                                    \left ( 2 \right )

            式中,I為單位矩陣,上式寫成分量形式,可寫為:

                                        w_{ij} = \left\{\begin{matrix} \sum_{p=1}^{P}x_i^px_j^p, \ i\neq j\ & \\ & \\ & \\ 0, \ i=j\ \end{matrix}\right.

              所以上面w必然滿足對稱性要求,下面還需要檢查一下是否為吸引子。

              因P個樣本x^pp = 1,2,3,,,,,P,x\epsilon \left \{ -1,1 \right \}^n是兩兩正交的,有:

                                          (x^p)^Tx^k = \left\{\begin{matrix} 0, \ p\neq k\ & \\ & \\ & \\ n, \ p=k\ & \end{matrix}\right.

                所以:

                                           WX^k = \sum_{p=1}^{P}[x^p(x^p)^T - I]x^k = \sum_{p=1}^{P}[x^p(x^p)^Tx^k-x^k]

                                                      = x^k(x^k)^Tx^k - Px^k

                                                      = nx^k - px^k = (n-p)x^k

                    因為n>p,所以有:

                                          f(wx^p ) = f[(n-p)x^p] =sgn[(n-p)x^p]=x^p

可見給定樣本x^pp = 1,2,3,,,,,P,是吸引子,但是需要指出來的是我們設計時有時候並不能正好的設計那麼多,例如我需要60個吸引子,但是我需要設計64個吸引子,因此會多出4個吸引子,該吸引子稱為偽吸引子。下面畫個圖給大家理解一下什麼意思,偽吸引子並不是我們想要的,但是它存在:                

假如吸引子a,b,c是我們設計的吸引子,但是後面的就是偽吸引子,如何處理偽吸引子,我們將在下節繼續討論,這裡先提一下。

4.網路的資訊儲存容量

       當網路規模一定時,所能記憶的模式是有限的,對於所容許的聯想出錯率,網路所能儲存的最大模式數P_{max}稱為網路容量,網路的容量與網路的規模、演算法以及記憶模式向量的分佈都有關係,下面給出DHNN網路儲存容量的有關定理:

      定理1: 若DHNN網路的規模為n,且權矩陣主對角線元素為0,該網路的資訊容量上界為n。

      定理2: 若P個記憶模式x^pp = 1,2,3,,,,,P,x\epsilon \left \{ -1,1 \right \}^n是兩兩正交的,n>p,且權值矩陣w按照\left ( 1 \right )進行求得,則所有P個記憶模式都是DHNN網(w,0)的吸引子.

       定理3:若P個記憶模式x^pp = 1,2,3,,,,,P,x\epsilon \left \{ -1,1 \right \}^n是兩兩正交的,n>p,且權值矩陣w按照\left ( 2 \right )進行求得,則所有P個記憶模式都是DHNN網(w,0)的吸引子.

從上面的定理可知,當用外積設計DHNN網路時,如果記憶模式都滿足兩兩正交的條件,則規模為n維網路最多可記憶n個模式,一般情況,模式樣本不可能都滿足正交條件,對於非正交模式,網路的資訊儲存會大大降低。

    事實上,當網路規模n一定時,要記憶的模式越來越多,聯想時出錯的可能性很大,反之,要求出錯率越低,網路的資訊儲存容量上限越小。研究表明當儲存模式數P超過0.15n時,聯想時就有可能出錯,錯誤結果對應的是能量的區域性極小點,或稱為偽吸引子。

    提高網路儲存容量有兩個基本途徑:

              1.改進網路拓撲結構

              2.改進網路的權值設計方法

常用的改進方法有:反覆學習法、糾錯學習法、移動興奮門限法、偽逆法、忘記規則和非線性謝謝規則等。

我們們知道了, Hopfield神經網路的最大問題在於偽吸引子的存在,一旦存在偽吸引子,因此容易造成錯誤,如何處理偽吸引子就是我們下一節所要解決的。

到這裡DHNN就結束了,CHNN這裡不講了,感興趣的自行查閱資料瞭解。