竞争型神经网络是基于无监督学习方法(unsupervised learning)的神经网络的一种重要类型,它经常作为基本的网络形式,构成其他一些具有组织能力的网络,如自组织映射网络、自适应共振理论网络、学习向量量化网络等。
生物神经网络存在一种侧抑制现象,即一个神经细胞兴奋后,通过它的分支会对周围其他神经细胞产生抑制,这种抑制使神经细胞之间出现竞争:在开始阶段,各神经元对系统的输入具有相同的响应机会,但产生的兴奋程度不同,其中兴奋最强的一个神经细胞对周围神经细胞的抑制作用最强,从而使其他神经元的兴奋程度得到最大程度的抑制,而兴奋程度最强的神经细胞却“战胜”了其他神经元的抑制作用脱颖而出,成为竞争的胜利者,并因为获得兴奋的程度而进一步加强,正所谓“胜者为王,败者为寇”。竞争型神经网络在学习算法上,模拟了生物神经网络中神经元之间的兴奋、抑制与竞争的机制,进行网络的学习与训练。
采用nesc可以在MATLAB中创建竞争型神经网络,其权值的初始化函数为midpoint,阈值的初始化函数为initcon。
竞争神经网络的学习:
1.Kohonen权值学习规则
竞争型神经网络按照Kohonen学习规则对获胜神经元的权值进行调整。假设第i个神经元获胜,则输入权值向量的第i行元素(即获胜神经元的各连接权)按下式进行调整:
iW(k)= iW(k-1)+α*[p(k)-iW(k-1)]
而其他神经元的权值不变。
Kohonen学习规则通过输入向量进行神经元权值的调整,因此在模式识别的应用中是很有用的。通过学习,那些最靠近输入向量的神经元权值向量得到修正,使之更靠近输入向量,其结果是获胜的神经元在下一次获胜的输入向量出现时,获胜的可能性会更大; 而对于那些与输入向量相差很远的神经元权值向量,获胜的可能性变得很小。这样,当经过越来越多的训练样本学习后,每一个网络层中的神经元权值向量很快被调整为最接近某一类输入向量的值。最终的结果是:如果神经元的数量足够多,则具有相似输入向量的各类模式作为输入向量时,其对应神经元输出为1;而对于其他模式的输入向量,其对应的神经元输出为0。所以,竞争型神经网络具有对输入向量进行学习分类的能力。
在MATLAB工具箱中,learnk函数可以实现Kohonen学习规则。
2.阈值学习规则
竞争型神经网络的一个局限性是:某些神经元可能永远也排不上用场,换句话说,某些神经元的权值向量从一开始就远离所有的输入向量,从而使得该神经元不管进行多长的训练也不会赢得竞争。这些神经元称为“死神经元”,它们实现不了任何有用的函数映射。
为避免这一现象的发生,对于那些很少获胜(甚至从未获胜)的神经元赋以较大的阈值,而对于那些经常获胜的神经元赋以较小的阈值。正的阈值与距离的负值增加,使获胜很少的神经元竞争层传输函数的输入就像获胜的神经元一样。这一过程就像人们“同情”弱者一样,表现出一个人的“良心”。
这一过程的实现需要用到神经元输出向量的平均值,它等价于每个神经元输出为1 的百分比,显然,经常获胜的神经元,其输出为1的百分比要大。
在MATLAB工具箱中,learncon函数用于进行阈值的修正。
对于学习函数learncon进行阈值修正时,神经元输出向量的平均值越大,其“良心”值越大,所以凭良心获得的阈值就越小,而让那些不经常获胜的神经元阈值逐渐变大。其算法如下:
c(k)=(1-lr)*c(k-1) + lr*a(k-1)
b(k)=exp[1-log(c,k)]-b(k-1)
式中:c为“良心”值;a为神经元输出的平均值;lr为学习率。
一般讲learncon的学习率设置成默认值或比learnk的学习率小的值,使其在运行过程中能够较精确地计算神经元的输出平均值。
结果那些不经常产生响应的神经元的阈值相对于那些经常产生响应的神经元,其阈值不断增大,使其产生响应的输入空间也逐渐增大,即对更多的输入向量产生响应,最终各神经元对输入向量产生响应的数目大致相等。
这样做有两点好处:
其一,如果某个神经元因为远离所有的输入向量而始终不能在竞争中获胜,则其阈值会变得越来越大,使其终究可以获胜。当这一情况出现后,它将逐渐向输入向量的某一类聚集,一旦神经元的权值靠近输入向量的某一类模式,该神经元将经常获胜,其阈值将逐渐减小到0,这样就解决了“死神经元”的问题。
其二,学习函数learncon强迫每个神经元对每个输入向量的分类百分比大致相同,所以如果输入空间的某个区域比另外一个区域聚集了更多的输入向量,那么输入向量密度大的区域将吸引更多的神经元,从而获得更细的分类。