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

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

目录

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

一、什么是SOM神经网络

1.1.SOM神经网络有什么用

SOM神经网络主要用来解决聚类问题,聚类问题是一种无监督学习,就是对样本进行分类,

通过算法,找出N个聚类中心,样本离哪个聚类中心最近,就将样本判为哪一个类别。

如上示所,经过聚类算法后,将样本划分为不同的类别。

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

SOM按一个固定的拓扑初始化聚类中心,如下所示就是SOM常用的六边形拓扑结构

进一步地,根据Kohonen规则更新聚类中心,SOM与Kohonen的不同是,SOM会把邻近的聚类中心一起更新(这就是为什么SOM会引入拓扑结构来连结各个聚类中心了)。

以神经网络的拓扑图来展示SOM神经网络时,则如下:

输入是样本,隐层的各个隐节点就是各个聚类中心,最终样本离哪个聚类中心最近,就判断样本属于哪个类别。

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

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

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

matlab 复制代码
% 本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神经网络已经基本较为合理地将样本进行聚类了。

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

SOM神经网络的权重W就是各个聚类中心,只需要使用用net.IW{1}就可以提取出来,如下所示:

上面就是我们训练得到的15个聚类中心的位置了。


相关链接:

《老饼讲解-机器学习》:老饼讲解-机器学习教程-通俗易懂

《老饼讲解-神经网络》:老饼讲解-matlab神经网络-通俗易懂

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

相关推荐
阳光是sunny5 小时前
别再被 worktree 绕晕了!AI 编程时代你必须掌握的 Git 隔离神器
前端·人工智能·后端
冬奇Lab6 小时前
每日一个开源项目(第148篇):obsidian-skills - Obsidian CEO 亲写的 AI Agent 格式规范,让 Agent 不再破坏你的 Vault
人工智能·开源·资讯
ethantan6 小时前
AI Agent 组成:像人一样思考的智能体
人工智能·程序员·架构
冬奇Lab6 小时前
Workflow 系列(05):评测体系——三层测试结构与 Trace 追踪
人工智能·工作流引擎
ethantan7 小时前
一篇讲解AI Agent 组成:像人一样思考的智能体
人工智能·后端·程序员
Cosolar8 小时前
vLLM 生产级部署完全指南
人工智能·后端·架构
CodePlayer竟然被占用了9 小时前
被美国政府封杀18天,Claude Fable 5 回来了——但代价是什么?
人工智能
IT_陈寒9 小时前
垃圾回收器选错了,我的Java服务内存炸了
前端·人工智能·后端
smartpi10 小时前
SmartPi GPIO 脉冲与回复语执行时序指南
人工智能
阿里云大数据AI技术10 小时前
PAI支持一键部署GLM-5.2,Coding能力比肩Claude Opus 4.8
人工智能