智能中国网提供学习支持神经网络结构学习向量量化LVQ(LearningVectorQuantization)神经网络,属于前向有监督神经网络类型,在模式识别和优化领域有着广泛的的应用由芬兰学者TeuvoKohonen提出LVQ神经网络由输入层、隐含层和输出层三层组成,输入层与隐含层间为完全连接,每个输出层神经元与隐含层神经元的不同组相连接。隐含层和输出层神经元之间的连接权值固定为1。在网络训练过程中,输入层和隐含层神经元间的权值被修改。当某个输入模式被送至网络时,最接近输入模式的隐含神经元因获得激发而赢得竞争,因而允许它产生一个"1",而其他隐含层神经元都被迫产生"0"。与包含获胜神经元的隐含层神经元组相连接的输出神经元也发出"1",而其他输出神经元均发出"0"。2.7.1LVQ神经网络结构LVQ1算法具体步骤如下:(1)网络初始化用较小的随机数设定输人层和隐含层之间的权值初始值。(2)输入向量的输入将输人向量送入到输入层。(3)计算隐含层权值向量与输入向量的距离隐含层神经元和输入向量的距离,与自组织化映射的情况相同,由下式给出:2.7.2LVQ神经网络的学习算法n21()jiijidxwT123,,,,nxxxxx2.7.2LVQ神经网络的学习算法(4)选择与权值向量的距离最小的神经元计算并选择输入向量和权值向量的距离最小的神经元,并把其称为胜出神经元,记为。(5)更新连接权值如果胜出神经元和预先指定的分类一致,称为正确分类,否则称为不正确分类。正确分类和不正确分类时权值的调整量分别使用公式2-3、2-4:(6)判断是否满足预先设定的最大迭代次数,满足时算法结束,否则返回2,进入下一轮学习。()()iijijiijxwwxw(2-4)(2-3)j2.7.2LVQ神经网络的学习算法LVQ2算法(1)~(4)与LVQl算法相同(5)更新连接权值如果胜出神经元1属于正确分类时,则权值更新与LVQ1的情况相同,根据式(2-3)进行权值的更新。当胜出神经元1属于不正确分类时,则另选取一个神经元2,它的权值向量和输入向量的距离仅比胜出神经元1大一点,且满足以下条件时时:1)神经元2属于正确分类;2)神经元2、胜出神经元1与输入向量之间的距离的差值很小。则胜出神经元1的权值改变量按公式2-3计算,而神经元2的权值改变量则按公式(2-3)进行计算。(6)判断算法是否结束如果迭代次数大于预先设定的次数,算法结束,否则返回第(2)步,进入下一轮学习2.7.3LVQ神经网络学习算法的MATLAB实现MATLAB中与LVQ相关的重要函数和功能函数名功能newlvq()建立一个LVQ神经网络函数learnlv1()LVQ1权值学习函数vec2ind()将单值矢量组变换成下标矢量plotvec()用不同的颜色画矢量函数2.7.3LVQ神经网络学习算法的MATLAB实现newlvq()功能建立一个向量量化神经网络函数格式(1)net=newlvq(2)net=newlvq(PR,S1,PC,LR,LF)说明式(1)返回一个没有定义结构的空对象,并显示函数nntool的帮助文字;式(2)中,net为生成的学习向量量化网络;PR为一个Rx2维的网络输入向量取值范围的矩阵[PminPmax];Sl表示隐含层神经元的数目;PC表示在第二层的权值中列所属类别的百分比;LR表示学习速率,默认值为0.01;Lf表示学习函数,默认值为learnlv1。2.7.3LVQ神经网络学习算法的MATLAB实现ind2vec()功能将下标矢量变换成单值矢量组函数格式vec=ind2vec(ind)说明ind为包含n个下标的行向量x;vec为m行n列的向量组矩阵,矩阵中的每个向量i,除了由x中的第i个元素指定的位置为l外,其余元素均为0,矩阵的行数m等于x中最大的下标值。C=[1112222111](1,1)1(1,2)1(1,3)1(2,4)1(2,5)1(2,6)1(2,7)1(1,8)1(1,9)1(1,10)1111000011100011110002.7.3LVQ神经网络学习算法的MATLAB实现learnlv1()功能LVQ1权值学习函数格式[dW,LS]=learnlv1(W,P,Z,N,A,T,E,gW,gA,D,LP,LS)说明dW为S*R权值(或阈值)变化矩阵;LS为当前学习状态(可省略);W为S*R的权值矩阵或者为S*1的阈值矢量;P为R*Q的输入矢量或者为1*Q的全为1的矢量;Z为S*Q的输入层的权值矢量(可省略);N为S*Q的网络输入矢量(可省略);A为S*Q的输出矢量;T为S*Q的目标输出矢量(可省略);E为S*Q误差矢量(可省略);gW为S*R的与性能相关的权重梯度矩阵(可省略);gA为S*Q的与性能相关的输出梯度值矩阵(可省略);D为S*S的神经元距离矩阵(可省略);LP为学习参数,该函数的学习参数由LP.lr构成,缺省值为0.01;LS为学习函数声明(可省略)。2.7.3LVQ神经网络学习算法的MATLAB实现plotvec()功能用不同颜色绘制矢量的函数格式plotvec(X,C,M)说明X为一个列矢量矩阵;C为标记颜色坐标的行矢量;M为指定绘图时矢量的标记符号,缺省值为‘+’2.7.3LVQ神经网络学习算法的MATLAB实现例2-6针对一组输入向量,设计一个LVQ神经网络,经过训练后,能对给定数据进行模式识别。%输入向量P及其对应的类别向量CP=[-6-4-20000246;02-212-212-20];C=[1112222111];%将类别向量C转换为目标向量TT=ind2vec(C);%绘制输入向量P,如图2-26所示,用颜色将输入向量分为两类plotvec(P,C,'*r');%输入向量绘制在一个横坐标在[-88]之间,纵坐标在[-33]之间的坐标平面内axis([-88-33]);%创建一个LVQ神经网络,隐含层有5个神经元,[0.60.4]例2-6运行结果测试数据分类结果2.7.3LVQ神经网络学习算法的MATLAB实现例2-6训练误差曲线小结LVQ神经网络结构LVQ1学习算法LVQ2学习算法及特点LVQ神经网络学习算法的MATLAB实现LVQ神经网络应用示例LVQ神经网络与SOM神经网络的区别