利用ANN作图——自组织特征映射网络(SOFM)探究及实现

在研究生的《人工智能》课堂上学习了利用人工神经网络(ANN)解决问题的基本思想与方法,在学习了自组织特征映射网络(SOFM)之后,老师提出了这么一个问题:
如何利用人工神经网络的方法将如左图一张包含随机像素的图片变成右图一张貌似有规律的抽象派图片?本博文选取自组织特征映射网络的方法,实现其算法的 Python 程序,得到了初步的实验效果图。
完整代码可在 @DiamonJoy下载
1. 自组织特征映射网络
自组织特征映射网络(Self-Organizing Feature Map)只有两层:输入层和竞争层,竞争层神经元的排列有多种形式:一维线阵、二维平面、三维栅格等等。
权值调整方法是在胜者为王基础上改进的,即优胜领域内的神经元都可以调整权值。理论上应该是离胜者越近,学习率的越大。优胜领域开始定的很大,随着训练次数的增加,最终应该收缩到0。
SOFM 分为训练阶段和工作阶段,要训练阶段,权向量被训练为输入样本空间的聚类中心。在工作阶段,当输入向量与某个竞争层的内某权值相似时,自然会被分到对应的聚类上去。因此SOFM可用作模式分类器。注意当输入模式在训练集中从未出现过时,只能将它归入最接近的模式分类中去。
2. 输出层
输出神经元的排列结构一般要反应实际问题的物理意义。例如对于旅行商问题,二维平面比较直观;对于一般分类问题,一维线阵意义明确且结构简章;对于机械手臂控制问题,用三维栅格更能反应其空间轨迹特征。
在此问题中,由于输出是一张图片,因此定义与输出图片尺寸相同的 M×N 的全互连神经元作为输出层,输出值为 RGB 权重值:
3. 权值初始化
一种简单易行的方法是从训练集中随机抽取 m 个输入样本作为初始权值,另一种方法是先计算全体输入向量的质心,再在质心的基础上叠加小随机值作为初始权向量。
本文采用随机初始权值,即对应图片为以下效果:
4. 优胜领域
优胜领域的设计原则是不断缩小,通常凭借经验,下面给出两种计算方法:
在本文中,采用第一种与迭代次数成线性关系的方法:
# 计算领域范围半径
R2=(int)(((float)(self.radius)*(1.0-times)/2.0))+1
5. 学习率
η(t) 在训练开始时取很大,之后快速下降,这样有利于快速捕捉到输入向量的大致结构。然后 η(t) 又在较小的值上缓降至趋于0的值,这样可以精细地调整权值,使之符合输入空间的样本分布结构。比如可用下式:
同时将领域内的神经元相对中心竞争元的距离考虑,得到调整后的学习率:
# 计算到中心点的距离并归一化
outer=Node(i,j)
distance=self.distance(center,outer)
distance/= d_normalize
# 度量学习率
t=(float)(exp(-1.0*distance**2/0.15))
# 计算随迭代次数减少的程度
t/=(times*4.0+1.0)

6. 实验效果
我们采用三种图片作为样本输入,每次从样本图片随机选取像素点作为输入值,接着获取最佳竞争神经元,然后更新竞争元及其领域的权值,迭代一定次数后输出图片,流程如下:

    # 循环迭代while(True):if times<1.0:# 获取随机样本random_x=randint(0,myimage_with-1)random_y=randint(0,myimage_height-1)r_sample=mypix[random_x,random_y]# 获取最优竞争者bmu_loc=mySom.get_bmu(r_sample)print u"-----------"+str(int(100*times))+u"%"+u"-----------"print u"sample.x:",random_x,u"sample.y:",random_y,u"sample.R:",r_sample[0],u"sample.G:",r_sample[1],u"sample.B:",r_sample[2]print u"bmu.x:",bmu_loc.X,u"bmu.y:",bmu_loc.Y,u"bmu.R:",bmu_loc.R,u"bmu.G:",bmu_loc.G,u"bmu.B:",bmu_loc.B# 更新领域值mySom.scale_neighbors(bmu_loc,r_sample,times)print u""# 更新当前迭代次数times+=T_INCelse:print u"-----------"u"100%"+u"-----------"print u"程序结束"break

输入:

  

输出:
  

