2010-04-16 29 views
3

據「介紹與Java傑夫·希頓神經網絡」正常化輸入,輸入到Kohonen神經網絡必須是-1和1之間Kohonen的SOM地圖:未知範圍

值可以對預先知道範圍的輸入進行歸一化: 例如RGB(125,125,125)其中範圍被認爲是介於0和255之間的值:
1.除以255:(125/255)= 0.5 >>(0.5,0.5,0.5)
2.乘以二和減一:((0.5 * 2)-1)= 0 >>(0,0,0)

問題是我們如何能夠將範圍未知的輸入標準化爲我們的身高或體重。

此外,其他一些論文提到輸入必須標準化爲0和1之間的值。「-1和1」或「0和1」的正確方法是什麼?

回答

6

您總是可以使用壓扁函數將無限區間映射到有限區間。例如。你可以使用tanh.

雖然你可能想用tanh(x * l)和手動選擇l,但是爲了不在同一個區域放太多對象。所以,如果你有一個很好的猜測,即你的數據的最大值是+/- 500,你可能想用tanh(x/1000)作爲一個映射,其中x是你的對象的值它甚至可能是有道理的減去你的猜測來自x的平均值,產生tanh((x - 均值)/ max)。

4

從我所瞭解的Kohonen SOM中,他們具體的標準化並不重要。

那麼,它可能通過對學習算法參數值的特定選擇,但最重要的是您的輸入點的不同維度必須具有相同的幅度。假設每個數據點不是具有三個RGB分量的像素,而是具有針對一個國家的統計數據的向量,例如,面積,人口,...... 對於學習部分的收斂來說,所有這些數字具有相同的幅度是很重要的。

因此,如果您不知道確切的範圍,您只需要近似知道數據的特徵振幅即可。

對於重量和體積,我相信如果你分別用200kg和3米來劃分它們,所有的數據點都會以[0 1]的間隔下降。你甚至可以使用50公斤和1米重要的是,所有的座標將是1號。

最後,你可以考慮運行一些線性分析工具,如POD上的數據,會自動給你一種正常化你的數據和一個用於初始化你的地圖的子空間。

希望這會有所幫助。