请问有人能提供一些关于如何正确地将自组织映射与多层感知器结合的信息吗?
我最近阅读了一些关于这种技术的文章,与常规的多层感知器相比,它在预测任务中的表现要好得多。因此,我想使用SOM作为前端,通过聚类输入数据来进行降维,并将结果传递给多层感知器后端。
我目前的实现想法是用几个训练集来训练SOM并确定聚类。之后,我将初始化多层感知器,其输入单元数量与SOM的聚类数量相同。下一步将是使用SOM的输出(哪个值?…最佳匹配单元的权重?)作为网络的输入(与输入单元匹配的聚类的SOM输出,其他输入单元为零?)。
回答:
没有单一的方法来做到这一点。让我列出一些可能性:
- 你描述的方法。但这样的话,你的多层感知器将需要K*D个输入,其中K是聚类的数量,D是输入维度。没有实现降维。
- 类似于你的想法,但不是使用权重,而是对最佳匹配单元发送1,对其余聚类发送0。然后你的多层感知器将需要K个输入。
- 与上述相同,但不是发送1或0,而是发送输入向量到每个聚类的距离。
- 与上述相同,但不是距离,而是计算每个聚类的高斯激活。
- 由于SOM保留拓扑结构,只发送最佳匹配单元的二维坐标(可能在0到1之间标准化)。然后你的多层感知器只需要2个输入,你就实现了真正的极端降维。
你可以在这里阅读这些想法以及更多内容:SOM的主要时间扩展概述。这不是关于将SOM的输出馈送到多层感知器,而是将SOM馈送到自身。但你将能够理解在尝试从SOM产生一些输出时各种可能的方法。