自组织映射网络SOM

  自组织特征映射神经网络(self organizing feature map)是一种无监督的学习算法,SOM的主要目的是将任意维度的输入信号通过计算映射转变为一维或者二维的离散映射,并且以自适应的方式实现这个过程.
  自组织网络的输出层神经元之 间是互为竞争的关系,竞争成为被激活的神经元.在每一个时刻只有一个输出神经元被激活,被激活的神经元被称为获胜神经元(winning neuron).在输出层神经元中导出获胜神经元的竞争方法是:在输出层的神经元之间采用侧向连接.输出层神经元与输入层的节点之间为全连接.
  侧向连接:在自组织映射网络中,输出层的神经元构成的是一个网格状的拓扑结构,网格的每一个交叉为一个神经元,网格通常是一维的或者二维的,也可以是更高维度的.
  在竞争学习的过程中,神经元与输入层之间的连接的权值会随着输入模式(刺激)的变化选择性的进行调整,调整后的神经元(获胜神经元)的位置彼此之间变得有序.使得对于不同的输入,在网格上建立有意义的坐标系. 因此,在自组织映射网络的输出层神经元构成的网格中,每个神经元的空间位置(坐标)表示着一个输入模式包含的一个内在的统计特征.

Kononen模型

 
   kohonen模型是一个基于计算映射的SOM网络模型,它抓住了人脑中计算映射的本质特征而且保留了计算的易行性.kohonen模型还可用于数据压缩(即:数据维度的缩减). 下面主要一kohonen模型为主介绍SOMnet.

自组织映射网络实现步骤

1.对网络权值进行初始化,选择较小的初始值.
2.竞争过程;
  对每个输入信号,网络中的神经元计算他们各自的判别函数的值.判别值最大的特定神经元成为本次的获胜神经元.
3.合作过程;
   获胜的神经元决定兴奋神经元的拓扑邻域(即:获胜神经元周围的空间位置内的神经元),提供相邻神经元的合作基础.
4.权值调节
  通过对获胜神经元及其周围的兴奋神经元的权值进行调节,以增加它们对输入信号的判别函数值,随着权值的不断调整,获胜神经元对与相似的输入信号会有更强的响应(即:判别函数值越大).

竞争过程

假设网络中输入信号(数据)空间的维度数为 mm,从中随机选择一个输入信号(向量)记为x,

x = [x1,x2,x3,.....xm]T[x_1, x_2, x_3, .....x_m ]^T

输出层中的每个神经元与输入层是全连接的结构,所以每个神经元的权值向量和输入空间的维数相同,神经元 j j的权值向量记为:wjw_j

             wj=[wj1,wj2,wj3,......wjm]T    j=1,2,3,4.....lw_j = [ w_{j1}, w_{j2}, w_{j3}, ......w_{jm}]^T      j = 1,2,3,4.....l

其中 l l 是输出层网络中神经元的总数,竞争过程就是找到与向量x最佳匹配的权值向量 wjw_j .最佳匹配的意思是:对于 j=1,2,3,4.....lj = 1,2,3,4.....l,比较每一个神经元对应的权值与输入向量 x 的内积 wTjxw_j^Tx ,选择最大者,对应的神经元作为获胜神经元.(假设所有神经元的阈值相同,偏置为负)

对于匹配原则,内积wTjxw_j^Tx 最大化,这数学上可以等价于,向量 x 与 wjw_j 的欧几里的距离最小.
很容易说明这一点:首先对向量 x 和wj w_j 进行归一化,即:∥x∥\parallel x \parallel = ∥wj∥\parallel w_j \parallel = 1
向量 x与 wjw_j 的欧几里得距离:

            d2(x,wj)=(x−wj)T(x−wj)=2−2wTjxd^2(x, w_j) = (x - w_j)^T(x - w_j) = 2 - 2w_j^Tx

