neural-network - 自组织映射

标签 neural-network artificial-intelligence self-organizing-maps

我有一个关于自组织映射的问题:

但首先,这是我实现一个的方法:

som 神经元存储在一个基本数组中。每个神经元由一个向量(输入神经元大小的另一个数组)组成, double 值被初始化为一个随机值。

据我对算法的理解,这实际上是我实现它所需要的全部内容。

因此,对于训练,我随机选择一个训练数据样本,并使用样本值和神经元权重的欧几里德距离计算 BMU。

然后我根据邻域函数和学习率更新它的权重和它范围内的所有其他神经元。

然后,我降低邻域函数和学习率。

这一直进行到固定数量的迭代。

我现在的问题是:训练后如何确定聚类?到目前为止,我的方法是提供一个新的输入向量并计算它与 BMU 之间的最小欧几里得距离。但这对我来说似乎有点天真。我确定我错过了什么。

最佳答案

没有单一的正确方法可以做到这一点。正如您所指出的,找到 BMU 是其中之一,如果您只想找到最相似的集群,也是唯一有意义的方法。

如果您想重建输入向量,返回 BMU 原型(prototype)也可以,但可能不是很精确(它等同于最近邻规则或 1NN)。然后你需要在神经元之间进行插值以找到更好的重建。这可以通过按与它们到输入向量的距离成反比的方式对每个神经元进行加权,然后计算加权平均值(这相当于加权 KNN)来完成。您还可以将此插值仅限于 BMU 的邻居,这将工作得更快并且可能会提供更好的结果(这将加权 5NN)。此处使用了此技术:The Continuous Interpolating Self-organizing Map .

您可以在此处查看和试验这些不同的选项:http://www.inf.ufrgs.br/~rcpinto/itm/ (不是 SOM,而是近亲)。单击“应用”以使用重建的向量对曲线进行回归,然后选中“绘制回归”并尝试不同的选项。

顺便说一句,您对实现的描述是正确的。

关于neural-network - 自组织映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36197101/

相关文章:

matlab - MATLAB 中的自组织映射 (SOM) 问题

python - Keras 或 Tensorflow 函数绘制神经网络结构的 3D 图?

artificial-intelligence - 大脑建模

java - 编写可永久修改的字段或类(Java、ASM),无需数据库/文件

python - 神经网络的人工生命

java - 修复 Tic-Tac-Toe Minimax ai

r - 在 R 中使用 frbs.learn() 训练 ANFIS 模型时出错

python - 如何选择类别概率的最佳阈值?

r - 如何将新数据映射/绘制到训练有素的 SOM map 上?

machine-learning - 为什么 SOM 中的学习率会随着迭代而变化