转发:https://blog.csdn.net/YongJinJiang/article/details/79644213
参考:https://www.cnblogs.com/wt869054461/p/6683181.html

ART 自适应共振理论神经网络关键词:
【分类!分类!分类!】比较层、识别层、内星权向量{w ji}、外星权向量{t ji}、比较、警戒阈值p

  • 问题:人类智能的特性之一是能在不忘记以前学习过的事物的基础上继续学习新事物。这项特性是目前多数类神经网络模型所欠缺的,这些类神经网络模型(例如反向传播类神经网络)一般都需要事先准备好的训练模式集进行训练。当训练完毕之后,神经元之间的连接强度就确定了,除非再有新的训练动作发生,否则这些连接强度不会再有任何改变。当有新模式出现时,这些类神经网络模型只能由用户将新模式加到训练模式中,形成新的训练模式集,然后重新训练所有神经元间的连接强度,也就是旧有的知识必须重新训练一遍。这些类神经网络模型,只有记忆而没有智能,没有辨识新事件出现的能力,也没有自我学习扩充记忆的能力。

  • 发展:为了试图解决这些问题,Grossberg等人模仿人的视觉与记忆的交互运作,提出所谓自适应共振理论(Adaptive Resonance Theory,ART)。他多年来一直试图为人类的心理和认知活动建立统一的数学理论,ART就是这一理论的核心部分。随后G.A.Carpenter又与S.Grossberg提出了ART网络。

  • 介绍:ART是一种自组织神经网络结构,是无教师的学习网络。当在神经网络和环境有交互作用时, 对环境信息的编码会自发地在神经网中产生, 则认为神经网络在进行自组织活动。ART不像其它类神经网络模型,分为训练阶段及测试阶段,需事先准备好训练模式集及测试模式集。

  • 重点:
    1. ART时时处在训练状态及测试状态。
    2. 当它开始工作的时候可以不用确定到底需要多少个神经元,先给几个就行,或者根本不用给它。ART的学习就像小孩成长一样,头脑也会同步长大。
    3. 当 ART发现记忆的神经元不够用时,会动态长出新的神经元去记忆新模式,形成新聚类,而不会影响到己经存在的神经元间的连接。

因此 ART 可以在不忘掉先前学习过的事物的情况下,继续学习新事物。

目前,ART 有很多版本:ART1是最早的版本,由 Carpenter 和 Grossberg 于1987 年提出,ART1 含有并行架构的主-从式算法(leader-followeralgorithm),在算法的激活及匹配函数中运用了集合运算,主要处理只含 0 与 1 的影像(即黑白)识别问题。ART2可以处理灰度(即模拟值)输入ART3具有多级搜索架构,它融合了前两种结构的功能并将两层神经网络扩展为任意多层的神经元网络。由于ART3 在神经元的运行模型中纳入了神经元的生物电化学反应机制,因而其功能和能力得到了进一步扩展。

在此我将结合实验和大家分享学习ART1模型的基本原理和学习算法。
为了进一步了解ART1网络,于是设计一组实验,按照M=4,N=25设计网络,如下图A、B、C、D所示。
按照顺序输入A、B、C、D后,得出如图所示的四幅黑白点阵图,通过改变不同的警戒阈值ρ,我们会得出怎样的分类呢?

一、问题分析

为了对四幅黑白点阵图的进行模式识别,本实验在运用ART1模型理论的基础上,将警戒阈值ρ设置为0.7和0.3两个值,分别得到不同的实验结果。这样就对ART1网络的学习过程进行了验证。

1、ART模型基本原理

人工神经网络具有存储和应用经验知识的自然特性。神经网络具有很强的鲁棒性,即使系统连接线被破坏了多达50%,它仍能以优化工作状态来处理信息。
自适应共振理论(ART)借鉴人的认知过程和大脑工作的特点,是一种模仿人脑认知过程的自组织聚类算法。在解决大量数据聚类和分类时,聚类效果好且稳定,此外还能高效利用系统的记忆资源。本次实验参考相关文献,以ART网络中的ART1模型为理论基础来实现字符识别
这种网络(图1)的输入层和输出层之间为双向连接,反馈连接权(权重向量){ t ji }记忆已学的输入模式。

