自组织神经网络又称为自组织竞争神经网络,特别适合于解决模式分类和识别方面的应用问题。该网络模型属于前向神经网络模型,采用无监督学习算法,其工作的基本思想是让竞争层的各个神经元通过竞争与输入模式进行匹配,最后仅有一个神经元成为竞争的胜利者,这一获胜神经元的输出就代表对输入模式的分类。
常用的自组织竞争神经网络有自适应共振理论(ART)网络,自组织特征映射(SOM)网络,对传(CP)网络和协同神经网络(SNN)等。
自组织特征映射网络的学习算法
Kohonen自组织特征映射算法。能够自动找出输入数据之间的类似度,将相似的输入在网络上就近配置,因此是一种可以构成对输入数据有选择地给予反应的网络。其学习算法的步骤如下:
- 网络初始化 用随机数设定输入层和映射层之间的权值的初始值
- 输入向量的输入 把输入向量 (x = (x_1, x_2, cdots, x_n)^T) 输入给输入层
- 计算映射层的权值向量和输入向量的距离 在映射层,计算各神经元的权值向量和输入向量的欧氏距离。这里,映射层的第j个神经元和输入向量的距离为:$$d = sqrt{sum^n_{i=1}(x_i - w_{ij})^2}$$ 其中,(w_{ij}) 为输入层的i神经元和映射层的j神经元之间的权值。
- 选择权值向量的距离最小的神经元 计算并选择使输入向量和权值向量的距离最小的神经元,如(d_j) 为最小,把其称为胜出神经元,并记作(j^*) 并给出其邻接神经元集合。
- 权值的学习 胜出神经元和位于其临界神经元的权值,以下式更新$$Delta w_{ij} = eta h(j, j^*)(x_i - w_{ij})$$ 其中 (eta) 是一个大于0小于1的常数。 (h(j,j^*) = exp(-frac{vert j - j^* vert^2}{sigma^2})) 其中 (sigma^2) 会随着学习的进行而减小,因此(h(j,j^*)) 也会随着学习的进行而慢慢变窄。 换言之,随着学习的进行,从粗调会过度到微调。
- 是否到达预先设定的要求 如达到要求,则算法结束,否则返回2 进行下一轮的学习。
可见,胜出神经元和其附近的神经元全部接近当时的输入向量。学习初期,根据邻域函数(h(j,j^*)) 在附近有很多神经元,形成粗略的映射。随着学习的进行,其邻域函数变窄,胜出神经元附近的神经元数变少,因此,接着进行局部微调,空间分辨率提高。
自组织竞争神经网络算法能够进行有效的自适应分类,但它仍然存在一些问题。第一个问题就是学习速度的选择使其不得不在学习速度和最终权值向量的稳定性之间进行折衷。第二个问题是有时一个神经元的初始权值向量离输入向量太远以至于它从未在竞争中获胜,因而也从未得到学习,这就形成毫无用处的“死”神经元。