天天看點

離散型Hopdield神經網絡聯想記憶功能

Hopdield神經網絡用于聯想記憶介紹:

離散型Hopdield神經網絡聯想記憶功能

       如上圖這個例子,這就是離散型Hopfield網絡用于聯想記憶的工作方式。我們以T這個字母為例,首先生成一張完整的T字形圖檔,然後将圖檔映射到神經網絡中的每個神經元,即每個像素都對應網絡中的一個神經元,T字上的像素映射到網絡上的神經元,對應值是1(激活狀态),T字外的像素映射到網絡上的神經元,對應值為0(抑制狀态)。然後進行訓練,訓練的過程是保持神經元狀态不變,通過修改權值,使得當神經元的狀态和T字形正好對應的同時,網絡的能量函數

離散型Hopdield神經網絡聯想記憶功能

      正好到達最低點。訓練完成後,網絡便存儲T這個模式。這樣,如果在網絡中再輸入右圖這種加入噪聲、隻有一半的T字圖檔(輸入過程還是和訓練一樣,将像素點映射到神經元上),經過網絡疊代,不斷修改神經元的狀态,能量函數到達訓練時的最低點時,神經元的狀态最終便會變成完整的T字形。訓練過程實際就是:由于能量函數是有界的,是以系統最後必趨于穩定狀态,并對應于在狀态空間的某一局部極小值。适當地選取初始狀态,網絡狀态最終将演化到初始狀态附近的極小值。如果存儲的模式正好對應于該極小值,則意味着當輸入與存儲樣本相似時,會聯想起極小值處的儲存樣本,是以Hopfield神經網絡具有聯想記憶功能。

過程了解:

       Hopfield網絡中的每一個神經元既是輸入也是輸出,并且神經元之間是全連接配接的。這就是,每個神經元是網絡中其他所有神經元的輸入。所有神經雲都是互相的輸入,也是輸出。正如上面所說,網絡在計算中的作用是将一個扭曲的模式映射在網絡的神經元上,疊代後最終停止在訓練收斂時得到的極小值的模式之一。是以,需要知道的是:(1)如何訓練網絡(2)如何更新神經元(3)神經元的更新順序如何得到(4)如何知道停留在了訓練好的模式之一。

       如何訓練網絡:在Hopfield發表的論文中,他提供了一個公式,可以在沒有任何訓練的情況下計算權重值,使用

離散型Hopdield神經網絡聯想記憶功能

來表示神經元之間的權重。

假如想要存儲一組模式

離散型Hopdield神經網絡聯想記憶功能

。設定權重公式為:

離散型Hopdield神經網絡聯想記憶功能

同時,

離散型Hopdield神經網絡聯想記憶功能

注意如果隻存儲一種模式,上式可以化簡為:

離散型Hopdield神經網絡聯想記憶功能

       例如,我們使用5節點網絡去識别模式(0 1 1 1 0)。那麼需要一個5x5的權重矩陣,同時由于神經元的自權重都設定為0,是以權重矩陣對角線為0,矩陣如下所示:

離散型Hopdield神經網絡聯想記憶功能

離散型Hopdield神經網絡聯想記憶功能

公式中可以得到:

離散型Hopdield神經網絡聯想記憶功能

因為權重是對稱的,我們隻用計算矩陣對角線上方的權重。V是待存儲的模式,用向量(0 1 1 0 1)表示,是以

離散型Hopdield神經網絡聯想記憶功能

。權重矩陣計算如下:

離散型Hopdield神經網絡聯想記憶功能

這樣得到權重矩陣:

離散型Hopdield神經網絡聯想記憶功能

現在來看看用5節點網絡來存儲

離散型Hopdield神經網絡聯想記憶功能

離散型Hopdield神經網絡聯想記憶功能

兩種模式。例如

離散型Hopdield神經網絡聯想記憶功能

按如下方法計算:

離散型Hopdield神經網絡聯想記憶功能

       或者可以先計算出第一種模式的權重矩陣,接着計算出第二種模式的權重矩陣,然後将這兩種模式相加起來,最終得到如下矩陣:

離散型Hopdield神經網絡聯想記憶功能

       如何更新神經元:現在有了(0 1 1 0 1)和(1 0 1 0 1)兩種模式的權重矩陣。一個要注意的問題是如果這兩個模式隻相差2位,把它們合在一起可能很難區分開來。通過類推,如果将小寫“c”從“e”或大寫“O”與“Q”區分開來,可能會遇到困難。更新Hopfield網絡中的神經元非常像更新感覺器。例如如果更新Hopfield網絡的神經元3,則可以将感覺器看作是感覺器,将所有其他神經元的值作為輸入值,将這些神經元到神經元3的權值作為權重。換句話說,首先對其他神經元的輸入進行權重求和,如果該值大于或等于0,則輸出1。否則,輸出0。公式如下:

離散型Hopdield神經網絡聯想記憶功能

如果

離散型Hopdield神經網絡聯想記憶功能

,則給它重指派為1,否則指派為0。

使用(0 1 1 0 1)和(1 0 1 0 1)的權重矩陣,計算神經元3的值:

