一、网络层结构
- 输入层
- 输出层(竞争层),神经元个数通常是聚类的个数。
输出层节点是有拓扑关系的:
- “一维线阵”
- “二维平面阵”
- “三维栅格阵”
二、学习过程
训练时采用“竞争学习”的方式,每个输入样例在输出层找到一个和它最匹配的节点,称为激活节点;紧接着用随机梯度下降法更新激活节点的参数;同时,和激活节点临近的点也根据它们距离激活节点的远近而适当地更新参数。
- 初始化:所有连接权重都用很小的随机值进行初始化
- 竞争:寻找胜利者
- 合作:更新获胜神经元节点及其临近的节点,更新度的计算。
- 适应:适当调整相关兴奋神经元的连接权重,使得获胜神经元对相似输入模式的后续应用响应增强。
- 迭代
三、设计自组织映射神经网络并设定网络训练参数
- 设定输出层神经元的数量:输出层神经元的数量和训练集样本的类别数相关。若不清楚类别数,尽可能地设定较多的节点数,以便较好地映射样本的拓扑结构,如果分类过细再酌情减少输出节点。这样可能会带来少量未更新过权值的“死节点”,但一般可通过重新初始化权值来解决。
- 设计输出层节点的排列:取决于实际应用,例如对于一般的分类问题,一个输出节点能代表一个模式类,用一维线阵既结构简单又意义明确;对于颜色空间或者旅行路径类的问题,二维平面比较直观。
- 随机初始化:尽量使权值的初始位置与输入样本的大概分布区域充分重合,避免出现大量的初始“死节点”。一种简单易行的方法是从训练集中随机抽取 m 个输入样本作为初始权值。
- 设计拓扑领域:设计原则是使领域不断缩小,这样输出平面上相邻神经元对应的权向量之间既有区别又有相当的相似性,从而保证当获胜节点对某一类模式产生最大响应时,其领域节点也能产生较大反应。领域形状可以是正方形、六边形等。
- 设计学习率:
四、与 K 均值算法的比较
- K 均值算法需要事先定下类的个数。而自组织映射神经网络则不用,隐藏层的某些节点可以没有任何输入数据属于它,因此聚类结果实际簇数可能会比小于神经元的个数。而 K 均值算法受 K 值设定的影响要更大一些。
- K 均值算法为每个输入数据找到一个最相似的类后,只更新这个类的参数;自组织映射神经网络则会更新临近的节点。所以,K 均值算法受 noise data 的影响较大,而自组织映射神经网络的准确性可能会比 K 均值算法低(因为也更新了临近节点)
- 自组织映射神经网络可视化比较好,而且具有优雅的拓扑关系图。