Self Organizing Maps (SOM): 一種基於神經網絡的聚類算法


自組織映射神經網絡, 即Self Organizing Maps (SOM), 可以對數據進行無監督學習聚類。它的思想很簡單,本質上是一種只有輸入層--隱藏層的神經網絡。隱藏層中的一個節點代表一個需要聚成的類。訓練時采用“競爭學習”的方式,每個輸入的樣例在隱藏層中找到一個和它最匹配的節點,稱為它的激活節點,也叫“winning neuron”。 緊接着用隨機梯度下降法更新激活節點的參數。同時,和激活節點臨近的點也根據它們距離激活節點的遠近而適當地更新參數。

所以,SOM的一個特點是,隱藏層的節點是有拓撲關系的。這個拓撲關系需要我們確定,如果想要一維的模型,那么隱藏節點依次連成一條線;如果想要二維的拓撲關系,那么就行成一個平面,如下圖所示(也叫Kohonen Network):

既然隱藏層是有拓撲關系的,所以我們也可以說,SOM可以把任意維度的輸入離散化到一維或者二維(更高維度的不常見)的離散空間上。 Computation layer里面的節點與Input layer的節點是全連接的。

拓撲關系確定后,開始計算過程,大體分成幾個部分:

1) 初始化:每個節點隨機初始化自己的參數。每個節點的參數個數與Input的維度相同。

2)對於每一個輸入數據,找到與它最相配的節點。假設輸入時D維的, 即 X={x_i, i=1,...,D},那么判別函數可以為歐幾里得距離:

3) 找到激活節點I(x)之后,我們也希望更新和它臨近的節點。令S_ij表示節點i和j之間的距離,對於I(x)臨近的節點,分配給它們一個更新權重:

簡單地說,臨近的節點根據距離的遠近,更新程度要打折扣。

4)接着就是更新節點的參數了。按照梯度下降法更新:

迭代,直到收斂。

 

與K-Means的比較

同樣是無監督的聚類方法,SOM與K-Means有什么不同呢?

(1)K-Means需要事先定下類的個數,也就是K的值。 SOM則不用,隱藏層中的某些節點可以沒有任何輸入數據屬於它。所以,K-Means受初始化的影響要比較大。

(2)K-means為每個輸入數據找到一個最相似的類后,只更新這個類的參數。SOM則會更新臨近的節點。所以K-mean受noise data的影響比較大,SOM的准確性可能會比k-means低(因為也更新了臨近節點)。

(3) SOM的可視化比較好。優雅的拓撲關系圖 。

 

參考文獻:http://www.cs.bham.ac.uk/~jxb/NN/l16.pdf

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM