zoukankan      html  css  js  c++  java
  • 自组织神经网络介绍:自组织特征映射SOM(Self-organizing feature Map),第二部分

    上一篇介绍了一些自组织神经网络的基本概念,第一部分,这一篇讲下SOM的概念和原理,是本文的第二部分。

    1、SOM背景

    1981年芬兰Helsink大学的T.Kohonen教授提出一种自组织特征映射网,简称SOM网,又称Kohonen网。Kohonen认为:一个神经网络接受外界输入模式时,将会分为不同的对应区域,各区域对输入模式具有不同的响应特征,而且这个过程是自动完成的。自组织特征映射正是根据这一看法提出来的,其特点与人脑的自组织特性相类似。

    2、SOM典型结构

    典型SOM网共有两层,输入层模拟感知外界输入信息的视网膜,输出层模拟做出响应的大脑皮层。(讲之前再提醒一句,这里介绍的只是经典形式,但是希望读者和我自己不要被现有形式束缚了思维,当然初学者,包括我自己,先从基本形式开始理解吧)。 下图是1维和2维的两个SOM网络示意图。

    这里写图片描述

    SOM网的权值调整域
    和上一节介绍的WTA策略不同,SOM网的获胜神经元对其邻近神经元的影响是由近及远,由兴奋逐渐转变为抑制,因此其学习算法中不仅获胜神经元本身要调整权向量,它周围的神经元在其影响下也要程度不同地调整权向量。这种调整可用三种函数表示,下图的bcd。

    这里写图片描述

    Kohonen算法:基本思想是获胜神经元对其邻近神经元的影响是由近及远,对附近神经元产生兴奋影响逐渐变为抑制。在SOM中,不仅获胜神经元要训练调整权值,它周围的神经元也要不同程度调整权向量。常见的调整方式有如下几种[2]:

    • 墨西哥草帽函数:获胜节点有最大的权值调整量,临近的节点有稍小的调整量,离获胜节点距离越大,权值调整量越小,直到某一距离0d时,权值调整量为零;当距离再远一些时,权值调整量稍负,更远又回到零。如(b)所示
    • 大礼帽函数:它是墨西哥草帽函数的一种简化,如(c)所示。
    • 厨师帽函数:它是大礼帽函数的一种简化,如(d)所示。

    以获胜神经元为中心设定一个邻域半径R,该半径圈定的范围称为优胜邻域。在SOM网学习算法中,优
    胜邻域内的所有神经元均按其离开获胜神经元的距离远近不同程度地调整权值。 优胜邻域开始定得很大,但其大小随着训练次数的增加不断收缩,最终收缩到半径为零。

    3、SOM Kohonen 学习算法

    算法总结如下:

    Kohonen学习算法

    1. 初始化,对竞争层(也是输出层)各神经元权重赋小随机数初值,并进行归一化处理,得到w^j,j=1,2,...m;建立初始优胜领域Nj(0);学习率η初始化;
    2. 对输入数据进行归一化处理,得到X^p,j=1,2,...P,总共有P个数据;
    3. 寻找获胜神经元:从X^p与所有w^j的内积中找到最大j
    4. 定义优胜邻域Nj(t)j为中心确定t时刻的权值调整域,一般初始邻域Nj(0)较大,训练时Nj(t)随训练时间逐渐收缩;
    5. 调整权重,对优胜邻域Nj(t)内的所有神经元调整权重:

      wij(t+1)=wij(t)+η(t,N)[xPiwij(t)]i=1,2,...,njNj(t)

      其中i是一个神经元所有输入边的序标。式中,η(t,N)是训练时间t和邻域内第j个神经元与获胜神经元j之间的拓扑距离N的函数,该函数一般有如下规律:
      这里写图片描述

    6. 结束检查,查看学习率是否减小到0,或者以小于阈值。

    第(5)点的规律是说,随着时间(离散的训练迭代次数)变长,学习率逐渐降低;随着拓扑距离的增大,学习率降低。学习率函数的形式一般可以写成这样:η(t,N)=η(t)eN,其中η(t)可采用t的单调下降函数也称退火函数,比如下面这些形式都符合要求:
    这里写图片描述

    第(4)点中,j*的领域Nj(t)是随时间逐渐收缩的,比如说下图,其中8个邻点称为Moore neighborhoods,6个邻点的称为hexagonal grid。随着t的增大,邻域逐渐缩小。
    这里写图片描述

    本篇最后看一个SOM工作原理示意图,首先给定训练数据(绿点)和神经元权重初始值(红花)

    这里写图片描述

    通过迭代训练之后,神经元权重趋向于聚类中心;
    这里写图片描述

    Test阶段,给定数据点(黄点),基于WTA策略,用内积直接算出和哪个神经元最相似就是分到哪个类。
    这里写图片描述

    算法流程总结

    这里写图片描述

    OK,本篇就到这里,描述了SOM的基本原理与训练方法;下一篇将讲解SOM实际应用的例子,也是SOM介绍的最后一部分。

    参考资料

    [1] https://en.wikipedia.org/wiki/Self-organizing_map
    [2] 百度文库,《SOM自组织特征映射神经网络》
    [3] 《第四章 自组织竞争型神经网络》, PPT

  • 相关阅读:
    设计模式(17) 访问者模式(VISITOR) C++实现
    Effective C++(20) 继承与面向对象设计
    Google论文(1) GFS:Google文件系统
    设计模式(16) 观察者模式(OBSERVER)C++实现
    海量数据处理面试题(2) 将用户的query按出现频度排序
    海量数据处理面试题(1) 找出两文件种包含的相同的url
    深入探索C++对象模型(1) 关于对象(思维导图)
    服务器编程入门(13) Linux套接字设置超时的三种方法
    技术笔记:Indy的TIdSMTP改造,解决发送Html和主题截断问题
    技术笔记:Delphi多线程应用读写锁
  • 原文地址:https://www.cnblogs.com/yihaha/p/7265305.html
Copyright © 2011-2022 走看看