內容如有錯誤請不吝指教!
(1) 初始化node set A,裡面包含兩個node c1,c2
其weight vector從input pattern中隨機選取。
將connection set, 初始化為
(2) 輸入新的pattern
(3) 搜尋A裡面的所有node,得到
first winner s1,藉由右式取得:
second winner s2,藉由右式取得:
如果 和s1或和s2之間的距離比T1或T2大,則input signal成為新的node,
若 或 ,則
接著再回第二步繼續處理新的signal
(4) 如果連接s1和s2的連結不存在,則創造一個,並且加到C
,然後再把s1 和 s2 連結的age設為0,
即age(s1,s2)=0
(5) 增加所有edge的age,增加的量由s1得到
(6) 將「輸入訊號」與「Winner」之間的歐式距離(Euclidian distance)加到累計的error:E s1
(7)
(8)
在此,我們將 稱為winner的learning rate, 稱為neighbor的learning rate
(9) 將大於agedead的node移除,例如:
and then
(10)如果目前的輸入訊號數量是浪打的倍數,則插入一個新的node,並且用以下的方法在低機率分佈下移除node
A. 用最大累積誤差 E來決定node q
B. 尋找所有q的鄰居,用最大累積誤差來決定node f
C. 新增node r,並且從q和從f去做內插算出weigh vector
D. 藉由 、 、
去做內插,算出Er(累積誤差)、Mr(累積訊號量)、和Rr(inherited error radius)
E. ,由beta降低q和f的累積誤差變數
F. ,由gamma降低q和f的累積訊號數量變數
E. 判斷插入是否成功
判斷誤差半徑是否大於繼受誤差半徑
換句話說,如果插入不能減少這個local area的平均誤差(mean error),插入就是失敗的。
否則,就更新繼受誤差半徑
例如, ,插入就是失敗的,新node r要被移除,並且其他變數恢復原來的狀況。否則,
F. 如果插入是成功的,將新node r和q與f連接, ,
並且將q和f的連結拿掉。
G. 針對所有在A的node,尋找一個只有一個鄰居的nodes,然後拿這些只有一個鄰居的node的累積訊號數量 和 所有node的平均累積訊號數量 比較。如果node只有一個鄰居而且累積訊號數量比適性門檻值低,將它從node中移除。
例如:
而且 ,則
其中,c由使用者決定,而且
如果input data的雜訊多,c就越大
H. 刪除在A裡面獨立沒連結的node,例如:
if then
(11)使用以下方法將node分群
A. 一開始所有的node都是unclassified
B. Loop:隨機從A選擇一個未被分類的node i,把node i標記為已分類的,並且將他標示成class Ci
C. 搜尋A,尋找所有以”path”連到node i的未分類的node,將它們標記為已分類,並且將它們標記為和node i相同的類別(Ci)
D. 如果仍有未被分類的node,回到Loop繼續
E. 回到(2),繼續on-line程序
留言列表