160 likes | 453 Views
2.7 学习向量量化神经网络模型与学习算法. 2.7.1 LVQ 神经网络结构. 学习向量量化 LVQ(Learning Vector Quantization) 神经网络,属于前向 有监督 神经网络类型,在模式识别和优化领域有着广泛的的应用 由芬兰学者 Teuvo Kohonen 提出
E N D
2.7.1 LVQ神经网络结构 • 学习向量量化LVQ(Learning Vector Quantization)神经网络,属于前向有监督神经网络类型,在模式识别和优化领域有着广泛的的应用 • 由芬兰学者Teuvo Kohonen提出 • LVQ神经网络由输入层、隐含层和输出层三层组成,输入层与隐含层间为完全连接,每个输出层神经元与隐含层神经元的不同组相连接。隐含层和输出层神经元之间的连接权值固定为1。在网络训练过程中,输入层和隐含层神经元间的权值被修改。当某个输入模式被送至网络时,最接近输入模式的隐含神经元因获得激发而赢得竞争,因而允许它产生一个"1",而其他隐含层神经元都被迫产生"0"。与包含获胜神经元的隐含层神经元组相连接的输出神经元也发出"1",而其他输出神经元均发出"0"。
2.7.2 LVQ神经网络的学习算法 • LVQ1算法具体步骤如下: • (1)网络初始化 • 用较小的随机数设定输人层和隐含层之间的权值初始值。 • (2)输入向量的输入 • 将输人向量 送入到输入层。 • (3)计算隐含层权值向量与输入向量的距离 • 隐含层神经元和输入向量的距离,与自组织化映射的情况相同,由下式给出:
2.7.2 LVQ神经网络的学习算法 • (4)选择与权值向量的距离最小的神经元 • 计算并选择输入向量和权值向量的距离最小的神经元,并把其称为胜出神经元,记为 。 • (5)更新连接权值 • 如果胜出神经元和预先指定的分类一致,称为正确分类,否则称为不正确分类。正确分类和不正确分类时权值的调整量分别使用公式2-3、2-4: • (6)判断是否满足预先设定的最大迭代次数,满足时算法结束,否则返回2,进入下一轮学习。 (2-3) (2-4)
2.7.2 LVQ神经网络的学习算法 • 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.3 LVQ神经网络学习算法的MATLAB实现 • MATLAB中与LVQ相关的重要函数和功能
2.7.3 LVQ神经网络学习算法的MATLAB实现 • newlvq() • 功能 建立一个向量量化神经网络函数 • 格式 • (1) net = newlvq • (2) net = newlvq(PR,S1,PC,LR,LF) • 说明 式(1)返回一个没有定义结构的空对象,并显示函数nntool的帮助文字;式(2)中,net为生成的学习向量量化网络;PR为一个Rx2维的网络输入向量取值范围的矩阵[Pmin Pmax];Sl表示隐含层神经元的数目;PC表示在第二层的权值中列所属类别的百分比;LR表示学习速率,默认值为0.01;Lf表示学习函数,默认值为learnlv1。
2.7.3 LVQ神经网络学习算法的MATLAB实现 • ind2vec() • 功能 将下标矢量变换成单值矢量组函数 • 格式 vec = ind2vec(ind) • 说明 ind为包含n个下标的行向量x;vec为m行n列的向量组矩阵,矩阵中的每个向量i,除了由x中的第i个元素指定的位置为l外,其余元素均为0,矩阵的行数m等于x中最大的下标值。 (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) 1 C=[1 1 1 2 2 2 2 1 1 1]
2.7.3 LVQ神经网络学习算法的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.3 LVQ神经网络学习算法的MATLAB实现 • plotvec() • 功能 用不同颜色绘制矢量的函数 • 格式 plotvec(X,C,M) • 说明 X为一个列矢量矩阵;C为标记颜色坐标的行矢量;M为指定绘图时矢量的标记符号,缺省值为‘+’
2.7.3 LVQ神经网络学习算法的MATLAB实现 • 例2-6 针对一组输入向量,设计一个LVQ神经网络,经过训练后,能对给定数据进行模式识别。
例2-6运行结果 测试数据分类结果
2.7.3 LVQ神经网络学习算法的MATLAB实现 • 例2-6训练误差曲线
小结 • LVQ神经网络结构 • LVQ1学习算法 • LVQ2学习算法及特点 • LVQ神经网络学习算法的MATLAB实现 • LVQ神经网络应用示例 • LVQ神经网络与SOM神经网络的区别