neural-network - 混合 SOM(带 MLP)

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

有人可以提供一些关于如何将自组织 map 与多层感知器正确结合的信息吗?

我最近阅读了一些关于这项技术与常规 MLP 相比的文章,它在预测任务中的表现要好得多。因此,我想通过对输入数据进行聚类并将结果传递给 MLP 后端,将 SOM 用作降维的前端。

我目前实现它的想法是用几个训练集训练 SOM 并确定集群。之后,我使用与 SOM 集群一样多的输入单元初始化 MLP。下一步是使用 SOM 的输出(哪个值?...BMU 的权重?)作为网络输入(SOM 的集群匹配输入单元的输出和任何其他输入单元的零值?)来训练 MLP。

最佳答案

没有单一的方法可以做到这一点。让我列出一些可能性:

  • 你描述的那个。但是,您的 MLP 将需要有 K*D 个输入,其中 K 是簇数,D 是输入维度。没有降维。
  • 与您的想法类似,但不使用权重,只需为 BMU 发送 1,为其余集群发送 0。那么您的 MLP 将需要 K 个输入。
  • 与上面相同,但不是 1 或 0,而是发送从输入向量到每个聚类的距离。
  • 与上述相同,但不是距离,而是为每个集群计算高斯激活。
  • 由于 SOM 保留了拓扑结构,因此仅发送 BMU 的二维坐标(可能在 0 和 1 之间归一化)。那么您的 MLP 将只需要 2 个输入,您就可以实现真正的极端降维。

您可以在此处阅读这些想法以及更多内容:Principal temporal extensions of SOM: Overview .它不是将 SOM 的输出提供给 MLP,而是将 SOM 提供给自身。但是在尝试从 SOM 生成一些输出时,您将能够理解各种可能性。

关于neural-network - 混合 SOM(带 MLP),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36434218/

相关文章:

json - 在 jupyter lab 上使用 pyvis 在网络节点上单击事件

java - 神经网络输入建议

machine-learning - WEKA 中潜在语义分析的可扩展性

algorithm - 自组织映射中神经元的位置是否取决于它的权重?

machine-learning - Encog 中的循环自组织映射用于带上下文的无监督聚类

neural-network - 神经网络的阈值

python - PyTorch - 如何设置神经元的激活规则以提高神经网络的效率?

python - 如何在神经网络中使用 Softmax 激活函数

c - MiniMax 算法 tic-tac-toe in C 解释

matlab - 查找输入模式的簇