SOM网络1:原理讲解
SOM 介绍
SOM
(Self Organizing Maps):自组织映射神经网络,是一种类似于kmeans``的聚类算法,用于寻找数据的
聚类中心。它可以将
相互关系复杂非线性的高纬数据,映射到具有简单几何结构及相互关系
的低纬空间。(低纬映射能够反映高纬特征之间的拓扑结构)
- 自组织映射(Self-organizing map, SOM)通过学习输入空间中的数据,生成一个
低维、离散
的映射(Map),从某种程度上也可看成一种降维算法
。 SOM
是一种无监督
的人工神经网络。不同于一般神经网络基于损失函数的反向传递来训练,它运用竞争学习
(competitive learning)策略,依靠神经元之间互相竞争逐步优化网络。且使用近邻关系函数
(neighborhood function)来维持输入空间的拓扑结构
。- 由于基于
无监督
学习,这意味着训练阶段不需要人工介入(即不需要样本标签),我们可以在不知道类别的情况下,对数据进行聚类
;可以识别针对某问题具有内在关联的特征。 可以实现数据可视化;聚类;分类;特征抽取等任务
特点归纳
- 神经网络,竞争学习策略
- 无监督学习,不需要额外标签
- 非常适合高维数据的可视化,能够维持输入空间的拓扑结构
- 具有很高的泛化能力,它甚至能识别之前从没遇过的输入样本
网络结构
SOM的网络结构有2
层:输入层、输出层
(也叫竞争层),。
输入层
:包含D
个节点,节点数由输入特征的维度决定,跟输入特征维度相同。输出层
:通常下将输出层的节点排列层X行Y列
的矩阵形式,输出层有X x Y
个节点。
网络的特点
- (1) 输出层的每个节点,通过
D
条权边,与所有样本点D维特征向量相连。,输出层i,ji,ji,j 位置的节点向量:
Wij=[wij0,wij0,...wijD]W_{ij} = [w_{ij0},w_{ij0},...w_{ijD}]Wij=[wij0,wij0,...wijD]
换句话说:输出层i,ji,ji,j 位置的节点可以用一个D维矢量WijW_{ij}Wij来表征` - (2)
经过训练后
,输出层的各个节点之间,按照距离远近具有一定的关联
,即离的越近,关联度越高,也可以表述为离的越近两个点,这个两个点的D维矢量
的距离会越近。 - (3)
训练的目的
:学习X x Y
个D
维权重WWW,可以将所有的训练的样本(每个样本D维特征向量)映射到输出层的节点上。
高纬空间(输入)距离近的点,映射到输出层后距离也较近。比如两个样本点比较近都映射到(i,j)(i,j)(i,j)上,或者映射到(i,j)(i,j)(i,j)和(i,j+1)(i,j+1)(i,j+1)上。
模型训练过程
- 1 准备训练数据datas:
N x D
N为样本的数量,D为每个样本的特征向量维度
通常需要正则化:
datas=datas−mean(datas)std(datas)datas=\frac{datas-mean(datas)}{std(datas)}datas=std(datas)datas−mean(datas) - 2.确定参数 X,YX,YX,Y X=Y=5NX=Y=\sqrt{5\sqrt{N}}X=Y=5N , 向上取整
- 3.权重WWW 初始化: WWW的维度为(X x Y x D)
- 4.迭代训练
1) 读取一个样本点 xxx : [D] # D维
2) 计算样本xxx 分别与输出层的 X∗YX*YX∗Y个节点计算距离,找到距离最近的点(i,j)(i,j)(i,j)作为激活点
,设其权重ggg为1
3) 对输出层其他节点,利用其与位置(i,j)(i,j)(i,j)处的节点距离,计算他们的权重ggg,与(i,j)(i,j)(i,j)位置距离越近,则权重越大。 完成计算输出层的X*Y节点权重ggg,特点是以(i,j)(i,j)(i,j)处的权值最大,以其为中心越远越小
- 4) 更新输出层所有节点的表征向量:
W=W+η∗g∗(x−W)W=W +\eta*g*(x-W)W=W+η∗g∗(x−W)
其中η\etaη是学习率,x−Wx-Wx−W表示当前更新的输出层节点与输入样本x的距离,更新节点的表征向量的目的是让节点逼近输入向量xxx
整个SOM
映射过程,相当于对输入的N
个样本进行聚类映射,比如输入样本x1x1x1,x2x2x2,x3x3x3 映射为输出节点a, 样本x4x4x4,x5x5x5,x6x6x6映射为输出节点b,则可以用输出节点a来表征样本x1x1x1,x2x2x2,x3x3x3;用输出节点b来表征样本x4x4x4,x5x5x5,x6x6x6
- 经过多轮迭代,完成了对输出节点表征向量WWW的更新,这些节点的表征向量可以表征输入的样本x
(N x D)
。相当于把输入样本,映射为(XxYxD)的表征向量W=w1,1,w1,2,,,wx,yW=w_{1,1},w_{1,2} ,,, w_{x,y}W=w1,1,w1,2,,,wx,y
权重初始化 W:[X,Y,D]
权重初始化主要有3
种方法:
- 1 随机初始化,然后标准化 W=W∣∣W∣∣W=\frac{W}{||W||}W=∣∣W∣∣W
- 2 从训练数据中随机挑选X∗YX*YX∗Y个,来初始化权重
- 3 对训练数据进行
PCA
,取特征值最大的两个特征向量M:
D x 2 作为基向量进行映射。
距离计算方式
采用欧式距离计算 ,公式如下:
dis=∣∣x−y∣∣dis =|| x-y ||dis=∣∣x−y∣∣
计算输出节点的权重g
假设激活点坐标为(cX,cy)(c_X,c_y)(cX,cy) ,其他位置 i,ji,ji,j处的权重g计算主要有两种方法:
高斯法
g(i,j)=e−(cx−i)22σ2e−(cy−j)22σ2g(i,j)= e^{-\frac{(c_x-i)^2}{2\sigma^2}}e^{-\frac{(c_y-j)^2}{2\sigma^2}}g(i,j)=e−2σ2(cx−i)2e−2σ2(cy−j)2
可以看出到(i,j)(i,j)(i,j)为激活点(cX,cy)(c_X,c_y)(cX,cy),计算得到的g=1
。权重呈现高斯分布。其中高斯法中的σ\sigmaσ值也会随着迭代步数变化而变化,更新方式跟学习率
方式一样,参见后面学习率
的更新
硬阈值法
这种方法比较直接,以(cX,cy)(c_X,c_y)(cX,cy)为中心一定范围内的g为1,其他为0,;一般都是选择高斯方法
学习率更新
η=η01+tmaxstep/2\eta=\frac{\eta_0}{1+\frac{t}{max_{step}/2}}η=1+maxstep/2tη0
其中ttt表示当前的迭代step
,maxstepmax_{step}maxstep网络训练总的迭代次数,学习率η\etaη随着迭代次数的增加,会越来越小。
SOM网络1:原理讲解相关推荐
- nginx反向代理原理讲解
一 .概述 反向代理(Reverse Proxy)方式是指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器:并将从服务器上得到的结果 ...
- IoT物联网嵌入式设备中30种常见传感器模块简介及原理讲解
IoT物联网嵌入式设备中30种常见传感器模块简介及原理讲解 0.前言 一.光学传感器模块: 1. 光敏传感器模块: 2. 红外避障模块 3. 循迹传感器模块 4. U型光电传感器模块 5. 红外接收模 ...
- 一文读懂闪电网络工作原理
一 引言 了解比特币的人都知道,比特币网络的拥堵问题由来已久,转账高手续费.速度缓慢严重制约了比特币的发展.关于扩容的争论喋喋不休,共识分歧严重,造成了多次比特币分叉.目前来看,社区共识无法达成一 ...
- 云原生钻石课程 | 第6课:Kubernetes网络架构原理深度剖析(上)
点击上方"程序猿技术大咖",关注并选择"设为星标" 回复"加群"获取入群讨论资格! 本篇文章来自<华为云云原生王者之路训练营>钻 ...
- SOM网络算法分析与应用(适合入门、快速上手)
目录 一. SOM网络的生物学基础 二.SOM网络的拓扑结构 三.SOM网络的权值调整 四.SOM网络的实现 4.1 创建函数NEWSOM 4.2 传递函数 4.3 距离函数 4.4 权值函数negd ...
- 酷狗音乐的爬取,基于python,从无到有完整教程-上:搭建环境及爬取原理讲解
酷狗音乐的爬取,基于python,从无到有完整教程,使用微软新edge作为虚拟浏览器 搭建环境及爬取原理讲解 ⬇⬇⬇ 编码环境及工具准备: 编码工具:PyCharm 所需的库: import requ ...
- 【云驻共创】华为云云原生之Kubernetes网络架构原理深度剖析(上)
文章目录 前言 一.Kubernetes诞生背景 1.云原生的概念 2.云原生架构 3.Kubernetes(k8s) 二.Kubernetes基本网络模型剖析 1.概念厘清 1.1 二层桥接 VS ...
- 区块链笔记 - 《区块链技术核心概念与原理讲解》
说明:笔记内容来源于慕课网<区块链技术核心概念与原理讲解>视频课程.如有侵权,请联系删除. 目录 1.区块链前世今生 2.区块链前景 3.比特币是什么 4.比特币原理 4.1 账本如何验证 ...
- 越来越多的岗位需要DPDK,那从DPDK该如何提升网络底层效率丨网络原理丨Linux服务器开发丨后端开发丨网络底层原理
越来越多的岗位需要dpdk,那从dpdk该如何提升网络底层效率 1. dpdk线程模型 2. kni与数据接收处理流程 3. 手把手代码实现 视频讲解如下,点击观看: 越来越多的岗位需要DPDK,那从 ...
最新文章
- solr java score_Solr 按照得分score跟指定字段相乘排序
- VR视觉健康标准在穗发布 专家:VR使用不要超过45分钟
- 【PC工具】chrome浏览器插件vimium:传说上网可以不用鼠标。VIM入门工具,妈妈再也不用担心我学不会vim了...
- 基于FPGA的波速形成实现
- orm mysql_ORM介绍
- python函数高级运用
- python写游戏棋牌游戏_使用python实现简单五子棋游戏
- 如何在word文档中添加附件
- c语言字符串逆置,字符串逆置
- python背诵技巧_python如何记忆方法
- zookeeper客户端下载与使用
- SpringBoot 入门知识点详解
- 基于私有云的数据库高可用架构实践
- 对String值不可变的理解以及String类型的引用传递问题
- 使用 VBRichClient 库
- 大写汉字转阿拉伯数字c语言,把中文汉字大写数字 转换成 阿拉伯数字
- 线性代数学习笔记——第二十四讲——向量及其线性运算
- DC-DC直流升压模块电源12V升24V(5A)FP5207
- 多旋翼无人机进阶教程
- linux下sqlite安装及基本使用
热门文章
- vue-cli3.0+webpack4中关于svg-sprite-loader踩坑,让svg组件徜徉我的web项目
- django3.2连接虚拟机里的openGauss
- ROS机器人程序设计学习笔记(Chapter2)
- 2016年8月2日 星期二 --出埃及记 Exodus 16:2
- 51单片机用STC—ISP烧录程序是一直显示“正在检测目标单片机···”冷启动板子没有反应
- php获取x509证书信息,创建X509证书,并获取证书密钥的一点研究
- Linux安装mysql详细步骤
- 利用python对数据进行分组统计
- Bugku WEB 秋名山车神
- 关于小数四舍五入的方式