本站原创文章,转载请说明来自《老饼讲解-BP神经网络》www.bbbdata.com
SOM神经网络全称为自组织竞争神经网络(Self-organizing Feature Map)
它是Kohonen在1981年提出的一种用于聚类的神经网络,
SOM神经网络是神经网络家族中经典、重要且广泛应用的一员
本文主要初步介绍SOM神经网络的思想,以便快速了解SOM是个什么样的算法
本节先简单回顾Kohonen规则,并描述性讲述SOM神经网络是什么
kohonen规则回顾
kohonen规则进行聚类的方法如下:
先随机初始化k个聚类中心点,然后每次选出一个样本,
将离它最近的聚类点往它移动,使该聚类点更靠近它,如此反复m次
更新法则如下:
其中
:离样本最近的聚类中心点
: 学习率
kohonen规则虽然简单,然而它却是行之有效的
SOM神经网络
SOM神经网络与Kohonen规则一样,主要用于解决聚类问题
它是Kohonen规则聚类的改进
SOM神经网络的更新规则
SOM在更新离样本最近的聚类中心点P的的时候,
会把P的邻近聚类中心点也一起更新
更细节的,有以下三点:
1、更新邻近聚类点
更新样本最近点P的同时,P的邻近聚类点也一起更新
(P的学习率要比邻近聚类点更大一些)
2、增加学习率的收缩机制
随着更新步数,学习率越来越小
3、邻近距离收缩机制
随着更新步数,邻近距离阈值越来越小
渐渐的,就只更新目标点及其邻边聚类点
关于与邻近聚类点与聚类点间距离
请注意,初学者很容易误会,
以为SOM训练时所用的邻近聚类点就是目标聚类点附近的聚类点,
其实不是,SOM训练时使用的“邻近聚类点”有自己的定义
关于SOM是怎么定义邻近聚类点的,详看下文
SOM神经网络对样本的判别
SOM模型在对样本进行判别时,
只需要判断样本离哪个聚类中心点近,就判为哪个聚类点
本节讲述SOM神经网络更新时所指的邻近聚类点到底是怎么一回事
SOM聚类点之间的距离定义
SOM是先引入一个拓扑结构,
把所有聚类点连结在一起,然后籍此来定义距离
拓扑结构
拓扑结构可以是一维的,二维的,三维的,等等,最常用是二维
例如最常用的二维六边形拓扑结构:
距离的定义
在SOM中,两点之间的距离,
是指在引入的拓扑结构中,这两点之间的最小边数
邻近聚类点
SOM每次更新会把邻近聚类点一起更新,那么,什么是邻近聚类点呢?
邻近聚类点具体定义如下
点P的邻近聚类点是指与P的最小连结边数小于某个阈值的聚类点
举例如下
当邻域距离阈值为1时,点P的邻近聚类点,是与点P直接连接的点
当邻域距离阈值为2时,则是到达点P不超过2条边的聚类点
当邻域距离阈值为k时,就是指经过m(m<=k)条边可达点P的聚类点
所以,
SOM中邻近聚类点并不是按聚类点之间的实际距离来区分
而是按拓扑结构中的距离来区别
笔者语
本文我们先大概摸清SOM神经网络是什么,
对于训练的具体方法我们留在后面讲述
它的思路其实并不复杂,
只是Kohonen的基础上,引入了一个拓扑结构来定义邻域
虽然SOM比起纯粹的Kohonen规则改动并不大,
但在代码编写上,却要复杂很多,
因为SOM要初始化拓扑结构,获得点与点之间的距离矩阵
如果不借助已有的函数,这部分在编程上要花费较多代码
在接下来的文章,
我们把SOM的代码按matlab内部逻辑实现后,
我们将更清晰SOM算法的具体细节与算法流程
End