利用ANN作图——自组织特征映射网络(SOFM)探究及实现相关推荐

  1. 机器学习 竞争神经网络与自组织特征映射神经网络(SOFM)

    本文按照 案例-分析-代码-原理 四段式进行介绍,为便于有一定理论基础的童鞋进行学习,将原理以链接其他博客的形式给出,有兴趣的童鞋可以跳转进行学习和推敲. [案例介绍]利用竞争神经网络和自组织特征隐射 ...

  2. 【神经网络】自组织特征映射网络(SOM)

    自组织特征映射网络(SOM) Self-Organizing Feature Map Neural Networks BP学习算法是一种典型的有监督学习算法,特点:每一个输入都有一个对应的理想输出 自 ...

  3. 什么是自组织特征映射网络?

    什么是自组织特征映射网络?

  4. 自组织特征映射(SOFM或SOM)网络解决旅行商问题(TSP)

    自组织特征映射(Self-Organizing Feature Map)网络介绍: 由输入层,输出层神经元节点构成的神经网络(由输入层,隐层神经元节点构成的神经网络) 无监督学习 学习准则是胜者为王学 ...

  5. SOM -- 自组织特征映射网络

    SOM的优缺点 优点:SOM由于地形序的影响,最后产生的聚类结果具有比较高的的可视化和可解释性,而且与K-Means不同的是,由于每次增量的更新所有的质心,因此他受初始质心选取的影响很小. 缺点:没有 ...

  6. 自组织特征映射神经网络(SOFM)

    1981年芬兰 Helsink 大学的 T·Kohonen 教授提出一种自组织特征映射网 (Self-Organizing Feature Map , SOFM ), 又称 Kohonen 网 . K ...

  7. 机器学习之自组织特征映射神经网络(SOM)

    SOM是一类"无监督学习"模型,一般的用法是将高维的input数据在低维的空间表示,因此SOM天然是一种降维方法.除了降维,SOM还可以用于数据可视化,以及聚类等应用中[2]. 定 ...

  8. SOFM自组织特征映射第一步:选取样本点

    1.选取三种指数,均为栅格数据,进行栅格裁剪统一大小,并归一化处理 栅格裁剪步骤:数据管理工具->栅格->栅格处理->裁剪 归一化步骤:Spatial Analyst工具->叠 ...

  9. 关于SOM(self-organized map)自组织特征映射神经网络的理解

    som网络结构 对SOM进行理解,首先要明确它的定位. 首先它是神经网络的一种,那么就有属于神经网络共同的性质.比如输入层,输出层.刚好,SOM网络只有这两层. (上面两张是典型的som网络结构图) ...

最新文章

  1. 计算机应用基础中什么是桌面,福师《计算机应用基础》在线作业二 Windows中进行系统设置的工具集是 用户可以根据自己的爱好更改显示器 键盘 鼠标器 桌面等硬件的设置...
  2. 正则满足中文的顿号_常用的正则表达式、正则表达式之断言
  3. 电脑休眠和睡眠的区别_电脑休眠和睡眠有什么区别呢?小编详细告诉你
  4. kaptcha配置java_kaptcha 配置
  5. 小物件之radio单选列表
  6. PHP扩展调用C++静态库
  7. springboot整合mysql5.7_详解SpringBoot整合MyBatis详细教程
  8. spring5.0学习笔记8
  9. Microsoft Store 微软应用商店0x80131500解决方案
  10. 牛掰!某厂风控大佬整理的一套黑客学习思维导图及教程!
  11. 耐福-NTP8849音频功放芯片有哪些功能?
  12. C语言2--进制和运算符
  13. Thread多线程-(最容易被问到的面试题)
  14. WebRTC 非常适用于智能家庭安防摄像头
  15. [日常技能]手机投屏到电视的5种方法
  16. 拿番茄炒鸡蛋来讲解一下大数据项目的流程
  17. 怎么解决localhost打不开
  18. 知心世界姐王瑞平:谷传民与大衣哥朱之文是沟通问题不是人品问题
  19. 【巴法云】开源安卓App控制ESP8266,通过MQTT协议,APP Inventor 开发
  20. Google台湾工程师团队扩编 大举进军大学校园征才

热门文章

  1. Python机器学习算法之AdaBoost算法
  2. Any、AnyObject、as
  3. Linux root 切换oracle用户 , 解锁账号
  4. 小米汽车还没影,雷军要先学马斯克做网红?
  5. 商米设备开发之-支付
  6. 墨西哥奢华烈酒品牌Clase Azul品牌标识换新;麦当劳中国第十二次荣膺“中国杰出雇主”认证 | 知消...
  7. 关于 AMP,Webnovel 都做了些什么?
  8. 4K VMware ubuntu 虚拟设置
  9. Invalid number format for port number
  10. 百度二面和京东二面+三面面经