上面的公式中,表明最小欧几里得距离d2(x,wj)d^2(x, w_j) 就对应这最大化内积 wTjxw_j^Tx ,欧几里得距离最小也意味着向量 x 与权值向量 wjw_j 的相似度越高.所以最佳匹配原则也就是找到和输入向量最相似的权值向量.
用索引 i(x) i(x) 来标识与输入向量 x 最佳匹配的神经元, i(x) i(x) 的定义为:

               i(x)=argmin∥x−wj∥  j∈i(x) = argmin\parallel x - w_j \parallel   j \in \mathcal{A} 
              
 \mathcal{A} 为神经元网格
满足条件 argmin∥x−wj∥argmin\parallel x - w_j \parallel 的神经元 ii ,就是输入向量 x 的最佳匹配也叫获胜神经元.SOM网络就是这样通过竞争过程将连续输入空间映射到神经元网格的离散输出空间中.根据网络的应用不同,网络的响应可能是获胜神经元的标号(它在网格中的坐标),或者是在欧几里得的距离的意义下与输入向量最相似的权值向量.

合作过程

在竞争过程中产生的获胜神经元位于兴奋神经元拓扑邻域的中心位置.
怎样定义一个神经生物学上的拓扑邻域?
  在神经生物学中有证据证明,一个获胜神经元倾向于激活它紧接着的邻域内的神经元而不是隔得很远的神经元.所以对于获胜神经元的拓扑邻域按照侧向距离光滑地缩减.具体的,用 hj,ih_{j,i} 表示以获胜神经元为中心的拓扑邻域且包含这一组兴奋(合作)神经元,jj 表示一个输出神经元,设 di,jd_{i,j} 表示获胜神经元和兴奋神经元之间的距离.假设拓扑邻域 hj,ih_{j,i} 是一个单峰函数,与 di,jd_{i,j} 大小有关,获胜神经元与兴奋神经元之间的距离越小,兴奋神经元受到的刺激(影响)就越大.拓扑邻域 hi,jh_{i,j} 也可以表示兴奋神经元受到影响的程度.
  单峰函数hj,ih_{j,i} 满足两个要求:
  1.对于单峰函数 hi,jh_{i,j} ,在 di,j=0d_{i,j} = 0 和 dj,i=0 d_{j,i} = 0,获胜神经元 ii 处达到最大值.
  2. hi,jh_{i,j} 的幅值随着距离di,jd_{i,j} 的增加而减小,距离趋于无穷大时幅值趋于0;
高斯函数刚好满足这些要求:

            hj,i(x)=exp(−d2j,i2σ2)  j∈ h_{j,i(x)} = exp( - \frac{d_{j,i}^2}{2 \sigma^2})    j \in \mathcal{A} 

i(x) i(x) 为获胜神经元的位置(在输出神经元网格中的坐标), j 是神经元在网格中的位置,d2j,id_{j,i}^2 是其他神经元距离获胜神经元的距离,σ \sigma  是拓扑邻域的有效宽度,它度量了靠近获胜神经元的兴奋神经元在学习过程中的参与程度.由此可见邻域函数依赖于获胜神经元和兴奋神经元在输出空间上的位置距离,不依赖于原始输入空间的距离度量.
在二维网格的情况下 d2i,j=∥rj−ri∥d_{i,j}^2 = \parallel r_j - r_i \parallel
rj r_j 是兴奋神经元在输出网格中的位置向量,rir_i 是获胜神经元在输出网格中的位置向量.
在SOM网络中还有一个特征是拓扑邻域的大小随着时间收缩.这要求拓扑邻域函数 hi,jh_{i,j} 的有效宽度 σ\sigma 随着时间减小来实现.对于 σ\sigma 依赖与时间 n 流行的选择是:

            σ(n)=σ0exp(−nτ1)  n=1,2,3.... \sigma(n) = \sigma_0 exp(\frac{-n}{ \tau_1} )   n = 1, 2, 3....

σ0 \sigma_0 是 σ\sigma 的初始值,τ1 \tau_1 是一个时间常数;
加入时间依赖的拓扑邻域定义为:

            hj,i(n)=exp(−d2j,i2σ(n)2)   n=1,2,3.... h_{j,i}(n) = exp(\frac{-d_{j,i}^2}{2 \sigma(n) ^2})     n = 1,2,3....
            