网络组成:
ART1人工神经网络由两层神经元组成,分别称为比较层(输入层)和识别层(输出层)。
【类别判断】是由在【识别层】中的一个【单一神经元来作出】的,类似于大脑皮层感受区中的细胞组。
【比较层】中的神经元对【模式的输入特性】做出响应。
在这两层之间的突触连接(权值)可以根据两种不同的学习规则进行双向修改
【识别层】的神经元具有【允许竞争的抑制连接】。该网络结构还包括三个附加模块,即增益1、增益2和复位模块,如下图:

图1 ART1人工神经网络结构

  1. ART1人工神经网络的子系统包括两层具有前馈和后馈特征的神经元(比较层和识别层)

  2. 该系统决定输入数据是否与已存储的一个原型相匹配,如果匹配,就会产生共振
    监视子系统负责监测在识别层自下而上和自上而下模式之间的失配情况。
    识别层对输入矢量所做出的反应,可以比作是【通过警戒机制的】【原始输入矢量】。
    所以一定注意,输入向量和内星权重向量点积之后的结果,通过了警戒值p》》那么识别层输出的权值向量{t ji} = 原始向量!!

  3. 警戒提供了一种输入矢量与激励识别层神经元相应的聚类中心之间的距离测度:
    当警戒低于预先设置的门限值时,必须创建一个新的类别并将输入矢量存于该类别中。
    就是说,在识别层,将先前未分配的神经元分配到一个与新的输入模式相联系的新类别中。
    识别层遵循胜者取全部的原理,如果输入的数据通过了警戒,获胜的神经元(与输入数据最为匹配的一个神经元)就会被训练,以便他在特性空间中相应的聚类中心移向输入数据模式。

2、ART1模型算法的学习过程(训练过程)

  1. 网络初始化
  • 设置前向连接权的初值为W ij (0) =1 /(1 +n)
  • 取反馈连接权的初值为 t ji (0) =1,i =1,2,…, n; j =1, 2, …, m
  • 设定警戒参数ρ , 0 <ρ ≤ 1
  1. 模式输入
    将输入模式提供给输入层

  2. 匹配度计算
    使用【内星权向量】和【输入模式】来计算匹配度(或者叫激活值):

  3. 选择最佳匹配神经元【选最大值】
    选出 S j 中的最大值 S g :

  4. 相似度计算
    R层获胜神经元j∗ 通过外星送回存储模式类的典型向量T∗j ,C层输出信号给出对向量T∗j 和X的比较结果ci=t∗ij ,
    由此结果可计算出两向量的相似度为: N1=∑1nxi, N0=∑1nci

  5. 比较【警戒门限检验】
    【反馈连接权向量】与【输入模式向量】的【相似程度】是否大于预先设定的【警戒参数ρ】:
    如果,则转入第8步调整两个权值;
    如果小于警戒参数p,则向下走第7步(换其他神经元进行匹配分类)。

  6. 取消识别结果,将神经元 g排除在识别范围之外,返回第4 步。
    当所有已记忆过的神经元都不满足式(1)时,则在输出层还未规定输出值的神经元中任选一个作为输入模式 U k 的分类结果,并令这个神经元为神经元 g,进入第8步。

  7. 调整两个连接权向量

  8. 返回第②步,对下一个输入模式进行识别。

二、解决方案

1、算法设计

(1)初始化

由于前向连接权{W ij}在网络学习时,负担着对学习模式的记忆功能,为给所有的学习模式提供平等竞争的机会,{Wij}的初值全部设置为1 /(1+n),其中n为输入层单元数。
反馈连接权{t ji}最终将记忆已经学过的输入模式,其值最终为0和1二值的形式,为在开始时不丢失信息,设{ t ji }=1。ART1网络有一个特殊的参数,即警戒参数ρ,按需要设定为0<ρ< 1。为了实验顺利进行,我们在初始化中设定警戒门限p= 0.3。

