资源描述
自自组织竞组织竞争神争神经经网网络络Outline1.竞争神经网络 2.竞争神经网络的学习算法 3.自组织特征映射网络 4.SOM的学习算法 5.学习矢量量化网络 6.自组织竞争网络相关函数详解 7.自组织竞争神经网络应用实例 2自组织竞争神经网络1.竞争神经网络采用竞争学习的规则即可构成最简单的竞争神经网络,在此基础上,还发展了形形色色的自组织网络。“胜者为王,败者为寇”。兴奋最强的神经元“战胜”了其他神经元,在权值调制中其兴奋程度得到进一步加强,而其他神经元则保持不变。竞争神经网络通过这种竞争学习的方式获取训练样本的分布信息,每个训练样本都对应一个兴奋的核心层神经元,也就是对应一个类别,当有新样本输入时,就可以根据兴奋的神经元进行模式分类。3自组织竞争神经网络2.竞争神经网络的学习算法内星学习规则 内星模型训练的目标是使得神经元只对某些特定的输入向量产生兴奋。这一点是通过连接权值的逐步调整得到的。随机权值中有一个被激活,其权值按上式向输入样本的方向调整,会变得越来越“像”输入样本如果对内星模型输入多个样本进行训练,最终得到的网络权值趋近于各输入向量的平均值。4自组织竞争神经网络2.竞争神经网络的学习算法 Kohonen学习规则学习规则 在竞争型神经网络中,有可能某些神经元始终无法赢得竞争,其初始值偏离所有样本向量,因此无论训练多久都无法成为获胜神经元。这种神经元称为“死神经元”。可以给很少获胜的神经元以较大的阈值,使其在输入向量与权值相似性不太高的情况下也有可能获胜;而对那些经常获胜的神经元则给以较小的阈值。有效解决了“死神经元”问题。竞争神经网络采用的Kohonen学习规则是从内星学习规则发展而来的。阈值学习规则阈值学习规则 5自组织竞争神经网络3.自组织特征映射网络 自组织特征映射网络(Self-Organizing Feature Maps,SOFM)又称自组织映射网络(SOM)。自组织映射网络是一种竞争性神经网络,同时引入了自组织特性。自组织现象来源于人脑细胞的自组织性:大脑中不同区域有着不同的作用,不同的感官输入由不同位置的脑细胞进行处理,这种特性不完全来自遗传,更依赖于后天的学习和训练。自组织映射网络除了能学习输入样本的分布外,还能够识别输入向量的拓扑结构 6自组织竞争神经网络3.自组织特征映射网络自组织神经网络同样包含输入层、输出层两层网络,但在输出层引入网络的拓扑结构,以更好地模拟生物学中的侧抑制现象。输入神经元与输出神经元通过权值相连,同时,近邻的输出神经元之间也通过权值向量相连。输出神经元被放置在一维、二维甚至多维的网格节点中,最常见的是二维拓扑结构。7自组织竞争神经网络4.SOM的学习算法竞争网络与SOM网络的主要区别在于:在竞争神经网络中不存在核心层之间的相互连接,在更新权值时采用了胜者全得的方式,每次只更新获胜神经元对应的连接权值;而在自组织映射网络中,每个神经元附近一定邻域内的神经元也会得到更新,较远的神经元则不更新,从而使几何上相近的神经元变得更相似。8自组织竞争神经网络4.SOM的学习算法 使用learnsom函数进行自组织映射网络的学习。在learsom函数学习过程中,学习率与邻域大小是可调的。在训练过程中分为两个阶段进行调节:排序阶段:在排序阶段,随着迭代的进行,学习率从下降到,邻域大小从下降到。在这个阶段,权值根据输入向量进行调整,使其相对位置体现了输入样本的分布。调整阶段:在这个阶段,学习率从开始以缓慢的速度下降,邻域大小则保持为不变,以确保学习的稳定性 学习率有 、两个给定的参考值,且 ,邻域大小也有两个给定的参考值:9自组织竞争神经网络4.SOM的学习算法(1)设定变量。(2)初始化。权值使用较小的随机值进行初始化,并对输入向量和权值都做归一化处理(3)将随机抽取的样本输入网络。(4)更新权值。对获胜神经元拓扑邻域内的神经元,采用Kohonen规则进行更新 10自组织竞争神经网络4.SOM的学习算法(5)更新学习速率及拓扑邻域,并对学习后的权值进行重新归一化。学习率和邻域大小的调整按排序阶段、调整阶段两步来进行。(6)判断是否收敛。判断迭代次数是否达到预设的最大值,若没有达到最大迭代次数则转到第三步,否则结束算法。11自组织竞争神经网络5.学习矢量量化网络 自组织映射网络具有有效的聚类功能,但由于没有采用导师信号,适合无法获知样本类别的情况。将自组织竞争的思想与有监督学习相结合,这就是学习矢量量化网络(Learning Vector Quantization,LVQ)。LVQ是SOM网络的一种变形,它在原有两层结构的基础上增加了线性层,竞争层得到的类别称为子类,输出层又称线性层,线性层的类别标签是由导师信号给出的,是目标分类。12自组织竞争神经网络6.自组织竞争网络相关函数详解gridtop网格拓扑函数 pos=gridtop(dim1,dim2,dimN)gridtop(2,3,4)表示 的三维拓扑结构 用gridtop创建一个包含40个输出层神经元节点的网格,并输入到selforgmap函数中。pos=gridtop(8,5);%创建网格 pos%神经元的坐标 net=selforgmap(8 5,topologyFcn,gridtop);plotsomtop(net)%显示网络13自组织竞争神经网络6.自组织竞争网络相关函数详解hextop六边形拓扑函数 pos=hextop(dim1,dim2,dimN)显示三维六边形拓扑结构。pos=hextop(3,4,2);%建立3*4的两层六边形 pos plot3(pos(1,:),pos(2,:),pos(3,:),o)%显示节点位置 title(hex拓扑)set(gcf,color,w)14自组织竞争神经网络6.自组织竞争网络相关函数详解randtop随机拓扑结构函数:pos=randtop(dim1,dim2,dimN)神经元节点被安排在N维的空间中,节点的位置都是随机给定的。创建一个随机拓扑结构的自组织映射网络,并显示网络结构 pos=randtop(8,5);rng(2)%设置随机数种子 net=selforgmap(8 5,topologyFcn,randtop);plotsomtop(net)15自组织竞争神经网络6.自组织竞争网络相关函数详解tritop三角拓扑函数pos=tritop(dim1,dim2,dimN)神经元节点被安排在N维的空间中,节点按三角形的形状排列。pos=tritop(8,5);%三角拓扑函数 net=selforgmap(8 5,topologyFcn,tritop);plotsomtop(net)16自组织竞争神经网络6.自组织竞争网络相关函数详解dist、boxdist、linkdist、mandist距离函数(1)欧氏距离 Z=dist(W,P)(2)boxdist函数用于求得的距离是向量个分量绝对差的最大值(3)linkdist是newsom的默认距离函数(4)Manhattan距离,即曼哈顿距离,也就是出租车几何距离,相当于向量之差的1-范数。17自组织竞争神经网络6.自组织竞争网络相关函数详解newc竞争网络 net=newc(P,S,KLR,CLR)P:R*Q矩阵,包含Q个R维的输入样本向量。S:标量,表示输出层神经元个数。KLR:Kohonen学习率,默认值为 0.01CLR:“良心”学习率,默认值为 0.00119自组织竞争神经网络6.自组织竞争网络相关函数详解使用竞争神经网络将4个坐标点分为两类 P=.2.8 .1.9;.3.5.4.5;%待分类坐标点 plot(P(1,:),P(2,:),o);%绘制坐标点 axis(0,1,0,1)set(gcf,color,w)grid on title(四个坐标点的分类)net=newc(P,2);%创建竞争层 net=train(net,P);Y=net(P)Yc=vec2ind(Y)P c1=P(:,Yc=1);%绘制分类结果 c2=P(:,Yc=2);plot(c1(1,:),c1(2,:),ro,LineWidth,2)hold on plot(c2(1,:),c2(2,:),k,LineWidth,2)title(四个坐标点的分类结果)axis(0,1,0,1)20自组织竞争神经网络6.自组织竞争网络相关函数详解competlayer新版竞争网络函数 net=competlayer(numClasses,kohonenLR,conscienceLR)numClasses:分类的类别数kohonenLR:Kohonen学习率 conscienceLR:“良心”学习率,即阈值学习规则的学习率 iris_dataset是MATLAB自带的用于分类的样本数据,其中包含了150分鸢尾花数据,每份数据用一个4维向量表示。用竞争神经网络将其分为3类 inputs=iris_dataset;%载入数据 net=competlayer(3);%创建竞争网络 net=train(net,inputs);%训练 outputs=net(inputs);%分类 classes=vec2ind(outputs)%格式转换。classes为分类结果,这里仅列出部分数据 c=hist(classes,3)%每个类别的数量21自组织竞争神经网络6.自组织竞争网络相关函数详解newsom自组织特征映射网络 net=newsom(P,d1,d2,tfcn,dfcn,steps,in)P:R*Q矩阵,包含Q个典型的R维输入向量 di:拓扑结构中第i维的大小。默认值为 5,8 显示自组织映射网络与竞争神经网络的结构差别 net1=competlayer(40);%40个节点的竞争层 load simpleclass_dataset net2=newsom(simpleclassInputs,5 8);view(net1)view(net2)22自组织竞争神经网络6.自组织竞争网络相关函数详解selforgmap新版自组织映射网络函数 net=selforgmap(dimensions,coverSteps,initNeighbor,topologyFcn,distanceFcn)dimensions:一个表示拓扑结构的行向量,如表示二维结构 coverSteps:训练次数。initNeighbor:邻域大小的初始值。topologyFcn:表示拓扑函数的字符串,可选值有hextop,gridtop,randtop等 distanceFcn:表示距离函数的字符串,可选值有boxdist,dist,linkdist和mandist等 23自组织竞争神经网络6.自组织竞争网络相关函数详解simplecluster_dataset是MATLAB自带的用于聚类的简单数据,其中包含了1000个二维向量。用不同拓扑大小的自组织映射网络做聚类。x=simplecluster_dataset;%载入数据 plot(x(1,:),x(2,:),o)%显示 set(gcf,color,w)title(原始数据)使用2*3拓扑网络进行聚类 net=selforgmap(2,3);net=train(net,x);y=net(x);classes=vec2ind(y);c=hist(classes,6)%6个类别包含的样本个数 plotsomhits(net,x)%显示每个类别的个数 plotsompos(net,x)%显示类别中心点的位置24自组织竞争神经网络6.自组织竞争网络相关函数详解newlvq学习矢量量化网络 net=newlvq(P,S1,PC,LR,LF)P:R*Q矩阵,包含Q个R维输入向量。S1:竞争层神经元的个数。用newlvq创建一个简单的学习矢量量化网络,给出用newlvq解决一个分类问题的完整过程。P=-3-2-2 0 0 0 0+2+2+3;.%输入样本是10个二维向量0+1-1+2+1-1-2+1-1 0;Tc=1 1 1 2 2 2 2 1 1 1;%目标类别 T=ind2vec(Tc);net=newlvq(P,4,.6.4);%创建LVQ网络 view(net)net=train(net,P,T);%训练 Y=net(P)%测试 Yc=vec2ind(Y)Tc25自组织竞争神经网络6.自组织竞争网络相关函数详解lvqnet新版学习矢量量化网络函数 net=lvqnet(hiddenSize,lvqLR,lvqLF)hiddenSize:竞争层神经元节点个数 lvqLR:学习率。lvqLF:学习函数。x,t=iris_dataset;%加载数据,x为输入样本,t为期望输出rng(0)ri=randperm(150);%划分训练与测试集 x1=x(:,ri(1:50);t1=t(:,ri(1:50);x2=x(:,ri(51:150);t2=t(:,ri(51:150);net=lvqnet(20);%创建网络进行训练 net=train(net,x1,t1);y=net(x2);%测试 yy=vec2ind(y);ty=vec2ind(t2);sum(yy=ty)/length(yy)26自组织竞争神经网络6.自组织竞争网络相关函数详解mapminmax归一化函数 在神经网络和其他机器学习算法中,往往需要对输入的样本做归一化。mapminmax就是MATLAB提供的一个方便的归一化函数。Y,settings=mapminmax(X)Y=mapminmax(apply,X,settings)x1_again=mapminmax(reverse,y,settings)27自组织竞争神经网络6.自组织竞争网络相关函数详解对一个矩阵进行归一化 x=1,2,3;1,2,4%待归一化数据 xx,settings=mapminmax(x);%归一化到0,1 xx settings.xmin,settings.xmax%结构体settings中保存了每行的最大最小值 fp.ymin=0;fp.ymax=10 xx,settings=mapminmax(x,fp);%映射到0,10区间 xx xx,settings=mapminmax(x,fp);%按列进行归一化 xx28自组织竞争神经网络7.自组织竞争神经网络应用实例手算实现坐标点的分类。mycompet.m 29自组织竞争神经网络7.自组织竞争神经网络应用实例clear,clc%使用工具箱函数实现坐标点分类close allx0=4.1,1.8,0.5,2.9,4.0,0.6,3.8,4.3,3.2,1.0,3.0,3.6,3.8,3.7,3.7,8.6,9.1,.%样本数据 7.5,8.1,9.0,6.9,8.6,8.5,9.6,10.0,9.3,6.9,6.4,6.7,8.7;.8.1,5.8,8.0,5.2,7.1,7.3,8.1,6.0,7.2,8.3,7.4,7.8,7.0,6.4,8.0,.3.5,2.9,3.8,3.9,2.6,4.0,2.9,3.2,4.9,3.5,3.3,5.5,5.0,4.4,4.3;%建立竞争网络,两个类别net=competlayer(2);net.trainParam.epochs=400;%训练tic;net=train(net,x0);toc%计算结果y=net(x0);calsses=vec2ind(y);fprintf(分类结果n);disp(calsses)view(net)30自组织竞争神经网络坐标点的分类(自组织映射网络)使用自定义的SOM网络解决上一节的坐标点分类(聚类)问题(1)输入数据,并做归一化。使用mapminmax函数将输入向量归一化至区间,便于后续的计算。2)构造网络。由于输入向量为二维向量,因此网络的输入层包含两个神经元,网络的输出层则包含4个神经元。设置最大和最小学习率分别为0.8和0.05,并按下式变化 (3)迭代更新。从样本集合中随机抽取一个向量输入网络,根据其输出值确定获胜神经元,然后计算当前迭代次数的学习率和邻域大小参数,确定邻域范围。对邻域范围内的神经元,更新其相应的权值向量。最大迭代次数定为200次。7.自组织竞争神经网络应用实例31自组织竞争神经网络7.自组织竞争神经网络应用实例(4)判断是否达到最大迭代次数,如果未达到,返回第三步继续计算。(5)得到训练好的网络后,将训练样本输入网络,每个样本向量对应一个兴奋的输出神经元,这样就得到了分类结果。mykohonen.m 32自组织竞争神经网络谢谢大家!33自组织竞争神经网络
展开阅读全文