老饼讲解-神经网络 机器学习 神经网络 深度学习
SOM神经网络

【流程】SOM神经网络-详细算法流程(批量训练)

作者 : 老饼 发表日期 : 2023-03-08 09:21:06 更新日期 : 2023-03-17 21:48:05
本站原创文章,转载请说明来自《老饼讲解-BP神经网络》www.bbbdata.com



本文讲解SOM神经网络批量训练的算法流程

本算法来源于matlab2014b ,使用的是单样本训练方法(matlab中的learnsomb文件)

通过本流程可以了解matlab的SOM神经网络的算法流程




  01.  SOM神经网络-训练算法流程(批量训练)  


本节展示SOM神经网络的批量样本训练算法流程


        输入说明       


X    :用于聚类的样本                  
 dim:SOM隐节点拓扑结构的维度 
 相关训练参数       
 :初始邻域距离                    
      :收缩步数阈值                   



     SOM神经网络-训练算法流程(批量训练)    


SOM神经网络的训练算法流程如下
 一、初始化                                                                                                      

1、初始化W                                                                          
 将W的每一行都初始化为样本中心,如下                  
   
2、计算距离矩阵D                                                              
 根据参数dim生成拓扑结构,并由拓扑结构算得矩阵距离D
具体细节见下文的细节讲解

3、初始化训练次数t                                                            
                                                                
 二、循环训练N次                                                                                            
 1. 随机选择n个样本进行训练                                                                  
 2. 更新学习率和领域范围                                                                       
        
 3. 计算本次竞争胜出的神经元及其邻域神经元的编号                              
 假设本次竞争胜出的神经元编号为k                    
 
 满足下式的就是邻域神经元的编号                   
 
 4. 计算加权学习率矩阵LR                                                                      
(1) 初始化LR为全0矩阵                                                               
 LR为m*n矩阵,m为隐节点个数,n为本次训练样本个数      
(2) 确定LR的学习率                                                                    
 如果第i个节点是第j个样本的胜出节点,则   
如果第i个节点是第j个样本的邻域节点,则

(3) 将每个节点的LR进行归一化                                                   
 即对LR的每一行进行归一化      
       
 5. 计算权重W的更新量                                                                          
(1) 按公式计算W的更新量                                                          
    
(2) 特殊处理                                                                              
 
对于本轮不需要更新的节点在中对应的值置0   
 不需要更新的节点,即为0对应的节点
6. 更新权重矩阵                                                                                   
 
                               
 7. 更新迭代步数 t                                                                                  
                                     
 三、输出                                                                                                         
 输出训练好的网络权重                                           
👉W:网络输入层到隐层的权重(即各个聚类点的位置)                         





    补充:关于距离矩阵D的计算逻辑    


共分为两步,
(1) 生成目标拓扑结构              
(2) 生成拓扑点之间的距离矩阵
  例子说明
以生成一个3x5的六边形拓扑结构为例
先生成3x5的六边形拓扑结构(包括拓扑点的位置和连线),
再生成拓扑点间的距离矩阵


在matlab中可以使用hextop生成六边形拓扑结构,并由linkdist函数得到距离矩阵,如下
  pos = hextop([3,5]);    
  d     = linkdist(pos);     










 End 




联系老饼