天天看点

竞争神经网络

竞争神经网络

               竞争型神经网络是基于无监督学习(Unsupervised learning)方法的神经网络的一种重要类型,它经常作为基本的网络形式,构成其它一些具有自组织能力的网络,如自组织映射网络、自适应共振理论网络、学习向量量化网络等。

       生物神经网络存在一种侧抑制的现象,即一个神经细胞兴奋后,通过它的分支会对周围其他神经细脑产生抑制,这种抑制使神经细胞之间出现竞争:在开始阶段,各神经元对相同的输入具有相同的响应机会,但产生的兴奋程度不同,其中兴奋最强的一个神经细胞对周围神经细胞的抑制作用也最强,从而使其它神经元的兴奋得到最大程度的抑制,而兴奋最强的神经细胞却“战胜”了其它神经元的抑制作用脱颖而出,成为竞争的胜利者,并因为获胜其兴奋的程度得到进一步加强,正所谓“成者为王,败者为寇”。

   1、竞争型神经网路模型:      

竞争神经网络

关于输入层到竞争层有几种不同的计算方法:         1、计算输入向量和权值距离的负数,然后加上一个阈值,结果大的那个神经元获胜,获胜为1,其他为0,然后调节获胜神经元对应的阈值。以下为步骤:

竞争神经网络

    可以看出竞争型神经网络为单层网络。||ndist|| 的输入为输入向量p和输入权值向量IW,其输出为S11的列向量,列向量中的每个元素为输入向量p和输入权值向量IW距离的负数(negative),在神经网络工具箱中以距离函数negdist进行计算。 

       n1为竞争层传输函数的输入,其值为输入向量p和输入权值向量IW距离的负数与阈值b1之和。如果所有的阈值向量为0,则当输入向量p和输入权值向量IW相等时,n1为最大值0。

       对于n1中最大的元素,竞争层传输函数输出1(即竞争的“获胜者”输出为1),而其它元素均输出0。如果所有的阈值向量为0,则当神经元的权值向量最接近输入向量时,它在n1各元素中的负值最小,而值最大,从而赢得竞争,对应的输出为1。 

        2、下面的Kohonen学习规则里,让输入向量与阈值向量相乘,比较输出神经元的大小取最大值,为获胜神经元,置为1,其他的为0。

3、《43个案例分析》里的学习方法暂时不采用。

        2、竞争型神经网络的学习

        (1)Kohonen权值学习规则:

竞争神经网络

        另外一种描述:

  竞争型神经网络按Kohonen学习规则对获胜神经元的权值进行调整。假若第i个神经元获胜,则输入权值向量的第i行元素(即获胜神经元的各连接权)按下式进行调整:

竞争神经网络

而其它神经元的权值不变。

         Kohonen学习规则通过输入向量进行神经元权值的调整,因此在模式识别的应用中是很有用的。通过学习,那些最靠近输入向量的神经元权值向量被修正,使之更靠近,其结果是获胜的神经元在下一次相似的输入向量出现时,获胜的可能性会更大;而对于那些相差很远的输入向量,获胜的可能性将变得很小。

这样,当经过越来越多的训练样本学习后,每一个网络层中的神经元的权值向量很快被调整为最接近某一类输入向量的值。最终的结果是,如果神经元的数量足够多,则具有相似输入向量的各类模式作为输入向量时,其对应的神经元输出为1;而对于其它模式的输入向量,其对应的神经元输出为0。所以,竞争型网络具有对输入向量进行学习分类的能力。

    (2)阈值学习规则

   

竞争神经网络
竞争神经网络

说明:阈值学习规则也与上面不同的输入层到竞争层两种不同的计算方法相对应。那个有阈值的计算方法刚好包含了阈值学习规则。

3、竞争型神经网络存在的问题 

  对于模式样本本身具有较明显的分类特征,竞争型神经网络可以对其进行正确的分类,网络对同一类或相似的输入模式具有较稳定的输出响应。但也存在一些问题:

        (1)当学习模式样本本身杂乱无章,没有明显的分类特征时,网络对输入模式的响应呈现振荡的现象,即对同一类输入模式的响应可能激活不同的输出神经元,从而不能实现正确的分类。当各类模式的特征相近时,也会出现同样的状况。

        (2)在权值和阈值的调整过程中,学习率的选择在学习速率和稳定性之间存在矛盾,而不象前面我们介绍的其它学习算法,可以在刚开始时采用较大的学习率,而在权值和阈值趋于稳定时,采用较小的学习率。而竞争型神经网络当增加新的学习样本时,权值和阈值可能需要比前一次更大的调整。 

(3)网络的分类性能与权值和阈值的初始值、学习率、训练样本的顺序、训练时间的长短(训练次数)等都有关系,而又没有有效的方法对各种因素的影响加以评判。

      (4)在MATLAB神经网络工具箱中,以trainr函数进行竞争型神经网络的训练,用户只能限定训练的最长时间或训练的最大次数,以此终止训练,但终止训练时网络的分类性能究竟如何,没有明确的指标进行评判。

%% Matlab神经网络43个案例分析

% 单层竞争神经网络的数据分类—患者癌症发病预测

%% 清空环境变量
clc
clear

%% 录入输入数据
% 载入数据并将数据分成训练和预测两类  60组样本,每组样本有114个数据。
load gene.mat;
data=gene;              %60*114
P=data(1:40,:);
T=data(41:60,:);

% 转置后符合神经网络的输入格式 
P=P';           %114*40    矩阵相乘放在后边,114与权值相乘。
T=T';           %114*20
% 取输入元素的最大值和最小值Q:
Q=minmax(P);     %求每一行的最小值和最大值。实际求的是,114个元素,在40个样本中的最大值和最小值。

%% 网络建立和训练
% 利用newc( )命令建立竞争网络:2代表竞争层的神经元个数,也就是要分类的个数。0.1代表学习速率。
net=newc(Q,2,0.1)

% 初始化网络及设定网络参数:
net=init(net);
net.trainparam.epochs=20;
% 训练网络:
net=train(net,P);


%% 网络的效果验证

% 将原数据回带,测试网络效果:
a=sim(net,P);
ac=vec2ind(a)

% 这里使用了变换函数vec2ind(),用于将单值向量组变换成下标向量。其调用的格式为:
%  ind=vec2ind(vec)
% 其中,
% vec:为m行n列的向量矩阵x,x中的每个列向量i,除包含一个1外,其余元素均为0。
% ind:为n个元素值为1所在的行下标值构成的一个行向量。



%% 网络作分类的预测
% 下面将后20个数据带入神经网络模型中,观察网络输出:
% sim( )来做网络仿真
Y=sim(net,T)
yc=vec2ind(Y)
           

继续阅读