使用随机分布初始化自组织映射和使用网络的第一个输入进行初始化有什么不同吗?
Are there any difference initializing Self Organizing Map with random distribution and initialize using the first input to the network?
当使用随机分布初始化 SOM 时,网络可能会正确收敛,但当使用输入进行初始化时,网络可能不会正确收敛。为什么?
糟糕的权重初始化会导致神经元纠缠,并成为拓扑映射的问题。问题是当两个本应相距很远的神经元最终代表同一组输入数据时。
使用您的第一个输入作为初始化可能会导致此问题。然而,一个相对容易的检查是使用 Sammon 映射将聚类节点的维度减少为彼此之间距离的二维表示。这可以可视化为具有连接相邻对的线的节点。然后可以从自身折叠的 Sammon 地图中辨别出不稳定的学习过程。
Sammon Map
Sammon Map with folds
这并不意味着用输入数据初始化权重是个坏主意,但是我建议使用随机输入数据作为初始化,并使用 numpy.random.seed() 之类的东西,因为使用输入数据可以加快学习过程。
当使用随机分布初始化 SOM 时,网络可能会正确收敛,但当使用输入进行初始化时,网络可能不会正确收敛。为什么?
糟糕的权重初始化会导致神经元纠缠,并成为拓扑映射的问题。问题是当两个本应相距很远的神经元最终代表同一组输入数据时。
使用您的第一个输入作为初始化可能会导致此问题。然而,一个相对容易的检查是使用 Sammon 映射将聚类节点的维度减少为彼此之间距离的二维表示。这可以可视化为具有连接相邻对的线的节点。然后可以从自身折叠的 Sammon 地图中辨别出不稳定的学习过程。
Sammon Map
Sammon Map with folds
这并不意味着用输入数据初始化权重是个坏主意,但是我建议使用随机输入数据作为初始化,并使用 numpy.random.seed() 之类的东西,因为使用输入数据可以加快学习过程。