4

我查看了很多 SOM 的理论示例,但有一点对我来说不是很清楚:节点的位置是否取决于它们的权重?例如,权重较大的节点会在地图的一侧,而权重较小的节点会在地图上更远吗?

4

1 回答 1

7

不。在 SOM(又名 Kohonen 地图)中,权重函数应用于您的数据,而不是“神经元”。

权重在地图构建(训练)期间使用,即在每次迭代时以及在每次迭代中为每个晶格单元计算。换句话说,对于包括地图构造的每次迭代,权重函数用于缩放这些点在确定单元格的位置/位置中的贡献。

Kohonen 地图中数据点的位置由地图中最靠近该数据点的晶格单元确定 - 即,构建 Kohonen 地图涉及将数据集中的每个点迭代重新分配到最接近该数据点的晶格中的单元格它。

这是一种思考方式:Kohonen Map 只是将您的数据映射到一些固定的拓扑结构或格子,在 2 维中,例如规则网格。

训练阶段(构建地图)中的每次迭代都涉及将每个数据点(如有必要)重新分配到最接近它的晶格中的最近单元格。接下来,根据(i)从先前迭代中分配给该单元格的数据点来调整单元格位置;(ii) 相邻单元格中的数据点。

(i) 和 (ii) 中数据点的值如何对单元格位置的新值做出贡献由每个数据点的权重决定,而权重又由权重函数决定。这与直觉一致——与靠近单元格的数据点相比,远离单元格的点对单元格的新值的影响应该更小。在 Kohonen Map 中,权重函数强制执行此约束。教科书的权重函数是高斯的。在 Python 中:

def gaussian(dist, t, alpha=1.0, sigma=1.0) :
    from math, import e
    return alpha * t * e**(-dist/(2*sigma*t))**2

在这个函数中,dist是数据点到单元中心的距离,t是时间(例如,地图构建过程中的每次迭代都是时钟的一个滴答声)。

所以想象一条高斯曲线,从它的中心切成两半;x 轴是 dist,y 轴代表权重——所以随着距离的增加,权重会减小。同样,随着 t 的增加,重量也会增加。这是构建 Kohonen 地图的关键要素:随着迭代次数的增加(在地图构建期间),相邻点对给定单元格的重新定位的影响越来越小。因此,时间-权重关系的意义在于,单元位置的变化率随着时间的推移而减小(每次迭代的位置变化较小),直到最终在下一次迭代中位置没有变化,这是一个收敛标准科霍宁地图。

数据点的权重与此有什么关系?好吧,在先前的迭代中,该格子的位置是由该格中的数据点和相邻格中的数据点确定的,这些点对新格的位置的贡献是根据加权函数确定的。

最后,数据点的权重实际上并不是该数据点的固有属性。一方面,它仅在地图构建期间有用,另一方面,数据点实际上没有权重值 - 在地图构建期间的每次迭代中,分配给给定单元格的数据点和相邻单元格中的那些点是用于计算给定晶格单元的新位置。该计算通过为每个数据点分配权重来考虑每个点与单元中心的距离 - 因此,该权重值仅对该迭代和该单元中心有意义,例如,在计算下一个单元中心时,相同的数据点将具有不同的权重,因为它与该单元中心的距离不同。

于 2011-05-08T10:06:56.510 回答