(2)样本输入并计算最大Sj

依次将4个输入模式样本读取到网络的输入层矩阵,提供给网络学习。在初始状态下,所有的{Wij}都相等,故所有的Sj都相同。无论初次学习还是以后增添样本,在计算Sj时都可能产生相同的Sj。这里程序设计为选择首次出现的Sj为获胜单元,作为本次学习样本的输出单元。

(3)反馈比较

选用最终的最大Sj为输入激活值最大的神经元,但该神经元能否代表输入模式的正确分类,还要将该输入模式与所对应的反馈连接权Tj=[ t j1 , t j2 , … , t jm ]比较,如果相等,则认为本次输入与网络产生了共振,网络不用再寻找。否则,将该神经元排除在下次识别范围之外,重复寻找最大Sj。所谓共振并不一定要求输入与反馈完全相等,允许的误差由警戒参数ρ确定。

2、编程实验

   在对问题和算法进一步理解的基础上,本实验程序用python编写。首先建立N=25,M=4的网络,代码实现如下:N = 25M = 4VIGILANCE = 0.3PATTERN_ARRAY = [[1, 0, 0, 0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1],[1, 0, 0, 0,1,0,1,0,1,0,0,0,1,0,0,0,1,0,1,0,1,0,0,0,1],[1, 0, 0, 0,1,0,1,0,1,0,1,1,1,1,1,0,1,0,1,0,1,0,0,0,1],[1, 0, 0, 0,1,1,1,0,1,1,1,1,1,1,1,1,1,0,1,1,1,0,0,0,1]]

其次,本实验通过定义ART1函数将ART1模型算法写入其中,

def ART1(self,trainingPattern, isTraining):

    inputSum = 0activationSum = 0f2Max = 0reset = Truefor i in range(self.mNumClusters):self.f2[i] = 0.0for i in range(self.mInputSize):self.f1a[i] =float(trainingPattern[i])inputSum = self.get_vector_sum(self.f1a)for i in range(self.mInputSize):self.f1b[i] = self.f1a[i]for i in range(self.mNumClusters):for j in range(self.mInputSize):self.f2[i] += self.bw[i][j]* float(self.f1a[j])reset = Truewhile reset:f2Max = self.get_maximum(self.f2)if f2Max == -1:f2Max = self.mNumClustersself.f2.append(0.0)self.tw.append([1.0] * self.mInputSize)self.bw.append([1.0 / (1.0 + self.mInputSize)]* self.mInputSize)self.mNumClusters+=1for i in range(self.mInputSize):self.f1b[i] = self.f1a[i]* math.floor(self.tw[f2Max][i])activationSum = self.get_vector_sum(self.f1b)reset = self.test_for_reset(activationSum,inputSum, f2Max)if isTraining:self.update_weights(activationSum,f2Max)return f2Max

三、算法实现

1、取警戒参数设r=0.3,输入样本=[1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1],将作为第一个类,并使第一个神经元与之对应,此时=[1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1],i=1,2…25。输入样本=[1,0,0,0,1,0,1,0,1,0,0,0,1,0,0,0,1,0,1,0,1,0,0,0,1],此时,通过警戒值测试,因此将看做第一类;

2、输入样本=[1,0,0,0,1,0,1,0,1,0,1,1,1,1,1,0,1,0,1,0,1,0,0,0,1],此时,通过警戒值测试,因此,将看作第一类;

3、输入样本=[1,0,0,0,1,1,1,0,1,1,1,1,1,1,1,1,1,0,1,1,1,0,0,0,1],此时没有与第一个神经元竞争的神经元,而且不能通过警戒值测试,因此将看做新的模式,并使第二个神经元与之对应,此时。到此,网络保存了两个类。

本实验得出如下实验结果:

