1987年,美国学者Robert Hecht-Nielsen提出了对偶传播神经网络模型 (Counter Propagation Network,CPN),CPN最早是用来实现样本选择匹配系统的。CPN 网能存储二进制或模拟值的模式对,因此这种网络模型也可用于联想存储、模式分类、函数逼近、统计分析和数据压缩等用途。

1.    网络结构与运行原理

网络结构如图所示,各层之间的神经元全互联连接。从拓扑结构看,CPN网与三层BP网络相近,但实际上CPN是由自组织网和Grossberg外星网组合而成。隐层为竞争层,采用无导师的竞争学习规则,而输出层为Grossberg层,采用有导师信号的Widrow-Hoff规则或Grossberg规则学习。

网络各层按两种学习规则训练好之后,运行阶段首先向网络送入输入变量,隐含层对这些输入进行竞争计算,获胜者成为当前输入模式类的代表,同时该神经元成为如下图(a)所示的活跃神经元,输出值为1而其余神经元处于非活跃状态,输出值为0。竞争取胜的隐含神经元激励输出层神经元,使其产生如下图(b)所示的输出模式。由于竞争失败的神经元输出为0,不参与输出层的整合。因此输出就由竞争胜利的神经元的外星权重确定。

2.    学习算法

网络学习分为两个阶段:第一阶段是竞争学习算法对隐含层神经元的内星权向量进行训练;第二阶段是采用外星学习算法对隐含层的神经元的外星权向量进行训练。

因为内星权向量采用的是竞争学习规则,跟前几篇博文所介绍的算法步骤基本类似,这里不做介绍,值得说明的是竞争算法并不设置优胜临域,只对获胜神经元的内星权向量进行调节。

下面重点介绍一下外星权向量的训练步骤:

(1)   输入一个模式以及对应的期望输入,计算网络隐节点净输入,隐节点的内星权向量采用上一阶段中训练结果。

(2)   确定获胜神经元使其输出为1。

(3)   调整隐含层到输出层的外星权向量,调整规则如下:

β为外星规则学习速率,为随时间下降的退火函数。O(t)为输出层神经元的输出值。

由以上规则可知,只有获胜神经元的外星权向量得到调整,调整的目的是使外星权向量不断靠近并等于期望输出,从而将该输出编码到外星权向量中。

3.    改进CPN网

(1)   双获胜神经元CPN

指的是在完成训练后的运行阶段允许隐层有两个神经元同时竞争获得胜利,这两个获胜神经元均取值为1,其他神经元则取值为0。于是有两个获胜神经元同时影响网络输出。下图给出了一个例子,表明了CPN网能对复合输入模式包含的所有训练样本对应的输出进行线性叠加,这种能力对于图像的叠加等应用十分合适。

(2)   双向CPN网

将CPN网的输入层和输出层各自分为两组,如下图所示。双向CPN网的优点是可以同时学习两个函数,例如:Y=f
(X);X′=f
(Y′)

当两个函数互逆时,有X =X′,Y
=Y′。双向CPN可用于数据压缩与解压缩,可将其中一个函数f作为压缩函数,将其逆函数g作为解压缩函数。

事实上,双向CPN网并不要求两个互逆函数是解析表达的,更一般的情况是f和g是互逆的映射关系,从而可利用双向CPN实现互联想。

4.    CPN网应用

下图给出了CPN网用于烟叶颜色模式分类的情况,输入样本分布在下图(a)所示的三维颜色空间中,该空间的每个点用一个三维向量表示,各分量分别代表烟叶的平均色调H,平均亮度L和平均饱和度S。可以看出颜色模式分为4类,分别对应红棕色,橘黄色,柠檬色和青黄色。下图(b)给出了CPN网络结构,隐层共设了10个神经元,输出层设4个神经元,学习速率为随训练时间下降的函数,经过2000次递归之后,网络分类的正确率达到96%。

*************************************

2015-8-15

艺少

