神经网络(二)
回顾
RBF网络
- 前项型的网络:输入值从输入层单元向前逐层传播经过隐藏层最后到达输出层得到输出
- 径向基函数网络
- 只有一个隐藏层的三层前馈神经网络
- 隐藏层的转换函数是局部相应的高斯函数,所以要实现同一个功能,神经元个数要比BP多
- 训练时间短
- 由于局部想响应,RBF可以以任意精度逼近任意连续函数
BP
- 多层前馈神经网络,在网络训练中,调整网络权值的训练算法是误差反向传播学习算法。BP网络是前向网络的核心部分,神经网络中最精华,最完美的内容。
自组织神经网络
一类采用无教师学习方式的神经网络模型,它无须期望输出,只是根据数据样本进行学习,并调整自身的权重以达到学习目的
自组织神经网络的学习规则大都采用竞争性的学习规则
竞争型神经网络的基本思想是神经竞争层的个神经元通过竞争来获取对输入模式的响应机会,最后仅有一个神经元成为胜利者,并静将与获胜神经元有关的个连接权值向着更有利于其竞争的方向调整
用途:模式分类和模式识别
在竞争层中神经元之间相互竞争,最终只有一个或几个神经元获胜,以适应当前的输入样本。竞争胜利的神经元就代表着当前输入样本的分布模式。
竞争后的权值按照下式进行修改:
在训练神经网络之前一定要对数据进行处理
除竞争外还可通过抑制的方法进行自组织学习
Som神经网络模型
som算法是一种无导师的聚类法,它能将任意维输入模式在输出层映射成一维或者二维离散图形,并保持其拓扑结构不变,即在无导师的情况下,通过对输入模式的自组织学习,在竞争层将分类结果表示出来,此外,网络通过对输入模式的反复学习,可以使连续权值空间分布密度与输入模式的概率分布趋于一致,即连接权向量空间分布能反映输入模式的统计特征。
和自组织竞争网络一样。som网络可以用来识别获胜神经元i
不同的是,自组织竞争网络只修正获胜神经元,而som网络依据Kohonen学习规则,要同时修正获胜神经元附近区域内所有神经元。
拓扑结构
- girdtop()网格拓扑结构
pos = gridtop(2,3); >> plotsom(pos)
- hextop()六角形拓扑结构
SOM网络构建的函数newsom()总缺省的神经元拓扑结构函数是hextop()
- randtop()随机拓扑结构
pos = randtop(2,3) plotsom(pos)
每次随机画出来的结果都不一样。
神经元之间的距离
- 欧几里德距离
dist()
pos2 = [0 1 2;0 1 2] plotsom(pos2) D2 = dist(pos2)
boxdist()
pos = gridtop(2,3) plotsom(pos) d = boxdist(pos);
Hopfield神经网络
循环性神经网络
分类
- 离散型
神经元的输出只取1和0,分别表示神经元出于激活和一致状态
- 连续型
拓扑结构和DHNN的结构相同
数字识别
设置Hopfield网络,使其具有联想记忆功能,能正确识别阿拉伯数字,当数字被噪声污染后仍可以正确识别
设计步骤
设计数字点阵
zero=[-1 1 1 1 1 1 1 1 1 -1;-1 1 1 1 1 1 1 1 1 -1;... -1 1 1 -1 -1 -1 -1 1 1 -1;-1 1 1 -1 -1 -1 -1 1 1 -1;... -1 1 1 -1 -1 -1 -1 1 1 -1;-1 1 1 -1 -1 -1 -1 1 1 -1;... -1 1 1 -1 -1 -1 -1 1 1 -1;-1 1 1 -1 -1 -1 -1 1 1 -1;... -1 1 1 1 1 1 1 1 1 -1;-1 1 1 1 1 1 1 1 1 -1]; ZERO=imresize(zero,20); subplot(2,5,1) imshow(ZERO) one=[-1 -1 -1 -1 1 1 -1 -1 -1 -1;-1 -1 -1 -1 1 1 -1 -1 -1 -1;... -1 -1 -1 -1 1 1 -1 -1 -1 -1;-1 -1 -1 -1 1 1 -1 -1 -1 -1;... -1 -1 -1 -1 1 1 -1 -1 -1 -1;-1 -1 -1 -1 1 1 -1 -1 -1 -1;... -1 -1 -1 -1 1 1 -1 -1 -1 -1;-1 -1 -1 -1 1 1 -1 -1 -1 -1;... -1 -1 -1 -1 1 1 -1 -1 -1 -1;-1 -1 -1 -1 1 1 -1 -1 -1 -1]; TWO=imresize(two,20); subplot(2,5,3) imshow(TWO) ...... -1 -1 -1 -1 -1 -1 -1 1 1 -1;-1 -1 -1 -1 -1 -1 -1 1 1 -1;... -1 1 1 1 1 1 1 1 1 -1;-1 1 1 1 1 1 1 1 1 -1;... -1 1 1 -1 -1 -1 -1 -1 -1 -1;-1 1 1 -1 -1 -1 -1 -1 -1 -1;... -1 1 1 1 1 1 1 1 1 -1;-1 1 1 1 1 1 1 1 1 -1];
创建Hopfield网络
T = [one,two]; net = newhop(T);
设计收到噪声污染的数字点阵
no1=[-1 -1 -1 -1 1 1 -1 -1 -1 -1;-1 -1 -1 -1 1 -1 -1 -1 -1 -1;... % -1 -1 1 -1 1 1 -1 -1 -1 -1; -1 -1 -1 -1 1 1 1 -1 -1 -1;... % -1 -1 -1 -1 -1 1 -1 -1 -1 -1; -1 -1 -1 -1 1 1 -1 1 -1 -1;... % -1 -1 -1 -1 1 1 -1 -1 -1 -1; -1 1 -1 -1 1 1 -1 -1 -1 -1;... % -1 -1 -1 -1 -1 1 -1 -1 -1 -1; -1 -1 -1 -1 1 1 -1 -1 1 -1]; % % no2=[-1 1 1 1 -1 1 1 -1 1 -1;-1 1 1 1 1 1 1 1 1 -1;... % -1 -1 1 -1 1 -1 -1 1 1 -1;-1 -1 -1 1 -1 1 -1 1 1 -1;... % -1 1 1 1 1 1 1 1 1 -1;-1 1 1 1 1 1 1 1 1 -1;... % -1 1 1 -1 -1 -1 -1 -1 -1 -1;-1 1 1 -1 -1 -1 -1 -1 -1 -1;... % -1 1 1 1 -1 1 1 1 1 -1;-1 1 1 -1 1 1 1 1 1 -1];
数字识别
noise1=[(no1)']; %定义成单元阵列 noise2=[(no2)']; tu1 = sim(net,{10,50},{},noise1);%对数字1进行仿真 tu2 = sim(net,{10,50},{},noise2);
结果分析
加入噪声的时候,既可以人为加入, 也可以随机加入
for i=1:10 for j=1:10 rand('state',0); a = rand; if a<=0.1 one(i,j)=-one(i,j); two(i,j)=-two(i,j); end end end no1 = one; no2 = two;
连续型Hopfield神经网络
- 连续型Hopfield神经网络是由一些简单的电子线路连接起来实现的
- 每一个神经元均具有连续时间变化的输出值
- 采用具有饱和非线性的运算放大器模拟神经元的S型单调输入–输出关系,即 Vi=fi(ui)
- CHNN的能量函数不是物理意义上的能量函数,而是在表达形式上与物理意义的能量函数一致,表征网络状态的变化趋势
- 如果把一个最优化问题的目标函数转换成网络的能量函数,把问题的变量对应于网络的状态,那么Hopfield神经网络就能够用于解决优化组合问题
- 步骤
- 分析问题:网络输出与问题的解相对应
- 构造网络能量函数:使其最小值对应问题最佳解
- 设计网络结构:由能量函数和网络稳定条件设计网络参数,得到动力学方程
- 硬件时间或软件模拟
应用举例(TSP)
思路
利用n*n个神经元组成Hopfield神经网络,网络达到稳定状态时各个神经元之状态对应置换矩阵的各个元素值,各城市间的距离作为一组约束信息决定神经元之间的连接强度 wij ,期望网络演变的最终结果给出最优解,也即以置换矩阵表明最短距离条件下路径之顺序。