天天看點

SOM 的兩種算法

我參考了這篇文章

http://www.scholarpedia.org/article/Kohonen_network

另一個很好的示範在這裡

http://www.math.le.ac.uk/people/ag153/homepage/PCA_SOM/PCA_SOM.html

SOM

t是訓練步

一個輸入資料是n維向量

SOM 的兩種算法

待訓練的是一堆節點,這堆節點之間有邊連着,通常是排成grid那樣的網狀結構

一個要訓練的節點包含一個n維向量

SOM 的兩種算法

訓練從t=0開始,t=輸入資料個數時結束

每步的更新規則是

SOM 的兩種算法

其中a(t)是一個随訓練步數衰減的函數,c,i都是訓練節點的索引,c是離x(t)最近的節點的索引,hci是節點mc和mi的邊距離。也就是說每個訓練步選一個輸入資料x(t),将離它最近的節點mc向這個輸入資料拉扯,這個節點又透過連着的邊,帶動鄰近的節點向這個輸入資料移動。

Batch SOM

這樣輸入資料太多的時候會很慢,改進的方法稱為batch som。

方法是在每一步,對每個節點 mj,統計所有選中它為最近鄰的輸入資料的平均值,記為 

SOM 的兩種算法

再按下式更新每個節點的值。

SOM 的兩種算法

nj是選了mj做最鄰近的輸入資料個數,hji是節點mi與節點mj的邊距離。可見對于節點mi,它會更新到鄰近所有節點mj對應的

SOM 的兩種算法

的權重平均值。

繼續閱讀