关于kohonen神经网络的几个问题

时间:2013-01-02 15:28:59

标签: neural-network

我有大数据集(时间序列,大约50个参数/值)。我想使用Kohonen网络对类似的数据行进行分组。我已经阅读了一些有关Kohonen神经网络的知识,我理解Kohonen网络的想法,但是:

  1. 我不知道如何用如此多的维度实现Kohonen。我在CodeProject上找到了示例,但只有2或3维输入向量。当我有50个参数时 - 我应该在神经元中创建50个权重吗?

  2. 我不知道如何更新获胜神经元的权重(如何计算新的权重?)。

  3. 我的英语并不完美,我不明白我读到的有关Kohonen网络的所有内容,尤其是公式中变量的描述,这就是我要问的原因。

3 个答案:

答案 0 :(得分:3)

应该区分地图的维度,其通常较低(例如,在矩形网格的常见情况下为2)和参考矢量的维度,其可以任意高而没有问题。

查看http://www.psychology.mcmaster.ca/4i03/demos/competitive-demo.html以获得49维输入向量(7x7像素图像)的一个很好的例子。在这种情况下,Kohonen地图具有8个单位的一维环形式。

另请参阅http://www.demogng.de以了解各种类似Kohonen的网络的Java模拟器,包括像麦克马斯特那样的环状网络。然而,参考矢量都是二维的,但仅为了更容易显示。它们可以具有任意高维度而不会对算法进行任何更改。

答案 1 :(得分:2)

  1. 是的,你需要50个神经元。但是,这些类型的网络通常是低维度的,如本self-organizing map文章所述。我从未见过他们使用过多次输入。

  2. 您必须使用更新公式。来自同一篇文章:Wv(s + 1) = Wv(s) + Θ(u, v, s) α(s)(D(t) - Wv(s))

答案 2 :(得分:1)

  1. 是的,每个神经元需要50个输入

  2. 你基本上在神经元和目标(输入)神经元之间进行线性插值,并使用W(s + 1) = W(s) + Θ() * α(s) * (Input(t) - W(s)),Θ是你的邻域函数。

  3. 你应该更新所有神经元,而不仅仅是胜利者

    您用作邻域函数的函数取决于您的实际问题。 这种函数的一个共同特性是当i = k时它具有值1并且随着距离欧几里德距离而下降。此外,它随着时间的推移而缩小(为了本地化集群)。

    简单邻域函数包括线性插值(直到“最大距离”)或高斯函数