竞争学习神经网络-SOM

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_29027865/article/details/84392669

相似性是聚类的关键:

  1. 如何决定相似度;
  2. 如何决定聚类的类别数;
  3. 如何决定哪种分类的结果是理想的;

相似性测量:

1. 欧式距离法

两个模式向量的欧式距离越小,则两个向量越接近,因此认为这两个模式越相似。

如果对同一类内各个模式向量间的欧式距离作出规定,不允许超过某一最大值T,则最大欧式距离T就成为了一种聚类依据。

最终形成大小相似且紧密的圆形聚类

2. 余弦法

两个模式向量越接近,其夹角越小,余弦越大。当两个模式方向完全相同时,其夹角余弦为1 。如果对同一类内各个模式向量间的夹角作出规定,不允许超过某一最大角,则最大角哦就成为了一种聚类依据。

最终形成大体同向的狭长形聚类

3. 内积法

内积值越大则相似度越高

不一定会形成大体同向的狭长形聚类

竞争学习算法:

  1. 向量归一化
  2. 寻找获胜神经元
  3. 网络输出与权值调整

当外界输入不同的样本时,网络中哪个位置的神经元兴奋开始是随机的,但自组织训练后会在竞争层中形成神经元的有序排列,功能相近的神经元非常靠近,功能不同的神经元离得较远。

SOM网的拓补结构和权值调整域:

1. 拓补结构->

​ SOM网共有两层,输入层各神经元通过权向量将外界信息汇集到输出层的各神经元。

​ 其中输入层的形式和BP网相同,节点数与样本维数相等。

​ 输出层也是竞争层,神经元的排列有多种形式,如一维线阵,二维平面阵,和三维栅格阵。

​ 一维阵列SOM网的输出层只标出了相邻神经元之间的侧向连接。

​ 二维平面阵SOM网输出层的每个神经元同其周围的其他神经元侧向连接,排列成棋盘状的平面;

2. 权值调整域

SOM网的主要区别在于调整权向量与侧抑制的方式不同,只有竞争获胜神经元才能调整权向量,其他任何神经元都无权调整。

以获胜神经元为中心设定一个邻域半径,该半径圈定的范围称为优胜邻域。在som的学习过程中,优胜邻域内的所有神经元均按照其离开获胜神经元的距离远近不同程度的调整权值。优胜邻域开始定的很大,但其大小随着训练次数的增加而不断收缩,最终收缩到半径为0;

SOM的运行原理和学习方法:

1. 运行原理

som网的运行分为训练和工作两个阶段。

训练阶段中:对som网随机输入训练集中的样本,对某个特定的输入模式,输出层会有某个节点产生最大响应而获胜,开始时对哪个位置的节点你哪类输入模式会产生最大的响应是不确定的。于是每次改变输入模式的类别,进而改变二维平面的获胜节点,再对获胜节点及其优胜邻域内的所有节点所连接的权向量均向输入向量的方向做程度不同程度的调整,调整的力度根据邻域内各个节点距获胜节点的远近而逐渐衰减。

网络通过自组织的方式,用大量的训练样本调整网络的权值,最后使得输出层的各个节点成为对特定模式类敏感的神经细胞,对应的内星权向量成为各输入模式类的中心向量。当两个模式类的特征接近时,代表这两类的节点在位置上也接近。从而在输出层形成能够反映样本模式类分布情况的有序特征图。

当训练结束后,输出层各个节点与各输入模式类的特定关系就完全确定了,即可用作模式分类器。当输入一个模式时,网络输出层代表该模式类的特定神经元将产生最大的响应,从而将该神经元自动归类。如果当输入的模式不属于任何一个模式类时,SOM网只能将其归入最接近的模式类。

2. 学习算法

  1. 初始化 对输出层各权向量赋小随机数并进行归一化处理,得到W1,并建立初始优胜邻域,对学习率赋上初始值;

  2. 接受输入 从训练集中随机选取一个输入模式并进行归一化处理,得到X1;

  3. 寻找获胜节点 计算X1与W1的点积,从中选出点积最大的获胜节点J1;如果输入模式未经归一化,则可以通过计算欧式距离,来找出距离最小的获胜节点;

  4. 定义优胜邻域,N1,以J1为中心确定t时刻的权值调整域,一般初始邻域的N1较大,训练过程中N1随训练时间逐渐收缩;

  5. 调整权值 对优胜邻域N1内的所有节点调整权值:

    w(t+1) = w(t) + n(t,N)[ x^p - w(t) ].

    其中,n(t,n)是训练时间t和邻域内第j个神经元与获胜神经元j*之间的拓补距离N的函数,其中t与其成n成反比,n与其成正比;

    所以这个函数可以采用t的单调下降函数,这种随着时间单调下降的函数称为退火函数;

  6. 结束检查

    som网的训练没有BP网络中的输出误差的概念,训练何时结束是以学习率是否衰减到0或某个预定的正小数为条件,不满足则返回步骤二进行重新输入;

