2012年4月22日 星期日

ART(Adaptive Resonance Theory Network)

自適應共振理論網路(ART)是一種無監督式學習網路,源自於認知學當中的記憶系統,一個好的記憶系統必須具有兩個要求:
穩定性:當新的事物輸入時,舊的事物應適當地保留
可塑性:當新的事物輸入時,應迅速地學習

由於穩定性和可塑性有時會有衝突,因此自適應共振理論網路採用「警戒值測試」(Vigilance Test)來解決此一矛盾。警戒值測試利用一個警戒參數ρ(Vigilance Parameter; 0 < ρ< 1)來做測試,其基本原理如下:

如果新的事物之特性與「某一個」舊的事物之特性夠相似 (即通過警戒值測試),則只修改系統中該舊事物的部份記憶,使其能同時滿足新舊事物之特性,使得舊的事物可適當地保留,如此
 可滿足穩定性的要求。
如果新的事物之特性與「所有」舊的事物之特性均不夠相似(即未能通過警戒值測試),則系統為此新事物建立全新的記憶,以迅速地學習此新事物,如此可滿足可塑性的要求。


一開始輸出層在學習過程初期只有一個,隨著學習的進展會逐漸增加,最後會穩定在一定的數目,學習過程即結束。這和其它神經網路模式輸出層處理單元的數目為固定值很不相同。

每個輸入層處理單元與輸出層處理單元間有兩個連結:由下而上加權值Wb與由上而下加權值W t ,這一點也和其它模式很不相同。

由下而上加權值Wb:
為介於0到1之間,用來計算匹配值。匹配值高的輸出層單元,將優先被用來做警戒值測試。
匹配值計算公式:net j = Σi Wijb × Xi

由上而下加權值Wt:
為0與1之二元值,用來計算相似值。相似值用來與警戒參數做比較,以判斷是否通過警戒值測試。
相似值計算公式:Vj = (Σi Wijt× Xi) /Σ i Xi

學習過程:

1)設定網路參數
Nout = 1 (一開始,輸出部份只有一個類別)
Nin = n (視每一組訓練範例的輸入變數之個數而定)
設定加權矩陣W的初始值
Wi1t = 1
Wi1b = 1/(1+Nin)

2)輸入一組訓練範例 X

3)計算每一個輸出層處理單元與所有輸入層處理單元間的匹配值net j
net j = Σi Wijb × Xi
找出匹配值最大的輸出層處理單元 net j *
net j* = max j(net j)
計算輸出層處理單元 net j* 的相似值
Vj* = (Σi Wij*t × Xi) /Σi Xi

4)測試警戒值 (由匹配值最大的輸出層節點開始)
若 Vj* > ρ
表示輸入資料的特徵與該輸出層節點所表示的特徵夠相似,只需修正該輸出層節點與所有輸入層節點的加權值即可)
若 Vj* < ρ
表示輸入資料的特徵與該輸出層節點所表示的特徵不夠相似,測試下一個輸出神經元直到沒有任一輸出神經元符合此要求就產生新的輸出神經元 (即新的類別)

5_1)修正該輸出層節點與所有輸入層節點的加權值(Wij*表示夠相似的該輸出神經元權值)
Wij*t = Wij*t × Xi
Wij*b = (Wij*t × Xi) / (0.5 + Σi(Wij*t × Xi ))
設定輸出層處理單元的輸出值,令Y j* = 1,而將其餘輸出層處理單元的輸出值設成 0
回到步驟 2

5_2)產生新的輸出神經元
設定Nout = Nout +1
設定新單元與所有輸入層處理單元間之加權值(若Nout=2)
Wi2t = Xi
Wi2b = Xi  / (0.5 + Σi(Xi))
令新增的輸出層處理單元Yout= 1,而將其餘輸出層處理單元的輸出值設成 0。
回到步驟 2

6)若完成一個學習循環時沒有新增的類別(即5_2沒執行)則結束訓練

回想過程:

讀入網路參數。
讀入加權值矩陣。
輸入一個測試範例的輸入向量X。
計算匹配值。
找出具有最大匹配值之輸出神經元 j*。
此 j* 即為所求


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


在此,以 0 代表白點,以 1 代表黑點,以由左到右且由上到下的方式做編碼。以編號 1的圖樣來說,會產生出一個二元值輸入向量 {1, 0, 1, 0, 1, 0}。


步驟如下:

警戒參數ρ取0.5,Nin = 6,Nout = 1。


Wi1t = 1; Wt  = {1, 1, 1, 1, 1, 1}
Wi1b = 1/(1+Nin);  Wb  = {1/7, 1/7, 1/7, 1/7, 1/7, 1/7} = 1/7 {1, 1, 1, 1, 1, 1}


載入第一個訓練範例 {1, 0, 1, 0, 1, 0}。

匹配值 net1=3/7 = 0.429。


相似值V1= 3/3 = 1,由於相似值大於警戒值,故通過警戒值測試,此輸出層處理單元與所有輸入層處理單元間的加權值

Wt _1 = {1, 0, 1, 0, 1, 0};
Wb _1= 1/(0.5+3){1, 0, 1, 0, 1, 0}



載入第二個訓練範例 {0, 1, 0, 1, 0, 1}。

匹配值 net1= 0/3.5 = 0。

相似值V1= 0/3 = 0,由於相似值不大於警戒值,且無其它輸出層處理單元可作警戒值測試,因此產生第二個輸出層處理單元 (即產生一個新的類別)



W t _2 = {0, 1, 0, 1, 0, 1};
W b _2 = 1/(0.5+3) {0, 1, 0, 1, 0, 1}



載入第三個訓練範例 {1, 1, 1, 0, 0, 0}。


匹配值 net1 = 2/3.5 = 0.571,
第二個單元的匹配值 net2 = 1/3.5 = 0.286
 先看V1再看V2

相似值V1= 2/3 = 0.667,由於相似值大於警戒值,故通過警戒值測試,修改此輸出層處理單元與所有輸入層處理單元間的加權值
Wt _1 = {1, 0, 1, 0, 0, 0};
Wb _1 = 1/(0.5+2) {1, 0, 1, 0, 0, 0}




重複上述作數個學習循環,直到在某一個學習循環中,無新的輸出層處理單元產生為止,才停止學習過程。

沒有留言:

張貼留言