霍普菲爾網路(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}
(第二次迭帶):
因已無狀態變數值改變,因此停止迭帶。結果圖樣為
沒有留言:
張貼留言