3

根据“Jeff Heaton 的 Java 神经网络简介”,Kohonen 神经网络的输入必须是介于 -1 和 1 之间的值。

可以对预先知道范围的输入进行归一化:例如 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”?

4

2 回答 2

6

您始终可以使用压缩函数将无限区间映射到有限区间。例如,您可以使用tanh。

您可能希望将 tanh(x * l) 与手动选择的 l 一起使用,以免在同一区域中放置太多对象。因此,如果您很好地猜测数据的最大值为 +/- 500,您可能希望使用 tanh(x / 1000) 作为映射,其中 x 是您的对象的值 它甚至可能有意义减去您的从 x 中猜测平均值,得到 tanh((x - mean) / max)。

于 2010-04-16T14:47:57.957 回答
5

根据我对 Kohonen SOM 的了解,它们的具体标准化并不重要。

嗯,它可能通过对学习算法参数值的特定选择,但最重要的是你的输入点的不同维度必须具有相同的大小。

想象一下,每个数据点不是具有三个 RGB 分量的像素,而是一个包含一个国家统计数据的向量,例如面积、人口……。对于学习部分的收敛来说,所有这些数字都属于相同的量级。

因此,如果您不知道确切的范围并不重要,您只需大致了解数据的特征幅度即可。

对于重量和尺寸,我敢肯定,如果您将它们分别除以 200 公斤和 3 米,您的所有数据点都将落在]0 1] 区间内。你甚至可以使用 50 公斤和 1 米,重要的是所有坐标都是 1 阶。

最后,您可以考虑在数据上运行一些线性分析工具(例如 POD),这将自动为您提供一种标准化数据的方法以及用于初始化地图的子空间。

希望这可以帮助。

于 2010-04-16T09:16:12.490 回答