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 YD维权重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

  1. 经过多轮迭代,完成了对输出节点表征向量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)2​e−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:原理讲解相关推荐

  1. nginx反向代理原理讲解

    一 .概述                  反向代理(Reverse Proxy)方式是指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器:并将从服务器上得到的结果 ...

  2. IoT物联网嵌入式设备中30种常见传感器模块简介及原理讲解

    IoT物联网嵌入式设备中30种常见传感器模块简介及原理讲解 0.前言 一.光学传感器模块: 1. 光敏传感器模块: 2. 红外避障模块 3. 循迹传感器模块 4. U型光电传感器模块 5. 红外接收模 ...

  3. 一文读懂闪电网络工作原理

    一   引言 了解比特币的人都知道,比特币网络的拥堵问题由来已久,转账高手续费.速度缓慢严重制约了比特币的发展.关于扩容的争论喋喋不休,共识分歧严重,造成了多次比特币分叉.目前来看,社区共识无法达成一 ...

  4. 云原生钻石课程 | 第6课:Kubernetes网络架构原理深度剖析(上)

    点击上方"程序猿技术大咖",关注并选择"设为星标" 回复"加群"获取入群讨论资格! 本篇文章来自<华为云云原生王者之路训练营>钻 ...

  5. SOM网络算法分析与应用(适合入门、快速上手)

    目录 一. SOM网络的生物学基础 二.SOM网络的拓扑结构 三.SOM网络的权值调整 四.SOM网络的实现 4.1 创建函数NEWSOM 4.2 传递函数 4.3 距离函数 4.4 权值函数negd ...

  6. 酷狗音乐的爬取,基于python,从无到有完整教程-上:搭建环境及爬取原理讲解

    酷狗音乐的爬取,基于python,从无到有完整教程,使用微软新edge作为虚拟浏览器 搭建环境及爬取原理讲解 ⬇⬇⬇ 编码环境及工具准备: 编码工具:PyCharm 所需的库: import requ ...

  7. 【云驻共创】华为云云原生之Kubernetes网络架构原理深度剖析(上)

    文章目录 前言 一.Kubernetes诞生背景 1.云原生的概念 2.云原生架构 3.Kubernetes(k8s) 二.Kubernetes基本网络模型剖析 1.概念厘清 1.1 二层桥接 VS ...

  8. 区块链笔记 - 《区块链技术核心概念与原理讲解》

    说明:笔记内容来源于慕课网<区块链技术核心概念与原理讲解>视频课程.如有侵权,请联系删除. 目录 1.区块链前世今生 2.区块链前景 3.比特币是什么 4.比特币原理 4.1 账本如何验证 ...

  9. 越来越多的岗位需要DPDK,那从DPDK该如何提升网络底层效率丨网络原理丨Linux服务器开发丨后端开发丨网络底层原理

    越来越多的岗位需要dpdk,那从dpdk该如何提升网络底层效率 1. dpdk线程模型 2. kni与数据接收处理流程 3. 手把手代码实现 视频讲解如下,点击观看: 越来越多的岗位需要DPDK,那从 ...

最新文章

  1. solr java score_Solr 按照得分score跟指定字段相乘排序
  2. VR视觉健康标准在穗发布 专家:VR使用不要超过45分钟
  3. 【PC工具】chrome浏览器插件vimium:传说上网可以不用鼠标。VIM入门工具,妈妈再也不用担心我学不会vim了...
  4. 基于FPGA的波速形成实现
  5. orm mysql_ORM介绍
  6. python函数高级运用
  7. python写游戏棋牌游戏_使用python实现简单五子棋游戏
  8. 如何在word文档中添加附件
  9. c语言字符串逆置,字符串逆置
  10. python背诵技巧_python如何记忆方法
  11. zookeeper客户端下载与使用
  12. SpringBoot 入门知识点详解
  13. 基于私有云的数据库高可用架构实践
  14. 对String值不可变的理解以及String类型的引用传递问题
  15. 使用 VBRichClient 库
  16. 大写汉字转阿拉伯数字c语言,把中文汉字大写数字 转换成 阿拉伯数字
  17. 线性代数学习笔记——第二十四讲——向量及其线性运算
  18. DC-DC直流升压模块电源12V升24V(5A)FP5207
  19. 多旋翼无人机进阶教程
  20. linux下sqlite安装及基本使用

热门文章

  1. vue-cli3.0+webpack4中关于svg-sprite-loader踩坑,让svg组件徜徉我的web项目
  2. django3.2连接虚拟机里的openGauss
  3. ROS机器人程序设计学习笔记(Chapter2)
  4. 2016年8月2日 星期二 --出埃及记 Exodus 16:2
  5. 51单片机用STC—ISP烧录程序是一直显示“正在检测目标单片机···”冷启动板子没有反应
  6. php获取x509证书信息,创建X509证书,并获取证书密钥的一点研究
  7. Linux安装mysql详细步骤
  8. 利用python对数据进行分组统计
  9. Bugku WEB 秋名山车神
  10. 关于小数四舍五入的方式