对偶传播神经网络(CPN)的更多相关文章

  1. AI 反向传播神经网络

    反向传播(Back Propagation,简称BP)神经网络

  2. Python3 反向传播神经网络-Min-Batch(根据吴恩达课程讲解编写)

    # -*- coding: utf-8 -*- """ Created on Sat Jan 20 13:47:54 2018 @author: markli " ...

  3. 【原】Coursera—Andrew Ng机器学习—编程作业 Programming Exercise 4—反向传播神经网络

    课程笔记 Coursera—Andrew Ng机器学习—课程笔记 Lecture 9_Neural Networks learning 作业说明 Exercise 4,Week 5,实现反向传播 ba ...

  4. 第四节课-反向传播&&神经网络1

    2017-08-14 这节课的主要内容是反向传播的介绍,非常的详细,还有神经网络的部分介绍,比较简短. 首先是对求导,梯度的求解.反向传播的核心就是将函数进行分解,分段求导,前向计算损失,反向计算各个 ...

  5. 【神经网络】BP反向传播神经网络

    BP算法细节 参数说明:假设有n层.J表示代价函数,和上面的E是同样的意思,只不过用不同的字母写而已. 分析:要想知道第l层的第i个结点的残差,必须知道层已经计算出来了残差,你只要把后面一层的每个结点 ...

  6. 反向传播神经网络(BP)

    实验部分: ①输入.输出矢量及问题的阐述 由题意输入变量取值范围为e={-2,-1,0,1,2}和ec={-2,-1,0,1,2},则输入矢量有25种情况,分别如下所示: 则由T=int((e+ec) ...

  7. 人工神经网络ANNs

    参考: 1. Stanford前向传播神经网络Wiki 2. Stanford后向传播Wiki 3. 神经网络CSDN blog 4. 感知器 5. 线性规划 6. Logistic回归模型 内容: ...

  8. BP神经网络

    秋招刚结束,这俩月没事就学习下斯坦福大学公开课,想学习一下深度学习(这年头不会DL,都不敢说自己懂机器学习),目前学到了神经网络部分,学习起来有点吃力,把之前学的BP(back-progagation ...

  9. R语言-神经网络包RSNNS

    code{white-space: pre;} pre:not([class]) { background-color: white; }if (window.hljs && docu ...

随机推荐

  1. windows api多线程

    windows api多线程  原文地址:https://www.cnblogs.com/flowingwind/p/8452693.html 线程是程序中一个单一的顺序控制流程.在单个程序中同时运行 ...

  2. QSetting介绍

    简介 QSettings类提供了持久的跨平台应用程序设置. 用户通常期望应用程序记住它的设置(窗口大小.位置等)所有会话.这些信息通常存储在Windows系统注册表,OS X和iOS的属性列表文件中. ...

  3. ASM磁盘组的监控

    ASM磁盘组的监控可以使用oracle数据库查询,需要使用到的是sql语句和oracle数据库的相关操作. 还可以使用命令行进行查询,然后用awk进行文本拆分,拿到需要的值.这个需要使用到的是sudo ...

  4. 博客系统的使用(typecho、WordPress等等)

    一.下载,解压,安装 二.Apache配置虚拟主机,(host文件修改) 三.开启php.ini中pdo类型的扩展适配数据库 四.按照指示页面配置 五.操作控制面板和blog前台

  5. Luogu4931 情侣?给我烧了!(加强版)【生成函数】

    题目链接:洛谷 大家一起 日 ♂ % EI 设\(D_i\)表示\(k=0\)时的答案.那么 \[ f(n,k)=\binom{n}{k}^2D_{n-k}k!2^k \] 意义是选择\(k\)对情侣 ...

  6. const关键字与数组、指针

    目录 const关键字 const修饰数组 const修饰指针 用两个const修饰指针 @ 开始回顾C基础知识.C中使用指针是很危险的事情,一个不慎就会造成程序崩溃,因此对于传入函数的参数进行保护就 ...

  7. sed 替换文件内容

    方法1:sed -i 's/被替换的内容/要替换成的内容/' file 方法2:sed 's/被替换的内容/要替换成的内容/g' file > file.out:mv file.out file ...

  8. [内网渗透]lcx端口转发

    0x01 简介 lcx是一款端口转发工具,有三个功能: 第一个功能将本地端口转发到远程主机某个端口上 第二个功能将本地端口转发到本地另一个端口上 第三个功能是进行监听并进行转发使用 Lcx使用的前提是 ...

  9. listview1 保存和读取 listViewItems保存为txt

       /*          *   保存原理          *   将LISTVIEW视为一行一行的字符串          *   将所有的行合并成一个字符串 然后保存为TXT文件       ...

  10. PostgreSQL学习笔记(九) 用户、角色、权限管理

    PostgreSQL是一个多用户数据库,可以为不同用户指定允许的权限. 角色PostgreSQL使用角色的概念管理数据库访问权限. 根据角色自身的设置不同,一个角色可以看做是一个数据库用户,或者一组数 ...