模式识别感知器算法.docx
- 文档编号:30140045
- 上传时间:2023-08-05
- 格式:DOCX
- 页数:16
- 大小:224KB
模式识别感知器算法.docx
《模式识别感知器算法.docx》由会员分享,可在线阅读,更多相关《模式识别感知器算法.docx(16页珍藏版)》请在冰豆网上搜索。
模式识别感知器算法
利用Hopfield神经网络的优化解决旅行商问题
摘要:
本文主要研究利用连续Hopfield神经网络具有优化的特性,将TSP问题的目标函数与网络的能量函数相对应,并将经过的城市顺序与网络的神经元相对应。
当Hopfield神经网络的能量函数趋于最小值且神经元状态趋于平衡点,此时对应的城市顺序即为最佳路线。
关键词:
Hopfield;TSP;最佳路线
SolvethetravelingsalesmanproblemwithHopfieldneuralnetworkoptimization
Abstract:
ThepaperstudiestheuseofcontinuousHopfieldneuralnetworkwithoptimizedfeatures,maketheenergyfunctionofTSPobjectivefunctioncorrespondtonetwork,andgetthethrough-cityordercorrespondedtoneuronsofthenetwork.WhentheenergyfunctionofHopfieldneuralnetworktendstotheminimumandneuronstatetendstotheequilibriumpoint,thecorrespondingorderofthecityisthebestroute.
Keywords:
Hopfield;TSP;thebestroute
1.连续Hopfiled神经网络的概述
1.1网络结构
Hopfield网络是一个具有自反馈的简单人工神经网络,如下图1-1所示。
该网络由JohnHopfield在1982年提出而得名。
1-1霍普菲尔德网络的连线示意图
Hopfield网络的每个神经元有多个输入,但只能有两种输出:
1(表示抑制)或+1(表示兴奋),神经元之间的每个连接均被指派一个特定的连接强度,网络中的每个神经元在某一时刻总是对来自其周围的全部连接进行求和。
如果这个总和大于0,则该单元的输出为+1,否则输出为-1。
计算多次反复进行,直到所有单元的输出都稳定为止。
所有单元的状态并不是同时改变的,而是按随机次序一个接一个地进行的。
Hopfield从理论上证明,如果对Hopfield网络给定一组连接权值和任何输入,该网络将不会无限制地处于漫游状态,也不会进入振荡状态,而是迅速收敛到一个稳定状态。
Hopfield网络用“赫布规则”调节神经元之间连接权值:
如果两个神经元具有相同的输出,则它们之间的相互连接权值都设为+1,反之,如果它们具有相反的输出,则个权值均设为-1。
当Hopfield网络输入正确的神经元活动模式时,由于此刻它将反映我们所期望的正确答案,所以它的输出将为整个输出的正确模式,网络将稳定在该状态。
特别值得注意的是,如果仅仅给出正确输入模式的部分作为“线索”输入到该网络,它将经过短暂演化、不断调节各单元输出后,会稳定在正确输出模式(也即整个模式)上,于是,网络反映出各个神经元活动的稳定关系。
最终Hopfield网络将从某些仅仅与其存贮的“记忆”接近的信息中恢复出整个记忆,这已经与人们的记忆比较相似了。
1.2网络稳定性
Hopfield神经网络主要是模拟生物神经网络的记忆机理,是一种全连接型的神经网络,对于每个神经元来说,自己输出的信号通过其他神经元又反馈到自身,所以Hopfield神经网络是一种反馈型神经网络。
连续的Hopfield神经网络状态的演变过程是一个非线性动力学系统,可以用一组非线性微分方程来描述。
系统的稳定性可用所谓的“能量函数”(即李雅普诺夫或哈密顿函数)进行分析。
在满足一定条件下,某种“能量函数”的能量在网络运行过程中不断地减小,最后趋于稳定的平衡状态。
反馈网络达稳定状态时可以使系统的能量达极小,因而可用于一些最优化问题的计算,能量公式如下:
(1-1)
1.3组合优化问题的概述
组合优化(combinationaloptimization)问题的目标是从组合问题的可行解集中求出最优解,通常可
描述为:
令
为所有状态构成的解空间,C(si)为状态St对应的目标函数值,要求寻找最优解s*,使得对于所有的si∈
,有C(si)=min(C(si))。
组合优化往往涉及排序、分类、筛选等问题,是运筹学的一个重要分支。
旅行商问题(TSP)就是典型的组合优化问题,而利用神经网络又是解决组合优化问题的一个重要的方面。
将Hopfield网络应用于求解组合优化问题,把目标函数转化为网络的能量函数,把问题的变量对应到网络的神经元的状态,这样,当网络的能量函数收敛于极小值时,问题的最优解也随之求出。
由于神经网络是并行计算的,其计算量不会随着维数的增加而发生指数性”爆炸”,因而对于优化问题的高速计算特别有效。
1.4问题的描述
旅行商问题(TSP)问题的描述是:
在N个城市中各经历一次后再回到出发点,使所经过的路程最短。
若不考虑方向性和周期性,在给定N的条件下,可能存在的闭合路径数目为(N-1)!
/2。
当N较大时,枚举法的计算量之大难以想象。
现在对于城市数量为10的TSP问题进行组合优化的连续型Hopfield神经网络模型,利用模型找到最优或近似最优的一条路线。
2.模型建立
2.1设计思路
由于连续型Hopfield神经网络具有优化的特性,因此将TSP问题的目标函数(即最短路径)与网络的能量函数相对应,将经过的城市顺序与网络的神经元状态相对应。
这样,由连续型Hopfield神经网络的稳定性理论可知,当网络的能量函数趋于最小值时,网络的神经元状态也趋于平衡点,此时对应的城市顺序即为待求的最佳路线。
2.2设计步骤
依据设计思路,将TSP问题映射为一个连续型Hopfield神经网络主要分为以下几个步骤,如图(2-1)所示。
(2-1)应用Hopfield网络解决优化计算的主要步骤
2.2.1模型映射
为了将TSP问题映射为一个神经网络的动态过程,Hopfield采取了换位矩阵的表示方法,用N×N矩阵表示商人访问N个城市。
例如,有5个城市A,B,C,D,E访问路线是A→C→E→D→B,则Hopfield网络输出所代表的有效解对应的二维矩阵如表(2-1)所示。
表(2-1)5个城市的访问路线
城市次序
1
2
3
4
5
A
1
0
0
0
0
B
0
0
0
0
1
C
0
1
0
0
0
D
0
0
0
1
0
E
0
0
1
0
0
对于N个城市问题,需用N×N个神经元来实现,而每行都只能有一个,其余为0,矩阵中1的和为N,该矩阵成为换位矩阵。
2.2.2构造网络能量函数和动态方程
如前文所述,设计的Hopfield神经网络的能量函数是目标函数(即最短路径)相对应的。
同时应该考虑到有效解(路线)的实际意义,即换位矩阵的每行每列都只能有一个。
因此,网络的能量函数包含目标项(目标函数)和约束项(换位矩阵)两部分。
这里,将网络的能量函数定义为:
(2-1)
式中,前两项为问题的约束项,第三项为待优化的目标项。
由此式子可以推导出,网络的动态方程为:
(2-2)
2.2.3初始化网络
Hopfield神经网络迭代过程对网络的能量函数及动态方程的系数十分敏感,在总结前人经验及多次试验的基础上,网络初始化选取如下(2-3):
(2-3)
式中,Uo=0.1;N为城市个数10;
xy为(-1,+1)区间的随机值。
在(2-1)、(2-2)中,取A=200,D=100;采样时间设置为step=0.0001,迭代次数为10000。
2.2.4优化计算
当网络的结构及参数设计完成后,迭代优化的过程就变的非常简单,具体步骤如下。
步骤1:
导入N个城市的位置坐标并计算城市之间的距离;
步骤2:
网络初始化;
步骤3:
利用式(2-2)动态方程计算
,并利用一阶欧拉法计算
;
步骤4:
根据
计算
;
步骤5:
利用式(2-1)计算能量函数E;
步骤6:
判断迭代次数是否结束,若迭代次数k>10000,则终止,否则k=k+1返回步骤3。
3.Matlab实现
3.1清空环境变量、声明全局变量
程序运行之前,有必要对工作空间中的变量及命令状口中的命令进行清除,同时,对于一些在主函数和子函数中都需使用的变量,可以定义为全局变量。
具体程序如下:
%%清空环境变量、定义全局变量
clearall
clc
globalAD
3.2城市位置导入并计算城市间距离
10个城市的横、纵坐标如表(3-1)所列,数据保存在city_loaction.mat做中,程序运行时只需要load命令导入即可。
根据导入的城市坐标位置,求取任意两个城市间的距离,以便计算动态方程和能量函数的时候使用。
具体程序如下:
%%导入城市位置
loadcity_location
%%计算相互城市间距离
distance=dist(citys,citys');
表(3-1)10个城市的位置做标
1
2
3
4
5
6
7
8
9
10
横坐标
0.1
0.2
0.4
0.5
0.7
0.8
0.2
0.5
0.7
0.9
纵坐标
0.6
0.3
0.1
0.5
0.2
0.4
0.8
0.9
0.6
0.8
3.3初始化网络
根据上文,网络参数及输入神经元的初始化程序如下:
%%初始化网络
N=size(citys,1);
A=200;
D=100;
U0=0.1;
step=0.0001;
delta=2*rand(N,N)-1;
U=U0*log(N-1)+delta;
V=(1+tansig(U/U0))/2;
iter_num=10000;
E=zeros(1,iter_num);
3.4寻优迭代
寻优迭代过程包括动态方程计算、输出神经元状态更新、能量函数计算四个步骤。
主函数程序如下:
%%寻优迭代
fork=1:
iter_num
%动态方程计算
dU=diff_u(V,distance);
%输入神经元状态更新
U=U+dU*step;
%输出神经元状态更新
V=(1+tansig(U/U0))/2;
%能量函数计算
e=energy(V,distance);
E(k)=e;
end
其中,动态方程计算和能量函数计算对应的子函数程序如下:
%%动态方程计算
functiondu=diff_u(V,d)
globalAD
n=size(V,1);
sum_x=repmat(sum(V,2)-1,1,n);
sum_i=repmat(sum(V,1)-1,n,1);
V_temp=V(:
2:
n);
V_temp=[V_tempV(:
1)];
sum_d=d*V_temp;
du=-A*sum_x-A*sum_i-D*sum_d;
%%计算能量函数
functionE=energy(V,d)
globalAD
n=size(V,1);
sum_x=sumsqr(sum(V,2)-1);
sum_i=sumsqr(sum(V,1)-1);
V_temp=V(:
2:
n);
V_temp=[V_tempV(:
1)];
sum_d=d*V_temp;
sum_d=sum(sum(V.*sum_d));
E=0.5*(A*sum_x+A*sum_i+D*sum_d);
3.5结果输出
3.5.1判断路径的有效性
当迭代过程完成以后,需要对最终的输出神经元状态进行标准化并检查是否有效,即是否满足换位矩阵的条件:
每行每列均只有一个1,矩阵中1的个数与城市数相等。
具体的程序如下:
%%判断路径有效性
[rows,cols]=size(V);
V1=zeros(rows,cols);
[V_max,V_ind]=max(V);
forj=1:
cols
V1(V_ind(j),j)=1;
end
C=sum(V1,1);
R=sum(V1,2);
flag=isequal(C,ones(1,N))&isequal(R',ones(1,N));
如果flag=1,迭代得到的矩阵是有效的,其所对应的路径也是合法的;否则,则表示迭代结束后没有寻找到一条有效的路径。
3.5.2结果显示
为了方便读者的阅读,将优化前后的路径及能量函数的变化以图形的形式展现出来,具体程序为:
%%结果显示
ifflag==1
%计算初始路径长度
sort_rand=randperm(N);
citys_rand=citys(sort_rand,:
);
Length_init=dist(citys_rand(1,:
),citys_rand(end,:
)');
fori=2:
size(citys_rand,1)
Length_init=Length_init+dist(citys_rand(i-1,:
),citys_rand(i,:
)');
End
%绘制初始路径
figure
(1)
plot([citys_rand(:
1);citys_rand(1,1)],[citys_rand(:
2);citys_rand(1,2)],'o-')
fori=1:
length(citys)
text(citys(i,1),citys(i,2),[''num2str(i)])
end
text(citys_rand(1,1),citys_rand(1,2),['起点'])
text(citys_rand(end,1),citys_rand(end,2),['终点'])
title(['优化前路径(长度:
'num2str(Length_init)')'])
axis([0101])
gridon
xlabel('城市位置横坐标')
ylabel('城市位置纵坐标')
%计算最优路径长度
[V1_max,V1_ind]=max(V1);
citys_end=citys(V1_ind,:
);
Length_end=dist(citys_end(1,:
),citys_end(end,:
)');
fori=2:
size(citys_end,1)
Length_end=Length_end+dist(citys_end(i-1,:
),citys_end(i,:
)');
end
disp('最优路径矩阵');V1
%绘制最优路径
figure
(2)
plot([citys_end(:
1);citys_end(1,1)],...
[citys_end(:
2);citys_end(1,2)],'o-')
fori=1:
length(citys)
text(citys(i,1),citys(i,2),[''num2str(i)])
end
text(citys_end(1,1),citys_end(1,2),['起点'])
text(citys_end(end,1),citys_end(end,2),['终点'])
title(['优化后路径(长度:
'num2str(Length_end)')'])
axis([0101])
gridon
xlabel('城市位置横坐标')
ylabel('城市位置纵坐标')
%绘制能量函数变化曲线
figure(3)
plot(1:
iter_num,E);
ylim([02000])
title(['能量函数变化曲线(最优能量:
'num2str(E(end))')']);
xlabel('迭代次数');
ylabel('能量函数');
else
disp('寻优路径无效');
end
3.5.3结果分析
图(3-1)为随机产生的初始路径,所经过的路径为1→5→7→3→4→6→8→9→10→2,其长度为5.3616。
图(3-2)随机产生的初始路径
经过连续型Hopfield神经网络优化后,寻找到的优化路径为5→6→9→10→4→8→7→1→2→3,其长度为3.0852,如图(3-2)所示。
图(3-2)Hopfield网络优化后路径
能量函数随迭代过程变化的曲线如图所示,从图(3-3)中可以看出,网络的能量随着迭代过程不断减少。
当网络的能量变化很小时,网络的神经元状态也趋于平衡点,此时对应的城市顺序即为待求的优化路径。
图(3-2)能量函数随迭代次数变化曲线
结果表明,利用连续型Hopfield神经网络,可以快速准确地解决TSP问题。
同理,对于其他利用枚举法产生“组合爆炸”的组合优化问题,利用连续型Hopfield神经网络也可以进行优化计算。
[参考文献]
[1]曹立明.遗传算法-理论,应用与软件实现.西安:
西安交通大学出版社,2002年:
9~10.
[2]张栋,蔡开元.基于遗传算法的神经网络两阶段学习方案.系统仿真学报.2003.15(8):
1088~1090.
[3]凤琴,高颖,赵军.基于遗传算法的神经网络优化.燕山大学学报,2001.25(3):
236.
[4]焦李成.神经网络系统理论.西安:
西安电子科技大学出版社,1992:
30.
[5]张立明.人工神经网络的模型及其应用.南京:
复旦大学出版社,1994.
[6]王崇骏,于汉滁,陈兆乾,谢俊元.一种基于遗传算法的BP神经网络算法及其应用
[7]南京大学学报(自然科学版).2003.39(5):
460~464.
[8]苏金明,黄国明,刘波.MATLAB与外部程序接口.北京:
电子工业出版社,2003年:
167~169.
[9]周露,王丹力.MATLAB神经网络应用设计.北京:
科学出版社,2002年:
114~115.
[10]但小容.王瑞.杨莉.基于人工神经网络的模式识别,软件导刊,2007
[11]丛爽.面向MATLAB工具箱的神经网络理论与应用.合肥:
中国科学技术大学出版社,1998.
感知器网络学习算法——delta学习算法MATLAB程序实现
delta学习算法为单层感知器网络学习算法,Roseblatt的推导证明,如果样本输入函数是线性可分的,那么感知器学习算法在经过有限次迭代之后,一定可以收敛到正确的权值或者权向量。
delta学习算法的过程如下:
(1)感知器输出为:
y=f(sum(omega(i)*x(i)));i=1:
N+1;omega(N+1)为-theta即神经元阈值,x(N+1)=1;
f为输出函数,delta学习算法中使用硬限幅函数。
(2)设定初始随机值
omega设置0-1之间的初始值。
(3)输入一个样本,然后根据
(1)计算实际的输出。
(4)期望输出-实际输出为误差e,通过误差来修改权系数
omega(t+1)=w(t)+eta*e(t)*x;eta为权重变化率,位于(0,1]之间,eta过大则omega的稳定性差,过小则收敛慢。
(5)转至(3)知道对所有样本omega均稳定,退出。
整个过程可以由两个循环来完成,第一个循环当所有样本omega稳定则退出,第二个循环即内层循环,控制每一个样本。
下面的MATLAB程序完成delta学习算法的步骤,通过与逻辑实现,退出循环后,权值omega为训练好的权值,然后使用xin输入作为测试输入进行测试,测试结果表明,训练好的权系数可以满足我们的分类要求。
%delta学习算法程序
%感知器训练规则学习,实现通过单层感知器,单个神经元,两个输入,解决与逻辑问题
%lskyp2010.5.29
%样本及期望输出,x第三列为阈值所乘以的值1
x=[001;011;101;111];
p=[0001];
%初始权值和阈值以及权重变化率eta,omega(3)为阈值
omega=rand(3,1);
eta=rand;
%训练,输出函数为硬限幅函数,通过关系表达式a>0即可以实现硬限幅函数
e=zeros(1,4);
while1
fork=1:
4
y=x(k,:
)*omega>0;
e(k)=p(k)-y;
ife(k)==0
continue;
end
omega=omega+eta*e(k).*x(k,:
)';
end
ife==[0000];
break;
end
end
%测试
xin=[101];
yout=xin*omega>0
输出为
yout=
0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 模式识别 感知器算法 感知 算法