2012年4月22日 星期日

HNN(Hopfield Neural Network)


霍普菲爾網路(HNN)是一種聯想式學習網路從訓練範例中,學習範例的內在記憶規則,以應用於當有不完整輸入狀態資料時,需推論其完整資料,適用於資料擷取與雜訊過濾之應用。


聯想式學習分成兩類:
自聯想 (Auto-associative):由一個樣式聯想同一個樣式者。
異聯想 (Hetero-associative):由一個樣式聯想另一個樣式者。
霍普菲爾網路屬於「自聯想」模式。
先提供許多訓練範例,每個範例有一組二極值{-1, +1}的輸入特徵向量,由這些範例學習一個聯想記憶規則,使網路能記憶這些訓練範例的特徵向量。接著,若有不完整或是有雜訊的資料輸入,網路即能聯想起與其最相近的訓練範例資料。

離散式霍普菲爾網路(輸入只有-1,1)架構如下

學習過程:

假設任意兩處理單元間皆有連結存在。每個處理單元之間的連結加權值,代表兩者間的互動關係。公式如下:
Wij= Σp Xip × Xjp
其中 Wii= 0;p 表示第p 個訓練範例; Xip 表示第 p 個訓練範例中,第 i 個輸入變數值。
所以上述公式為Wij= 所有訓練範例的(第 i 個輸入變數值 *第 i 個輸入變數值)其值相加總和

從公式可得知,如果單元間的加權值為正,代表兩個單元間傾向同號 (同為負或同為正);反之,若加權值為負,代表兩個單元間傾向異號,即:一正一負。


回想過程:


設定網路參數。
讀入加權值矩陣。
輸入一組測試範例的狀態向量X。
開始計算新的狀態向量X。

先算出所有處理單元的加權乘積和:net j= Σi Wij  × X



利用 net j

判斷所有處理單元的狀態值是否要更新,方式如下:
若 net j > 0,則處理單元 Xj = 1。
若 net j =0,則處理單元 Xj維持原值。
若 net j <0,則處理單元 Xj = -1。


重覆直到收歛 (狀態向量不再有明顯變化) 或執行一定數目的循環。



利用2×3的黑白點所產生的4組圖樣來做範例

在此,以 -1 代表白點,+1 代表黑點,0 表示未知。以由左到右且由上到下的方式做編碼。四個圖樣所產生的二極值如下所示:

W13= Σp X1p × X3p =(+1)(+1) + (-1)(-1) +  (+1)(+1) + (-1)(-1) = 4






回想過程:
讀入一個具有雜訊或不完全的圖樣X





X = {+1, +1, +1, -1, +1, -1}
第一次迭帶:先計算每個處理單元的加權乘積和:


判斷所有處理單元的狀態值是否要更新,
若 net j > 0,則處理單元 Xj = 1。
若 net j =0,則處理單元 Xj維持原值。
若 net j <0,則處理單元 Xj = -1。
故X = {+1, -1, +1, -1, +1, -1}

(第二次迭帶):

因已無狀態變數值改變,因此停止迭帶。結果圖樣為



沒有留言:

張貼留言