自組織映射神經網絡, 即Self Organizing Maps (SOM), 能夠對數據進行無監督學習聚類。它的思想很簡單,本質上是一種只有輸入層--隱藏層的神經網絡。隱藏層中的一個節點表明一個須要聚成的類。訓練時採用「競爭學習」的方式,每一個輸入的樣例在隱藏層中找到一個和它最匹配的節點,稱爲它的激活節點,也叫「winning neuron」。 緊接着用隨機梯度降低法更新激活節點的參數。同時,和激活節點臨近的點也根據它們距離激活節點的遠近而適當地更新參數。網絡
因此,SOM的一個特色是,隱藏層的節點是有拓撲關係的。這個拓撲關係須要咱們肯定,若是想要一維的模型,那麼隱藏節點依次連成一條線;若是想要二維的拓撲關係,那麼就行成一個平面,以下圖所示(也叫Kohonen Network):函數
既然隱藏層是有拓撲關係的,因此咱們也能夠說,SOM能夠把任意維度的輸入離散化到一維或者二維(更高維度的不常見)的離散空間上。 Computation layer裏面的節點與Input layer的節點是全鏈接的。學習
拓撲關係肯定後,開始計算過程,大致分紅幾個部分:3d
1) 初始化:每一個節點隨機初始化本身的參數。每一個節點的參數個數與Input的維度相同。blog
2)對於每個輸入數據,找到與它最相配的節點。假設輸入時D維的, 即 X={x_i, i=1,...,D},那麼判別函數能夠爲歐幾里得距離:io
3) 找到激活節點I(x)以後,咱們也但願更新和它臨近的節點。令S_ij表示節點i和j之間的距離,對於I(x)臨近的節點,分配給它們一個更新權重:pdf
簡單地說,臨近的節點根據距離的遠近,更新程度要打折扣。可視化
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