自组织映射神经网络(Self-Organizing MapSOM)是无监督学习方法中一类重要方法,可以用作聚类、高维可视化、数据压缩、特征提取等多种用途。

问题1 自组织映射神经网络是如何工作的?它与K均值算法有何区别?

自组织映射神经网络本质上是一个两层的神经网络,包含输入层和输出层(竞争层)。输入层模拟感知外界输入信息的视网膜,输出层模拟做出响应的大脑皮层。输出层中神经元的个数通常是聚类的个数,代表每一个需要聚成的类。训练时采用“竞争学习的方式,每个输入的样例在输出层中找到一个和它最匹配的节点,称为激活节点,也叫winning neuron;紧接着用随机梯度下降法更新激活节点的参数;同时,和激活节点临近的点也根据它们距离激活节点的远近而适当地更新参数。这种竞争可以通过神经元之间的横向抑制连接(负反馈路径)来实现。
自组织映射神经网络的自组织学习过程可以归纳为以下几个子过程:初始化、竞争、合作、适应、迭代
自组织映射神经网络与K均值算法的区别如下:
1K均值算法需要事先定下类的个数,也就是K的值。而自组织映射神经网络则不用,隐藏层中的某些节点可以没有任何输入数据属于它,因此聚类结果的实际簇数可能会小于神经元的个数。而K均值算法受K值设定的影响要更大一些。
2K均值算法为每个输入数据找到一个最相似的类后,只更新这个类的参数;自组织映射神经网络则会更新临近的节点。所以,K均值算法受noise data的影响比较大,而自组织映射神经网络的准确性可能会比K均值算法低(因为也更新了临近节点)。
3)相比较而言,自组织映射神经网络的可视化比较好,而且具有优雅的拓扑关系图。

问题2 怎样设计自组织映射神经网络并设定网络训练参数?

设定输出层神经元的数量
输出层神经元的数量和训练集样本的类别数相关。若不清楚类别数,则尽可能地设定较多的节点数,以便较好地映射样本的拓扑结构,如果分类过细再酌情减少输出节点。这样可能会带来少量从未更新过权值的 “死节点,但一般可通过重新初始化权值来解决。
设计输出层节点的排列输出层的节点排列成哪种形式取决于实际应用的需要,排列形式应尽量直观地反映出实际问题的物理意义。例如,对于一般的分类问题,一个输出节点能代表一个模式类,用一维线阵既结构简单又意义明确;对于颜色空间或者旅行路径类的问题,二维平面则比较直观。
初始化权值
可以随机初始化,但尽量使权值的初始位置与输入样本的大概分布区域充分重合,避免出现大量的初始“死节点。一种简单易行的方法是从训练集中随机抽取m个输入样本作为初始权值。
设计拓扑领域
拓扑领域的设计原则是使领域不断缩小,这样输出平面上相邻神经元对应的权向量之间既有区别又有相当的相似性,从而保证当获胜节点对某一类模式产生最大响应时,其领域节点也能产生较大响应。领域的形状可以是正方形、六边形或者菱形。优势领域的大小用领域的半径表示,通常凭借经验来选择。
设计学习率
学习率是一个递减的函数,可以结合拓扑邻域的更新一起考虑,也可分开考虑。在训练开始时,学习率可以选取较大的值,之后以较快的速度下降,这样有利于很快地捕捉到输入向量的大致结构,然后学习率在较小的值上缓降至0值,这样可以精细地调整权值使之符合输入空间的样本分布结构。
Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