離散型Hopdield神經網絡聯想記憶功能

       因為等于0,是以 重指派1。在這種情況下, 的值不會改變。值得注意的是,由于從神經元3到自身的權重為0,我們可以計算權重矩陣中第3列的點積和目前狀态來計算權重和:

離散型Hopdield神經網絡聯想記憶功能

       确定神經元更新順序:你可能已經注意到在Hopfield網絡中神經元的更新順序問題有點棘手。如果它的輸入值正在改變,你怎麼能更新一個神經元呢?那麼有兩種方法。首先是同步更新,這意味着基于現有狀态(即不是節點正在改變的值),所有節點同時被更新。要更新此方法中的節點,隻需将權重矩陣乘以目前狀态的向量即可。

       這在神經意義上不太現實,因為神經元并不全都以相同的速率更新。它們具有不同的傳播延遲等問題,是以更現實的方法是以随機順序更新它們。事實上,這是Hopfield所描述的方法。随機選擇一個神經元并更新它,然後再随機選擇另一個神經元并更新它。一直這樣更新直到系統處于穩定狀态。

       事實上,一般以半随機的順序來更新Hopfield網絡神經元。一次性更新所有的神經元,但是在這次總體更新中,神經元是以随機順序更新的。是以可能的更新順序是3,2,1,5,4,2,3,1,5,4等等,如果是純粹是随機的,可能會出現3,2,1,2,2,2,5,1,2,2,4,2,1這種情況,是以這種措施是為了避免一個随機發生器不斷更新某個神經元而不更新其他神經元。

       如何知道停留在了訓練好的模式之一:如果更新一次網絡後發現沒有神經元繼續變化,就表示網絡已經收斂,可以停止更新狀态了。 權值隻在訓練過程改變,訓練完成後隻有神經元的狀态會發生改變。并且對于某一神經元,和它連接配接的神經元處于激活狀态的越多,這個神經元也就越容易被激活。

能量函數:

Lyapunov函數保證了在模式回憶中能量函數的值可以不斷下降,最終停在網絡吸引子,神經網絡達到一個穩定狀态。

離散型Hopdield神經網絡聯想記憶功能

       這樣Hopfiel網絡便總能達到一個存儲的模式,但是問題是達到的極小值并不一定是與輸入相對應的正确的極小值,輸出錯誤的結果。Hopfield神經網絡可以存儲的模式存在限制,下圖是關于神經網絡規模圖和神經網絡可以記憶的模式數量的關系圖:

離散型Hopdield神經網絡聯想記憶功能

       Hopfield神經網絡可以存儲的模式數量和神經元數量也是有限制的,一般來說,模式數量和神經元數量之比應當在0.138之下,在這個比值之下,我們可以使用Hebbian學習算法來進行訓練。

       我們需要儲存另外一張圖檔的時候,我們隻需要得到另外一個權值矩陣,然後把這兩個矩陣相加就可以了。一個不太恰當的了解是在整個 Hopfield Network的狀态空間裡,我們可以用這種權值相加的方式人為的構造兩個能量函數上的局部極小值,如下圖所示:

離散型Hopdield神經網絡聯想記憶功能

       圖中左邊是第一個狀态空間的局部極小值,右邊是第二個狀态空間上的局部極小值。當我們向網絡輸入一個靠近第二個局部極小值所在位置的向量的之後,在經過數次疊代,最終可以收斂于第二個局部極小值。這就是Hopfield神經網絡可以通過一個不完整的資訊得到完整資訊的原理。當然實際上這個狀态空間不可是二維的,而是一個hypercube。以上就是最基本的權值計算方法,但是這種存儲方式是及其浪費空間的。這個網絡能夠正确記憶的樣本矢量數于神經元數目的比的極限大概是0.138。其中一個原因是因為當兩個樣本距離很近的時候,網絡産生混淆,如下圖所示:

離散型Hopdield神經網絡聯想記憶功能

       當藍色的樣本與綠色的樣本疊加之後,無論輸入的是類似于藍色還是類似于綠色的任何一個輸入,這個網絡中的節點最終都會收斂于紅色曲線的極小值點,這就是對兩個樣本發生了混淆,這裡的紅色極小值點被稱為spurious minima。為了能夠盡可能的提高Hopfield神經網絡的存儲能力,Hopfield, Feinstein 和 Palmer 在1985年提出了 unlearning 機制,這個方法被實驗證明是有效的,但是缺乏理論分析。後來也有一些其它的方法來提高網絡的存儲能力,例如當新的樣本到來時不時一次更新權值之後就結束,而是拿所有的樣本來循環訓練這個網絡,大概就是增強記憶的感覺,證明也是有效的。

Reference:

1.https://en.wikipedia.org/wiki/Hopfield_network

2.https://en.wikipedia.org/wiki/Hopfield_network

3.https://www.zhihu.com/question/56994540/answer/191053894

4.http://mlexplore.org/2017/03/12/hopfield-networks-in-go/

5.http://www.asimovinstitute.org/neural-network-zoo/

6.https://www.zhihu.com/question/56994540/answer/191053894

7.http://web.cs.ucla.edu/~rosen/161/notes/hopfield.html

8.Hinton神經網絡公開課11 Hopfield nets andBoltzmann machines

繼續閱讀