在网络进行学习的初始阶段,拓扑邻域 hi,jh_{i,j} 应该包含以获胜神经元为中心的所有神经元,然后随着时间 n (即:迭代的次数增加)慢慢收缩.宽度 σ(n)\sigma(n) 以指数下滑,拓扑邻域也一相应的方式收缩.hj,i h_{j,i} 会减少到仅有围绕获胜神经元的少量邻居神经元或者减少到只剩下获胜神经元.
在网络初始阶段 σ0 \sigma_0 的初始之为输出网格的半径,时间常数为:τ1=1000log(σ0) \tau_1 = \frac{1000}{log(\sigma_0)}(1000不是固定的,也可以更大)

自适应过程

自组织网络的神经元的权值 wjw_j 随着输入向量 x 的变化而改变.
n 轮的迭代:
  1.从训练数据中,随机选择一个向量作为输入向量 x;
  2.竞争过程,确定一个获胜神经元以及神经元在输出网格中的位置向量(拓扑邻域的中心位置);
  3.合作过程,在 n 时刻确定拓扑邻域的有效半径内所有的兴奋神经元,(每一轮的训练中,拓扑邻域 hj,i(n) h_{j,i}(n) 和有效半径(随着时间 n 衰减))
  4.权值更新:
        
        wj(n+1)=wj(n)+η(n)(x(n)−wj(n))   j∈[hj,i(n)] w_j(n+1) = w_j(n) + \eta(n) (x(n) - w_j(n))    j \in \mathcal{A}[h_{j,i}(n)]
  
  j∈[hj,i(n)] j \in \mathcal{A}[h_{j,i}(n)]代表在 n 时刻拓扑邻域的有效半径内所有的兴奋神经元(含获胜神经元)
  η \eta 为学习效率参数,学习效率也是随着时间逐渐衰减的:

            η(n)=η0exp(−nτ2)  n=1,2,3..... \eta(n) = \eta_0 exp(\frac{-n}{\tau_2} )   n = 1,2,3 .....

τ2 \tau_2 是另一个时间常数,eta0 eta_0 是学习效率的初始值,一般设为0.1然后随着时间 n 递减,但是永远不等于零.
权值更新的公式,实际上是在将获胜神经元和拓扑邻域内的兴奋神经元的权值向量向,向输入向量 x移动,随着训练数据的重复出现,拓扑邻域内的网络权值向量的分布会趋于服从输入向量的分布.网络中的相邻神经元的权值向量会很相似.

SOM算法小结

1.初始化,对初始权值向量 wj w_j 选择随机的值初始化,选择较小的权值;
2.取样,随机从输入空间选取样本 x ;
3.相似性匹配,在时间 n 时刻根据最小距离准则找到最佳匹配(获胜神经元) i(x) i(x) ;

               i(x)=argmin∥x−wj∥  j∈[1,2,3,...l]i(x) = argmin\parallel x - w_j \parallel   j \in [1,2,3, ...l ] 

4.更新权值,通过更新公式调整所有神经元的权值;
               
               wj(n+1)=wj(n)+η(n)(x(n)−wj(n)) w_j(n+1) = w_j(n) + \eta(n) (x(n) - w_j(n))

5.重复2,3,4步骤,知道特征映射不再发生明显变化为止;

