当前位置: 首页> 教育> 锐评 > 【教程】如何一步一步训练一个SOM神经网络-自组织竞争神经网络(Self-organizing Feature Map)

【教程】如何一步一步训练一个SOM神经网络-自组织竞争神经网络(Self-organizing Feature Map)

时间:2025/7/11 15:17:06来源:https://blog.csdn.net/dbat2015/article/details/139941474 浏览次数:0次

本文来自《老饼讲解-BP神经网络》https://www.bbbdata.com/

目录

  • 一、什么是SOM神经网络
    • 1.1.SOM神经网络有什么用
    • 1.2.SOM神经网络是如何聚类的
  • 二、如何训练一个SOM神经网络
    • 2.1. 训练一个SOM神经网络的代码示例
    • 2.2. 如何查看SOM神经网络的聚类中心

SOM神经网络全称为自组织竞争神经网络(Self-organizing Feature Map),它是Kohonen在1981年提出的一种用于聚类的神经网络,本文讲解如何一步一步训练一个SOM神经网络。

一、什么是SOM神经网络

1.1.SOM神经网络有什么用

SOM神经网络主要用来解决聚类问题,聚类问题是一种无监督学习,就是对样本进行分类,
通过算法,找出N个聚类中心,样本离哪个聚类中心最近,就将样本判为哪一个类别。
聚类是什么
如上示所,经过聚类算法后,将样本划分为不同的类别。

1.2.SOM神经网络是如何聚类的

SOM按一个固定的拓扑初始化聚类中心,如下所示就是SOM常用的六边形拓扑结构
SOM聚类中心的拓扑结构
进一步地,根据Kohonen规则更新聚类中心,SOM与Kohonen的不同是,SOM会把邻近的聚类中心一起更新(这就是为什么SOM会引入拓扑结构来连结各个聚类中心了)。
以神经网络的拓扑图来展示SOM神经网络时,则如下:
SOM神经网络拓扑图
输入是样本,隐层的各个隐节点就是各个聚类中心,最终样本离哪个聚类中心最近,就判断样本属于哪个类别。

二、如何训练一个SOM神经网络

2.1. 训练一个SOM神经网络的代码示例

在matlab中可以使用selforgmap来训练一个SOM神经网络,示例代码如下:

% 本demo展示用matlab工具箱训练一个SOM神经网络
% 生成用于聚类的数据
rand('seed',70);                                   % 随机种子,设定随机种子是为了每次的结果一样
dataC = [2.5,2.5;7.5,2.5;2.5,7.5;7.5,7.5]';        % 生成四个样本中心
sn = 80;                                           % 样本个数
X = rand(2,sn)+dataC(:,mod(1:sn,4)+1);             % 随机生成样本点% 调用工具箱训练一个SOM网络                        
net = selforgmap([3 5]);                           % 建立一个SOM神经网络
net = train(net,X);                                % 训练网络
W   = net.IW{1};                                   % 网络的权重,也即各个聚类中心的位置
y   = net(X);                                      % 用训练好的网络进行预测
classes = vec2ind(y);                              % 将预测结果由one-hot格式转为类别索引% 绘图
plot(X(1,:),X(2,:),'*');                           % 原始样本
hold on 
plot(W(:,1),W(:,2),'or','MarkerFaceColor','g');    % 网络训练好的聚类中心

运行结果如下
SOM神经网络示例
绿色的隐神经元(聚类中心),红色的是样本,可见SOM神经网络已经基本较为合理地将样本进行聚类了。

2.2. 如何查看SOM神经网络的聚类中心

SOM神经网络的权重W就是各个聚类中心,只需要使用用net.IW{1}就可以提取出来,如下所示:
查看SOM神经网络的聚类中心
上面就是我们训练得到的15个聚类中心的位置了。


相关链接:

《老饼讲解-机器学习》:老饼讲解-机器学习教程-通俗易懂
《老饼讲解-神经网络》:老饼讲解-matlab神经网络-通俗易懂
《老饼讲解-神经网络》:老饼讲解-深度学习-通俗易懂

关键字:【教程】如何一步一步训练一个SOM神经网络-自组织竞争神经网络(Self-organizing Feature Map)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: