资源描述
题目: Hopfield神经网络综述
一、 概述:
1. 什么是人工神经网络(Artificial Neural Network,ANN)
人工神经网络是一个并行和分布式的信息处理网络结构,该网络结构一般由许多个神经元组成,每个神经元有一个单一的输出,它可以连接到很多其他的神经元,其输入有多个连接通路,每个连接通路对应一个连接权系数。
人工神经网络系统是以工程技术手段来模拟人脑神经元(包括细胞体,树突,轴突)网络的结构与特征的系统。利用人工神经元可以构成各种不同拓扑结构的神经网络,它是生物神经网络的一种模拟和近似。主要从两个方面进行模拟:一是结构和实现机理;二是从功能上加以模拟。
根据神经网络的主要连接型式而言,目前已有数十种不同的神经网络模型,其中前馈型网络和反馈型网络是两种典型的结构模型。
1)反馈神经网络(Recurrent Network)
反馈神经网络,又称自联想记忆网络,其目的是为了设计一个网络,储存一组平衡点,使得当给网络一组初始值时,网络通过自行运行而最终收敛到这个设计的平衡点上。反馈神经网络是一种将输出经过一步时移再接入到输入层的神经网络系统。
反馈网络能够表现出非线性动力学系统的动态特性。它所具有的主要特性为以下两点:
(1).网络系统具有若干个稳定状态。当网络从某一初始状态开始运动,网络系统总可以收敛到某一个稳定的平衡状态;
(2).系统稳定的平衡状态可以通过设计网络的权值而被存储到网络中。
反馈网络是一种动态网络,它需要工作一段时间才能达到稳定。该网络主要用于联想记忆和优化计算。在这种网络中,每个神经元同时将自身的输出信号作为输入信号反馈给其他神经元,它需要工作一段时间才能达到稳定。
2. Hopfield神经网络
Hopfield网络是神经网络发展历史上的一个重要的里程碑。由美国加州理工学院物理学家J.J.Hopfield 教授于1982年提出,是一种单层反馈神经网络。Hopfield神经网络是反馈网络中最简单且应用广泛的模型,它具有联想记忆的功能。
Hopfield神经网络模型是一种循环神经网络,从输出到输入有反馈连接。在输入的激励下,会产生不断的状态变化。
反馈网络有稳定的,也有不稳定的,如何判别其稳定性也是需要确定的。对于一个Hopfield网络来说,关键是在于确定它在稳定条件下的权系数。
下图中,第0层是输入,不是神经元;第二层是神经元。
Hopfield网络示意图
1984年,Hopfield设计并研制了网络模型的电路,并成功地解决了旅行商(TSP)计算难题(快速寻优问题)。
根据网络的输出是离散量或是连续量,Hopfield网络也分为离散和连续的两种。
Hopfield神经网络有两种:离散Hopfield网络(DHNN)和连续Hopfield网络(CHNN) 。
1)离散Hopfield网络(DHNN):神经元的输出只取1和0,分别表示神经元处于激活和抑制状态。对于二值神经元,它的计算公式如下
其中,xi为外部输入。并且有:
2)连续Hopfield网络(CHNN)拓扑结构和DHNN的结构相同。不同之处在于其函数g不是阶跃函数,而是S形的连续函数。一般取G (u)=1/(1+)
二、特性分析
1.离散Hopfield网络(DHNN)的结构和工作方式
离散Hopfield网络是一个单层网络,有n个神经元节点,每个神经元的输出均接到其它神经元的输入。各节点没有自反馈,每个节点都附有一个阀值。每个节点都可处于一种可能的状态(1或-1),即当该神经元所受的刺激超过其阀值时,神经元就处于一种状态(比如1),否则神经元就始终处于另一状态(比如-1)。
一个DHNN的网络状态是输出神经元信息的集合。对于一个输出层是n个神经元的网络,其t时刻的状态为一个n维向量:
因为yi(t)可以取值为1或0,故n维向量Y(t)有2n种状态,即网络有2n种状态。
如图所示:如果Hopfield网络是一个稳定 网络,有3个神经元,则有8种状态。右图可直观看出:若在网络的输入端 上加入一个输入向量,则网络的状态会产生变化,即从超立方体的一个顶点转向另一个顶点,并且最终稳定于一个特定的顶角[6]。
3神经元8种状态的立方体模型
假设一个DHNN,其状态为Y(t):
如果对于任何△t,当神经网络从t=0开始,有初始状态Y(0)。经过有限时刻t,有:Y(t+△t)=Y(t)则称网络是稳定的。
Hopfield网络稳定的充分条件:权系数矩阵W是对称矩阵,并且对角线元素为0。无自反馈的权系数对称Hopfield网络是稳定的。
稳定的Hopfield网络
离散Hopfield网络的一个功能是可用于联想记忆,也即是联想存储器。这是人类的智能特点之一。人类的所谓“触景生情”就是见到一些类同过去接触的景物,容易产生对过去情景的回昧和思忆。对于Hopfield 网络,用它作联想记忆时,首先通过一个学习训练过程确定网络中的权系数,使所记忆的信息在网络的n维超立方体的某一个顶角的能量最小。当网络的权系数确定 之后,只要向网络给出输入向量,这个向量可能是局部数据.即不完全或部分不正确的数据,但是网络仍然产生所记忆的信息的完整输出。
1)应用举例(数字识别)
问题
设计一个Hopfield网络,使其具有联想记忆功能,能正确识别阿拉伯数字,当数字被噪声污染后仍可以正确地识别[6]。
设计思路
假设网络由0-9共10个稳态构成,每个稳态由10*10的矩阵构成,该矩阵用于模拟阿拉伯数字点阵。即将每个数字划分成10*10方阵,有数字的部分用1表示,空白处用-1表示。
数字表示示意图
设计步骤
(1)设计数字点阵(0-9)
(2)创建Hopfield网络
(3)设计受到噪声污染的数字点阵
(4)数字识别
(5)结果分析
(代码和仿真结果在第三仿真部分给出)
2. 连续Hopfield网络(CHNN)的结构和工作方式
连续型Hopfield网络(CHNN)是由一些简单的电子线路连接起来实现的。每个神经元均具有连续时间变化的输出值。采用具有饱和非线性的运算放大器来模拟神经元的S型单调输入——输出关系,即
电子线路连接的连续Hopfield网络(1)
电子线路连接的连续Hopfield网络(2)
对于一个N节点的CHNN模型来说,其神经元状态变量的动态变化可用下述非线性微分方程组来描述
能量函数定义为
CHNN的能量函数不是物理意义上的能量函数,而是在表达形式上与物理意义的能量函数一致,表征网络状态的变化趋势。
定理:若作用函数是单调递增且连续的,则能量函数E是单调递减 且有界的。
CHNN用非线性微分方程描述,网络的稳定性通过构造其能量函数(又称李雅谱诺夫函数),并用李雅谱诺夫第二稳定性定理进行判断。
说明[7]: (1)李雅谱诺夫函数并不唯一;
(2)若找不到网络的李雅谱诺夫函数,不能证明网络不稳定;
(3)目前没有统一的找李雅谱诺夫函数的方法;
(4)用能量函数的方法研究网络的稳定性,在数学上欠严谨。
如果把一个最优化问题的目标函数转换成网络的能量函数,把问题的变量对应于网络的状态,那么Hopfield神经网络就能够用于解决优化组合问题。
应用Hopfield神经网络来解决优化计算问题的一般步骤为:
(1)分析问题:网络输出与问题的解相对应;
(2)构造网络能量函数:使其最小值对应问题最佳解;
(3)设计网络结构:由能量函数和网络稳定条件设计网络参数,得到 动力学方程;
(4)硬件实现或软件模拟。
1)应用举例(TSP:Traveling Salesman Problem)
它假定有n个城市A,B,C,……,它们之间的相互距离分别为 。要求寻找一条闭合路径,此路径历经每个城市且经过一次,返回起始城市,要求此路径最短。
不考虑方向性和周期性,在给定n的条件下,可能存在的闭合路径数目为1/2(n-1)!。随着n的增大,计算量急剧增大,会发生所谓的“组合爆炸”问题[7]。
城市数
路径数
城市数
路径数
3
1
12
1.9958×107
4
3
13
2.3950×108
5
12
14
3.1135×109
6
60
15
4.3589×1010
7
360
16
6.5384×1011
8
2520
17
1.0461×1013
9
20160
18
1.7784×1014
10
181440
19
3.2012×1015
11
1814400
20
6.0823×1016
置换矩阵
A,B,C,D,E(对应各行)表示城市名称;
1,2,3,4,5(对应各列)表示路径顺序;
矩阵中“1”表示该城市在路径全程中所居顺序,其余元素均为“0”。此处路径顺序为C→A→E→B→D→C。
特点:
(1)每行只有一个“1”,其余元素均 为“0”;
(2)每列只有一个“1”,其余元素均为“0”;
(3)全部元素中“1”的总和为n。
1
2
3
4
5
A
0
1
0
0
0
B
0
0
0
1
0
C
1
0
0
0
0
D
0
0
0
0
1
E
0
0
1
0
0
思路
利用n×n个神经元组成Hopfield神经网络,网络达到稳定状态时各个神经元之状态对应置换矩阵的各个元素值,各城市间的距离作为一组约束信息决定神经元之间的连接强度 。期望网络演变的最终结果给出最优解,也即以置换矩阵表明最短距离条件下路径之顺序。
能量函数
式中,A,B,C,D是权值, 表示城市x到城市y之间的距离。前三项是问题的约束项,最后一项是优化目标项。
改进
动态方程
具体算法步骤
(1)置初值和权值,t=0,A=1.5,D=1.0,;
(2)读入N个城市之间的距离 ;
(3)神经网络输入的初始化 ;
其中,,N为城市个数,为(-1,+1)区间的随机值;
(4)利用动态方程计算 ;
(5)根据一阶欧拉法计算 ;
(6) 采用sigmoid函数计算 ;
(7)计算能量函数E;
(8)检查路径合法性,判断迭代是否结束,若未结束返回到第(4)步;
(9)输出迭代次数、最优路径、能量函数、路径长度及能量变化。
仿真中所采用的关键命令:
* sumsqr(X):求矩阵X中各元素的平方值之和;
* sum(X)或sum(X,1)为矩阵X中各行相加,sum(X,2)为矩阵X中各列相加;
* repmat:用于矩阵复制;
* dist(x,y):计算两点间的距离。
(代码和仿真结果在第三仿真部分给出)
三、 仿真
1. 数字识别问题
数字1编码:array_one
被噪声污染的数字1编码:noisy_array_one
数字2编码:array_two
被噪声污染的数字2编码:noisy_array_two
分别将这些编码建立成matlab里面的m文件并以data0和data0_noisy,data1和data1_noisy进行命名。
以下是程序代码:
%% Hopfield神经网络的联想记忆——数字识别
%% 清空环境变量
clear all
clc
%% 数据导入
load data1 array_one
load data2 array_two
%% 训练样本(目标向量)
T = [array_one;array_two]';
%% 创建网络
net = newhop(T);
%% 数字1和2的带噪声数字点阵(固定法(人为添加噪声))
load data1_noisy noisy_array_one
load data2_noisy noisy_array_two
%% 数字1和2的带噪声数字点阵(随机法)[4]
% noisy_array_one=array_one;
% noisy_array_two=array_two;
% for i = 1:100
% a = rand;
% if a < 0.3 加入30%的噪声
% noisy_array_one(i) = -array_one(i);
% noisy_array_two(i) = -array_two(i);
% end
% end
%% 数字识别
% 单步仿真——TS = 1(矩阵形式)[4]
% identify_one = sim(net,10,[],noisy_array_one');
% 多步仿真——元胞数组形式
noisy_one = {(noisy_array_one)'};
identify_one = sim(net,{10,10},{},noisy_one);
identify_one{10}';
noisy_two = {(noisy_array_two)'};
identify_two = sim(net,{10,10},{},noisy_two);
identify_two{10}';
%% 结果显示
Array_one = imresize(array_one,20);
subplot(3,2,1)
imshow(Array_one)
title('标准(数字1)')
Array_two = imresize(array_two,20);
subplot(3,2,2)
imshow(Array_two)
title('标准(数字2)')
subplot(3,2,3)
Noisy_array_one = imresize(noisy_array_one,20);
imshow(Noisy_array_one)
title('噪声(数字1)')
subplot(3,2,4)
Noisy_array_two = imresize(noisy_array_two,20);
imshow(Noisy_array_two)
title('噪声(数字2)')
subplot(3,2,5)
imshow(imresize(identify_one{10}',20))
title('识别(数字1)')
subplot(3,2,6)
imshow(imresize(identify_two{10}',20))
title('识别(数字2)')
%%
仿真结果:
仿真结果显示离散的Hopfield网络识别数字效果较好。
2.旅行商问题(TSP:Traveling Salesman Problem)
这里用matlab模拟仿真了10城市,先对城市坐标进行定位:
(city_location.m)
以下是程序代码:
%% 连续Hopfield神经网络的优化—旅行商问题优化计算
%
%% 清空环境变量、定义全局变量
clear all
clc
global A D
%% 导入城市位置
load city_location
%% 计算相互城市间距离
distance = dist(citys,citys');
%% 初始化网络
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);
%% 寻优迭代[5]
for k = 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
%% 判断路径有效性[5]
[rows,cols] = size(V);
V1 = zeros(rows,cols);
[V_max,V_ind] = max(V);
for j = 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));
%% 结果显示
if flag == 1
% 计算初始路径长度
sort_rand = randperm(N);
citys_rand = citys(sort_rand,:);
Length_init = dist(citys_rand(1,:),citys_rand(end,:)');
for i = 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-')
for i = 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([0 1 0 1])
grid on
xlabel('城市位置横坐标')
ylabel('城市位置纵坐标')
% 计算最优路径长度
[V1_max,V1_ind] = max(V1);
citys_end = citys(V1_ind,:);
Length_end = dist(citys_end(1,:),citys_end(end,:)');
for i = 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-')
for i = 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([0 1 0 1])
grid on
xlabel('城市位置横坐标')
ylabel('城市位置纵坐标')
% 绘制能量函数变化曲线[5]
figure(3)
plot(1:iter_num,E);
ylim([0 2000])
title(['能量函数变化曲线(最优能量:' num2str(E(end)) ')']);
xlabel('迭代次数');
ylabel('能量函数');
else
disp('寻优路径无效');
end
%%
% % % % % 计算能量函数
function E=energy(V,d)
global A D
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_temp V(:,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);
% % % % 计算du
function du=diff_u(V,d)
global A D
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_temp V(:,1)];
sum_d=d*V_temp;
du=-A*sum_x-A*sum_i-D*sum_d;
仿真结果:
仿真结果显示连续Hopfield网络在处理优化问题上具有灵活性,有很好的可移植性,而且处理效果良好。
四、 Hopfield网络当前的研究成果
1. 随机竞争的Hopfield(SCH)神经网络应用与解决频率分配问题(FAP)[1]
在卫星通信系统中的FAP的目的是通过重新安排的频率分配,以减少卫星通信系统之间的共信道干扰,使他们能够适应日益增长的需求。这种混合算法涉及到一个随机的竞争Hopfield神经网络(SCHNN)负责管理问题的制约,当用最少的成本高质量的解决方案遗传算法搜索。这种混合算法,反映了一种特殊的算法混合的思想,拥有良好的适应性不仅可以处理FAP,还应对其他问题,包括聚类,分类,最大团问题,等等。该解决方案对神经网络和进化算法之间的混合很有帮助。
2. Hopfield神经网络的弱引力透镜测量的去卷积方法[2]
弱引力透镜具有对暗能量的状态方程严格的限制的潜力。然而,这将只有在剪切测量方法可达到的精度所要求的水平的时候才能成为可能。通过将总的点扩散函数(PSF)利用数据的直接去卷积,采用表示PSF作为特普利茨矩阵的线性代数形式主义,使得我们可以通过应用Hopfield神经网络迭代方案来解决卷积方程。星系在去卷积图像中的椭圆率使用图像的自相关函数的二阶矩就能够得到测量。
3. Hopfield神经网络应用于水质评价[3]
利用好Hopfield神经网络的特性,可以有效的运用与我们日常生活中的水质评价上,并且与其他方法相比更是有它的独到和优势的地方。在简化模型中,连接权重通过奇异设计
值分解,以提高运行速度。而且通过删除不重要的权重得到了更为简单的Hopfield网络结构。事实证明了该简化模型用于水质评价中的效率和可行性。
五、总结
本文先对人工神经网络进行了简要的介绍,然后再引入所要综述的主题——Hopfield神经网络。对Hopfiled神经网络,先介绍了其离散结构再介绍其连续结构,各自分别讲述了相关的原理以及一些实际的应用。然后再用强大的数学计算软件MATLAB 2014a,进行了实验仿真,得到了正确的结果,证明了Hopfield神经网络在某些领域相比于其他方法的一些优势。最后,列举了当前Hopfield神经网络应用的一些研究成果。
参考文献
[1]Gang Yang,Shaohui Wu,Qin Jin,Jieping Xu,A hybrid approach based on stochastic competitive Hopfield neural network and efficient genetic algorithm for frequency assignment problem,Applied Soft Computing Volume 39, February 2016, Pages 104–116
[2]G. Nurbaeva1, M. Tewes2, 1, F. Courbin1 and G. Meylan1,Hopfield neural network deconvolution for weak lensing measurement,Numerical methods and codes,A&A 577, A104 (2015)
[3]LI Rong,QIAO Junfei,A New Water Quality Evaluation Model Based on Simplified Hopfield Neural Network, Proceedings of the 34th Chinese Control Conference,July 28-30, 2015, Hangzhou, China
[4] Matlab技术论坛: [5] Matlab技术论坛:
[6]MATLAB神经网络编程,张德丰,化学工业出版社,2011.9
[7]离散Hopfield神经网络及应用举例, ,中国传媒大学
[8]yuthreestone (Matlab中文论坛会员),连续Hopfield神经网络(CHNN)及其MATLAB实现,
(注:专业文档是经验性极强的领域,无法思考和涵盖全面,素材和资料部分来自网络,供参考。可复制、编制,期待你的好评与关注)
展开阅读全文