【原】浅谈自组织映射算法(SOM)

浅谈自组织映射算法(SOM)

0. 写在最最前

自组织映射算法(SOM)或许对大家来说比较陌生,实际上,她早在1981年就被提出 [1] ,是人工神经网络(ANN)大家族的一员,与自适应共振理论(ART)、认知机网络(很遗憾,这个词仅在百度百科中出现,没有搜索到其他相关资料,疑为神经认知机误写)成兄弟关系。
在笔者研究SOM之前,曾经用ART2实现过聚类(参考github/ART2py/python3),然而效果并不理想,从而转而研究SOM。事实上,SOM效果仅仅是一般,并不比现有的其他网络效果理想。尽管如此,SOM作为有意义的尝试,同样值得我们学习。
欢迎转载,转载需表明出处。遵从知识共享协议。如有错误,欢迎指正。

1. 基本概念和流程 [2]

SOM神经网络采用的算法称为Kohonen算法,它的基本思想是:网络输出层的各神经元通过竞争来获得对输入层的响应机会,最后只有一个神经元获胜。获胜的神经元对它临近的神经元的影响由近及远,由兴奋逐渐转为抑制,那些与获胜神经元有关的各连接权朝着有利于它竞争的方向转变。

SOM网络的典型拓扑结构,图侵删

SOM网络的算法如下:
1. 初始化
对输出层各权向量赋予较小的随机数并进行归一化处理,得到 wj^ ,
j=1,2,3...m ,建立初始优胜邻域 Nj(0)
和学习率 α 初值。m为输出层神经元数目。
2. 接受输入
从训练集中随机取一输入模式并进行归一化处理,得到 Xp^p=1,2,...n ,n为输入层神经元数目。
3. 寻找获胜节点
计算的点积,从中找到点积最大的获胜节点*j。如果输入模式未经归一化,应按式

dj=||X^Wj^||=mj=1[XWj^]2

计算欧式距离,从中找出距离最小的获胜节点
4. 定义优胜邻域
j 为中心确定t时刻的权值调整域,一般初始邻域 Nj(0) 较大,训练过程中 Nj(t) 随训练时间收缩。
5. 调整权值
对优胜邻域)(*tNj内的所有节点调整权值 Nj(t)
wij(t+1)=wij(t)+α(t,N)[xpiwi,j(t)i1,2,...njNj(t)
式中 wij(t) 为神经元i从0到n在j时刻的权值;
6. 结束判定
当学习率 α(t)αmin 时,结束训练;不满足结束条件时,转到步骤2继续。

SOM
SOM流程图,图侵删

2. 优势和不足

2.1 优点:

  1. 自适应性。SOM属于无监督网络,所以不区分训练集和测试集。
  2. 拓扑保形特性 [4] 。通过神经元之间的竞争实现大脑神经系统中的“近兴奋远抑制”功能,并具有把高维输入映射到低维的能力。

2.2 局限 [2,3]

  1. 网络训练时,有些神经元始终不能获胜,成为“死神经元”。
  2. 和ART网络不一样,SOM网络在没有经过完整的重新学习之前,不能加入新的类别。
  3. 当输入模式较少时,分类结果依赖于模式输入的先后次序。

Kohonen已经证明:在学习结束时.每个权系数向量wj都近似落入到由神经元j所对应的类别的输入模式空间的中心,可以认为权系数向量wj形成了这个输入模式空间的概率结构。所以,权系数向量Wj可作为这个输入模式的最优参考向量。

3.代码

  1. matlab工具使用 参考 http://blog.sina.com.cn/s/blog_7671b3eb0100y4kl.html
  2. python工具包 参考pySOM https://gitee.com/hoops/pySOM
    (为什么是这个网址呢?因为这个是我写的,哈哈~~)

参考文献

[1] 百度百科 https://baike.baidu.com/item/SOM%e7%ae%97%e6%b3%95/19453654 2017-12-9
[2] CSDN http://blog.csdn.net/u011308691/article/details/19175675 2017-12-9
[3] CSDN http://blog.csdn.net/wj176623/article/details/52526617 2017-12-9
[4] 百度百科 https://baike.baidu.com/item/%e8%87%aa%e7%bb%84%e7%bb%87%e7%89%b9%e5%be%81%e6%98%a0%e5%b0%84 2017-12-9

你可能感兴趣的:(python,神经网络,神经网络,算法)