当r=0.3时,网络中只有两种分类:

1、取警戒参数设r=0.7,初始权值b ij=1/(1+n)=1/26,t ij=1。输入样本X 1,将X 1作为第一个类,并使第一个神经元与之对应,此时t ij = X 1,输入样本X 2,此时没有与第一个神经元竞争的神经元,而且不满足D ≥ ρ,因此将看做新的模式,并使第二个神经元与之对应,此时t i2 = X 2;

2、输入样本X 3,此时第一个与第二个神经元竞争,第一个神经元获胜,但警戒值测试失败,将其排除在下一次竞争范围之外,第二个神经元因而获胜但警戒值测试仍然失败,将X 3作为新的模式,并使第三个神经元与之对应,此时t i3 = X 3;

3、输入样本X 4,此时第三个神经元竞争获胜,并且通过警戒值测试,故认为是第三个神经元所代表的类,t i3保持不变,到此,网络保存了三个类。

本实验得出如下实验结果:

当r=0.7时,网络中存在三种分类,

四、总结

自适应共振理论(ART) 是一种自组织神经网络结构,是无教师的学习网络。当在神经网络和环境有交互作用时,对环境信息的编码会自发地在神经网中产生,认为神经网络在进行自组织活动。同时了解到了ART与其它类神经网络模型的区别,即ART 可以在不忘掉先前学习过的事物的情况下,继续学习新事物。

为了进一步理解ART模型,我们通过选取一个简单的例子来具体阐述其应用。在警戒参数分别为0.3与0.7的条件下进行实验,并选取Python计算机语言对其实现,得出结论:警戒参数越大,分类越细;警戒参数越小,分类越粗。

在程序的运行过程中,相对比较顺利,但也得承认数据测试的局限性,如选取的样本较小,警戒参数选取的过于主观性,很多未知的问题还没有发现。本人现就职于甜橙金融,对人工神经网络研究仍有余热,同时文章中存在的不足和缺陷,希望在以后有机会与大家多沟通交流。

ART网络的特点是非离线学习,即不是对输入样本反复训练后才开始运行,而是边学习边运行的实时方式,每个输出神经元可以看做一类相近样本的代表,每次最多只有一个输出神经元1。当输入样本距离某一个内星权向量较近时,代表它输出神经元才响应,通过调整警戒门限的大小,可调整模式的类数,ρ小,模式的类别少,ρ大,则模式的类别多。
用硬件实现ART I模型时,C层和R层的神经元都用电路实现,作为长期记忆的权值用CMOS电路完成。

————————————————
版权声明:本文为CSDN博主「YongJinJiang」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/YongJinJiang/article/details/79644213

