竞争网络-算法原理与自实现
LVQ神经网络
LVQ神经网络基本原理
作者 : 老饼 日期 : 2022-06-09 04:42:53 更新 : 2022-09-14 14:09:20
本站原创文章,转载请说明来自《老饼讲解-BP神经网络》bp.bbbdata.com



LVQ(Learning Vector Quantization)神经网络是Kohonen于1989年提出基于竞争网络的学习矢量量化网络,主要用于做分类。

本文介绍LVQ神经网络的结构、运作与训练,是LVQ的入门教程,是LVQ原理理解、代码实现、实际应用的理论基础。



一、LVQ的思想与网络结构


   01. LVQ分类思想   


LVQ用于解决分类问题,
它解决该问题的思想就是,
对每个类别,都初始化一些聚类中心点,
LVQ的训练,就是把这些聚类中心点,移到属于相应类别的样本的中心,
这样,来了新样本,只要判断新样本离哪个聚类中心点近,就属于该聚类中心点所代表的类别



   02. LVQ网络拓扑结构   


LVQ的网络结构如下:

它是固定的三层网络,输入层,隐层,与输出层。
其中,
(1) 输入层与隐层全连接,                                                            
(2) 隐层与输出层是部分连接,隐层与输出层的连接权重固定为1。
(3) 输出神经元取值只为0或1.                                                      



   03.  LVQ网络各个元素代表的意义   


LVQ的隐节点就代表聚类中心点,
隐节点与输入的权重就是中心点的位置,
隐节点与输出的权重(连接),就是隐节点所代表的类别。
LVQ的训练就是调整隐层与输入层的权重,也就是调整隐节点的位置。


总的来说,是如下对应
隐节点:聚类中心点。                                            
隐节点与输入层的权重:聚类中心点的位置。          
隐节点与输出层的连接(权重w32):隐节点所属类别。




   二、LVQ的输出与计算方法   


   01. LVQ的输出   


LVQ用于预测时,就是判断 样本 离哪个聚类中心点最近,就判为该聚类中心点所指标的类别。
过程如下:



   02. LVQ输出的计算方法   


LVQ网络输出数学表达式
LVQ网络输出y的数学表达式为:



其中,
W21为输入层到隐层的权重,
W32为隐层到输出层的权重   
dist为欧氏距离,                  
compet则为向量竞争函数(即向量中最大值者为1,其它为0).
  计算例子:    

以   为例。

(1) 先计算隐神经元值(即 x与W21各行的距离的相反数)



(2) 计算隐神经元激活值                                           


(3)计算输出                                                          



   三、LVQ的网络构建   

LVQ网络的构建就是确定初始化多少个聚类中心点,与各个聚类中心点对应的类别。
也就是确定以下两个参数:
(1)确定隐节点个数。                 
            
 (2) 确定隐节点与输出节点的连接结构:  
确定连接结构即确定输出层与隐层的权重矩阵w32。w32_{i,j}为1时,代表第i个输出与第j个隐节点连接。

一般不直接设置w32,而是通过设置隐节占比pc来间接设置w32,以下是一个讲解例子:

  例子:     
有2个输出,5个隐节点,pc=[0.4,0.6]。
则与输出1连接的隐神经元为0.4*5=2个,与输出1连接的隐神经元为0.6*5=3个,
可知:                                                  




   四、LVQ的网络训练主流程   

LVQ的训练过程只对w21(输入层到隐层的权重)进行训练。本质就是优化k个聚类中心点的位置。

PASS:隐层到输出层的权重经预设后不会再变动,也即聚类中心点所代表的类别,是不会在训练中改变的。

LVQ的训练采用逐样本训练方式,主流程如下:
循环迭代次数:         
                                                                               
----循环n次(n为样本数量个数),每次随机抽取一个样本训练网络:           
--------根据抽到的样本,使用LVQ1,或LVQ2计算w21的调整量dw21。      
--------更新w21 = w21+dw21                                                                
----计算本轮误差,如果是历史最优,则将当前w21作为历史最优w21。    
返回历史最优的w21。                                                                             
其中,LVQ1和LVQ2为dw21常用的两种计算规则




五、dw的计算(LVQ1,LVQ2)规则

w21的调整规则常用的有两种算法:LVQ1规则和LVQ2规则.


  01.  LVQ1规则  

LVQ1比较简单,
就是如果网络对当前样本预测正确,则将当前胜出的隐节点往样本靠近,如果预测错误,则远离样本。

即竞争胜出的隐节点与输入对应的权重(即该隐节点所代表的聚类中心位置) 调整量为:


   02. LVQ2规则   


● LVQ的缺陷与LVQ2的引入


LVQ2主要解决LVQ1训练后,有些样本属于中心A,又差不多属于中心B这种场景。
这样的结果虽然是正确的,但未必“界限”得非常清晰。

因此,引入LVQ2,尽量使样本点更“清晰”地划分于某一个中心点。


● 符号说明


k1:离样本最近的中心点(即所竞争成功的隐节点)
K2:以k2代表样本次近的中心点                           
d1,d2:分别代表样本到k1,k2的距离                      


●LVQ2规则


LVQ2规则详细描述如下:
如果 (此时d1和d2差别不大),则对中心点作如下更新( 一般取0.25,此时s=0.6 ):



如果样本实际属于k1,则将k1往样本靠近,将k2远离样本。
如果样本实际不属于k1,而属于k2,则将k2往样本靠近,k1远离样本。


即:        
                              

相比于LVQ1,LVQ2考虑了次近节点的位置,使界限更为清晰。



六、总结


我们用聚类中心点的角度来总结LVQ神经网络。


  01.LVQ1法  


(1) 先初始化k个聚类中心点,并指定每个聚类中心点所属的类别
(2) 随机选择一个样本训练聚类中心点的位置。如果离该样本最近的聚类中心点与该样本同一类别,则调整该聚类中心点,使它离样本更近,否则,让它离样本更远(LVQ1规则)。
(3)重复(2),直到分类误差达到目标值或达到最大迭代次数。


  02. LVQ2法  


(1) 承接LVQ1的结果
(2) 随机选择一个样本训练聚类中心点的位置,如果样本离最近中心点与次近中心的距离差别不大,则如下调整:
        如果类别属于最近的中心点,则让最近中心点更加靠近,次近聚类中心点远离。如果样本类别不属于最近中心点,而属于次近中心点,则让最近中心点远离,次近中心点靠近。
(3)重复(2),直到分类误差达到目标值或达到最大迭代次数。


LVQ2法是对LVQ1结果进一步优化,它的目的是使样本对类别中心的归属更加“清晰”。





  End  













联系小饼