自组织映射网络SOMnet相关推荐

  1. 自组织映射网络(SOM)+Kohonen自组织网络

    自组织映射网络(SOM)+Kohonen自组织网络 SOM算法总结: 我们有一个空间连续的输入空间,其中包含我们的输入向量.我们的目的是将其映射到低维的离散输出空间,其拓扑结构是通过在网格中布置一系列 ...

  2. 深度学习 自组织映射网络 ——python实现SOM(用于聚类)

    深度学习 自组织映射网络 --python实现SOM(用于聚类) 摘要 python实现代码 计算实例 摘要 SOM(Self Organizing Maps ) 的目标是用低维目标空间的点来表示高维 ...

  3. 自组织映射网络(SOM)如何解决TSP问题

    本文仅介绍思路,不进行实践. 以3个城市为例,假设给定的TSP问题中城市是以坐标的形式给出,那么坐标是一个二维的向量.从而我们设计一个SOM网络如下: 我们希望做到的是,在训练完成后,每个城市(黑色) ...

  4. Matlab代码实现SOM(自组织映射)算法

    som可用于聚类,图像分割等,由于论文需要matlab实现了som. %som实现 %2016-11-12 %by wangbaojia % som原理及参数说明 % 1.竞争:匹配最佳神经元---- ...

  5. R语言实现SOM(自组织映射)模型(三个函数包+代码)

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- SOM自组织映射神经网络模型 的R语言实现 笔 ...

  6. 数据挖掘学习——SOM网络聚类算法+python代码实现

    目录 1.SOM简述 2.SOM训练过程 (1)初始化 (2)采样(抽取样本点) (3)竞争 (4)合作和适应(更新权重值) (5)重复 3.python 代码实现 (1)初始化 (2)计算样本点和权 ...

  7. 实验---采用SOM网络进行聚类

    1.SOM网络简介 自组织特征映射网络SOFM又称自组织映射网络SOM,是一种自组织竞争神经网络,一个神经网络接受外界输入模式时,将会分为不同的对应区域,各区域对输入模式具有不同的响应特征,而且这个过 ...

  8. 无监督算法——自组织映射算法(Self-Organizing Map , SOM)

    Kohonen提出了一种神经网络模型.   自组织映射神经网络, 即Self Organizing Maps (SOM), 可以对数据进行无监督学习聚类. SOM是一种比较简单的神经网络,他不像BP网 ...

  9. 神经网络(BP神经网络、RBF网络、模拟退火算法、HOPFIELD神经网络、Botzmann机)

    神经网络 学习.笔记 神经网络发展 多层前馈神经网络 RBF径向基函数网络 ART自适应谐振理论网络 SOM 自组织映射网络 级联相关网络 Elman网络循环神经网络 Botzmann机(引入较多其他 ...

  10. 第三十三课.一些经典的优化策略与神经网络变种

    目录 全局最优与局部最优 Hebb学习规则 常用的三种优化技巧 补充内容:快照集成 补充内容:神经网络剪枝 经典网络变种 小波神经网络 RBF网络 ART网络 SOM网络 Hopfield网络 基于遗 ...

最新文章

  1. 【网络】TCP基础总结
  2. Object类 任何类都是object类的子类 用object对象接收数组 object类的向上向下转型...
  3. 【吐血整理】用java编写一个登陆界面
  4. spring文件下载记录
  5. 视觉直观感受7种常用的排序算法
  6. JS获取元素属性和自定义属性
  7. 复试计算机网络与软件工程,2018华南理工大学软件工程复试经验贴
  8. UC浏览器电脑版怎么开启免费WiFi
  9. Python Cookbook手记II
  10. 计算机兴趣小组活动总结,兴趣小组活动总结优秀范文
  11. 2018毕业第一份工作--技术支持
  12. 卧底软件:帮助公司找出“内奸”
  13. GetLastError()函数返回的值及含义
  14. javaScript和html的区别与联系
  15. 基于 Hive 构建数据仓库
  16. 转载——***《体育之研究》
  17. php mysql好学吗_PHP+MySQL好不好学?
  18. 电脑录音软件怎么录音
  19. php ucenter单点登录,UCenter的应用整合与单点登录分析
  20. 单词小助手——结构化程序设计

热门文章

  1. php 日志库,这可能是php世界中最好的日志库——monolog
  2. 均衡发展学校计算机室解说词,迎接省均衡发展学校解说词
  3. Error running ‘Tomcat x.x.xx‘: Address localhost:xxxx is already in use
  4. 【转】IDEA类和方法注释模板设置(非常详细)
  5. [ASP.NET MVC 小牛之路]08 - Area 使用
  6. WPF: 自动设置Owner的ShowDialog
  7. 使用XMLHTTP Request Object获取服务器数据
  8. 微软利用升级来监控你的电脑--删除方法
  9. nginx源码分析之线程池
  10. Java调用Memcache入门