神经网络模型-ART 自适应共振网络相关推荐

  1. Elman神经网络与自适应共振网络(ART)

    这几天在回过头看一些比较基础的东西,发现了两个早期研究的神经网络,Elman与ART网络,类似于上世纪80年代的hopfield神经网络,BM/RBM/DBN,RBF,SOM,以及同时期的SVM算法等 ...

  2. Visio卷积神经网络模型(三)-网络卷积层示意图

    就绘制这样的 一个卷积计算  示意图 这个的思路:就像上一篇 (二)一样,先绘制网格正方形,然后组合,然后旋转一定角度.就完成了. 这就是一个基本的思路. 下面开始 然后,去除填充,修改线框粗细和颜色 ...

  3. 代表性的神经网络模型分类

    代表性的神经网络模型: (1)BP网络:多层前馈网络,是到目前为止使用最多和最为成熟的一种 神经网络,采用最小均方差的学习方式,可用于语言综合.语言识别.白适应 控制等.缺点是仅为有导师训练,训练时间 ...

  4. 人工神经网络的典型模型,人工神经网络模型定义

    神经网络BP模型 一.BP模型概述误差逆传播(ErrorBack-Propagation)神经网络模型简称为BP(Back-Propagation)网络模型. PallWerbas博士于1974年在他 ...

  5. 神经网络模型结果怎么看,图像识别神经网络模型

    BP神经网络模型各个参数的选取问题 样本变量不需要那么多,因为神经网络的信息存储能力有限,过多的样本会造成一些有用的信息被丢弃.如果样本数量过多,应增加隐层节点数或隐层数目,才能增强学习能力. 一.隐 ...

  6. 什么是人工神经网络模型,神经网络模型可解释性

    神经网络模型 nlp是什么意思 NLP是神经语言程序学(Neuro-LinguisticProgramming)的英文缩写.在香港,也有意译为身心语法程式学的.N(Neuro)指的是神经系统,包括大脑 ...

  7. 神经网络模型的工作过程,神经网络模型训练过程

    利用人工神经网络建立模型的步骤 人工神经网络有很多种,我只会最常用的BP神经网络.不同的网络有不同的结构和不同的学习算法.简单点说,人工神经网络就是一个函数.只是这个函数有别于一般的函数.它比普通的函 ...

  8. 神经网络模型的实际案例,神经网络模型数据处理

    神经网络BP模型 一.BP模型概述误差逆传播(Error Back-Propagation)神经网络模型简称为BP(Back-Propagation)网络模型. Pall Werbas博士于1974年 ...

  9. 怎么训练神经网络模型,神经网络模型训练过程

    1.有哪些深度神经网络模型? 目前经常使用的深度神经网络模型主要有卷积神经网络(CNN) .递归神经网络(RNN).深信度网络(DBN) .深度自动编码器(AutoEncoder) 和生成对抗网络(G ...

  10. 神经网络模型画图工具,神经网络模型图怎么画

    如何用visio画卷积神经网络图.图形类似下图所示 大概试了一下用visio绘制这个图,除了最左面的变形图片外其余基本可以实现(那个图可以考虑用其它图像处理软件比如Photoshop生成后插入visi ...

最新文章

  1. 基于多源信息的深度卷积神经网络预测CircRNA疾病关联的有效方法
  2. photo.php,EasyPhoto.php
  3. 对物联网操作系统特征和定位的思考
  4. TensorFlow 使用例子-LSTM实现序列标注
  5. 剑指offer 最小的k个数
  6. wps多人协作后怎么保存_蜂蜜开封后能放多久?蜂蜜开封后怎么保存?蜂蜜存放要注意事项...
  7. python做什么方向好_Python工程师的择业方向有哪些?你想好做什么工作了吗?
  8. c++获取输入数字的位数/获取位数并且将其存入数组中/获取位数存入数组并且利用它解决实际问题
  9. 肌电信号的包络matlab程序_基于matlab的肌电信号处理程序
  10. 基于CXF的WebService的安全验证问题
  11. Codeforces Round #187 (Div. 2) D
  12. ISIS 7 Professional运行报错解决方案
  13. poi合并docx文档
  14. python docx 设置字体大小_python docx字体设置
  15. 相信我,我们离成为废物阶级不远了!
  16. linux桌面网络连接是个X,Xbrowser如何运行多个X桌面
  17. Android自定义日历控件
  18. 《王牌特工2:黄金圈》观后感
  19. 区块链相关的关键概念
  20. 多模块项目-项目复制出现Module xx must not contain source root xx The root already belongs to module xx

热门文章

  1. 学3D建模需要有美术功底吗?
  2. ubuntu18.04查看网卡mac地址
  3. 2022年基站查询、WiFi查询、GPS/经纬度查询的网站与API接口
  4. matlab实现色彩迁移,图像的色彩风格迁移
  5. 简述MFC程序生与死
  6. maven 打包指定依赖包_maven 打包包含依赖
  7. error Target dll has been cancelled debugger aborted
  8. 红米note5刷android,红米Note5 安卓9.0 解锁Bootloader-刷入第三方TWRP_Recovery 获取完整ROOT教程...
  9. ESP8266刷入MicroPython固件教程
  10. 【独家】一文读懂文字识别(OCR)