老饼讲解-神经网络
自实现-竞争网络
LVQ神经网络
LVQ-详细算法流程
作者 : 老饼 日期 : 2022-06-09 04:43:09 更新 : 2022-06-29 01:25:32
本站原创文章,转载请说明来自《老饼讲解-BP神经网络》bp.bbbdata.com



本文讲解LVQ的具体算法流程和细节,扒自matlab2014神经网络工具箱,是《LVQ-重现matlab实现代码》的具体讲解。



  01. 符号说明  


W21:代表网络第1层(输入层)到第2层(隐层)的权重矩阵。size:隐神经元个数*输入个数。每i行代表所有输入到第i个神经元的权重。   
 W32:代表网络第2层(输入层)到第3层(隐层)的权重矩阵。size:输出个数*隐神经元个数。每i行代表所有隐神经元到第i个输出的权重。




  02. 主流程  


LVQ的训练主要使用单样本训练方式,它的的主流程如下:


1、初始化权重w21和w32。
2、循环迭代训练,直到达到退出条件(误差足够小或达到最大训练次数)
----不放回随机抽取N个样本,每次使用一个样本训练:
---------按训练规则lvq1或lvq2计算隐节点更新量dw21。
---------更新w21 = w21+dw21
----计算本轮误差,如果是历史最优,则将当前w21作为历史最优w21。
返回历史最优的w21。   


训练主流程图如下:






  03. 初始化说明  


  ● W21权重初始化  


W21是输入层到隐层的权重,它采用中心点方式初始化
即所有隐神经元都初始化为输入的中心点,公式为:

W21权重初始化计算实例 
2个输入,3个隐节点。X的输入范围 :,则
(1) 算出x1,x2的中心点分别为5和4.        
(2)则W21初始化为 



  ● W32权重的初始化  


W32不直接设置,依靠输出节点与隐节点连接占比pc进行初始化。
例如,3个隐节点,2个输出,当pc = [0.4,0.6]时,第1个节点占floor(0.4*3) = floor(1.2)=1个隐节点,第二个输出则占2个。
在代码实现上,先算得pc累积值,再按累积值映射到隐神经元编号结束位置,从而确定隐神经元的具体分配,即可确定W32。
W32计算实例解说
隐节点个数hn: 8,输出个数out_n = 3 ,分配占比 pc=[0.3,0.2,0.5]

(1) 计算pc累积值                                                           



(2) 映射到隐神经元编号结束位置                                    



由此可得, 1-2号隐节点连接到输出1,3-4号隐节点连接到输出2,5-8号隐节点连接到输出3.

(3) 确定 W32                                                              
 



  04. 训练规则说明(LVQ1,LVQ2)  


  ● LVQ1  


LVQ1的训练规则如下:

(1) 初始化dw21                  

dw21初始化全为0,其中size与w21保持一致

(2) 根据训练样本计算dw21
如果用于训练的样本(注意,每次只有一个样本)预测正确,则竞争成功的隐神经元权重(位置)调整量为样本方向,否则为样本反方向:


说明:                                                                            
k :  竞争成功的隐神经元编号。                                       
dW21(k,:) : 代表dW21的第k行。                                    
lr:   学习率,可设为0.01,                                             
x:   本次训练的输入样本,                                              
w:   竞争成功的隐神经元对应的权重,即W21的第k行。 


  ● LVQ2  


LVQ2的训练规则如下:

(1) 初始化dw                      
dw初始化全为0,其中size与w21保持一致

(2) 计算k1,k2                     
获取最近聚类中心点和次近聚类中心点的编号k1和k2

(3) 根据训练样本计算dw21
如果训练样本到k1和k2的距离d1与d2过小,即满足  ,  则进行更新,其中dw计算如下

 




  05. 网络的预测  



LVQ网络输出y的直接按数学表达式计算即可:



其中,dist为欧氏距离,compet则为向量竞争函数,即向量中最大值者为1,其实为0.





  End  








联系小饼