3. SOM网的功能特点

一就是保存映射,即能将输入空间的样本模式类有序的映射在输出层上;

二是数据压缩,指高维空间的样本在保持拓补结构不变的条件下投影到低维空间;

三是特征抽取,从特征抽取的角度看高维空间样本向低维空间的映射;

SOM网的设计

1. 输出层设计

输出层的设计涉及两个问题,一个是节点数的设计,另一个是节点排列的设计。

  1. 节点数设计:

    节点数与训练集样本中有多少模式类有关,根据节点数目的不同,可能会产生分的过粗,分的过细,还有可能出现某个节点因为距离较远而从未得到过训练,从而出现死节点的情况。因此在解决分类问题时,如果没有确切的类别数信息,则可以先设置较多的输出节点,以便较好的映射样本的拓补结构,如果分类过细,则可以减少输出节点。而死节点的问题一般可以通过重新初始化权值来得到解决。

  2. 输出层的节点排列

    输出层的节点排列成哪种形式取决于实际应用的需要,比如对于旅行路径类问题,二维平面比较直观;而对于一般的分类问题,一个输出节点就能代表一个模式类,用一维线阵意义明确且结构简单。、

2. 权值初始化问题

为了使得权向量充分分散在样本空间,SOM网的权值一般初始化为较小的随机数。

如果有这样一种情况,当样本整体上相对集中于高维空间的某个局部区域,权向量的初始位置却随机的分散于样本空间的广阔区域,训练时必然是距离整个样本群最近的权向量被不断的得到调整,并逐渐的进入到全体样本的中心位置,而其他权向量因初始位置而远离样本群进而永远得不到调整。如此的话,可能会将全部的样本聚为一类。

解决这类问题的思路是尽量使权值的初始位置与输入样本的大致分布区域充分的重合,当初始的权向量与输入模式向量整体上呈混杂状态时,会大大的提高训练的速度。

实现方法有两种:

一种是从训练的集合中随机抽出m个样本作为初始的权值,W = X^k

 其中,k是输入样本的顺序随机数,因为任何的X一定是输入空间内的某个模式类的成员,各个权向量按照上式子初始化后从训练一开始就分别接近了输入空间的各个模式类;

另一种方法是先计算出全体样本的中心向量:

X = 1/P 级数X^p

在该中心向量的基础上叠加小随机数作为权向量初始值,也可将权向量的初始位置确定在样本群中。

3. 优胜邻域的设计

优胜邻域的设计原则是使邻域不断缩小,这样输出平面上相邻神经元对应的权向量之间既有区别又有相当的相似性,从而保证当获胜节点对某一类模式产生最大响应时,其邻近节点也能产生较大的响应。

优胜邻域的大小可以用邻域半径来表示,通常有两种计算式子来进行选择:

r = C (1 - t/tm)

r = C exp(-B*t/tm)

在式子中,C为与输出层节点数m有关的正常数,B为大于1的常数,tm为预先选定的最大训练次数;

4. 学习率的设计

为了很快的捕捉到输入向量的大致结构,学习率的取值在开始时比较大,之后以较快的速度下降。然后又以较小的值上缓降至0值。

n = C(1-t/tm)

还有一种n随训练时间线性下降至0的规律:

n = C * exp(-B * t/tm)

式子中,C为0-1之间的常数,B为大于1的常数

SOM网络的优势是速度快,同时也存在着以下的局限性:

  1. 隐层神经元数目难以确定,因此隐层神经元往往未能充分利用,某些距离学习向量较远的神经元不能获胜,从而成为死节点;
  2. 聚类网络的学习速率需人为确定,学习终止往往需要人为控制,影响学习的进度;
  3. 隐层的聚类结果与初始的权值有关。

猜你喜欢

转载自blog.csdn.net/qq_29027865/article/details/84392669