导航:首页 > 源码编译 > hopfield网络算法

hopfield网络算法

发布时间:2024-09-06 19:01:07

A. Hopfield神经网络

Hopfield神经网络(Hopfield Neural Network,简称 HNN),是美国加州理工学院物理学家Hopfield教授1982年提出的一种反馈型神经网络,信号不但能向前,还能向后传递(输出信号又反馈回来变成输入信号。而前面所介绍的BP网络是一种前馈网络,信号只能向前传递)。他在Hopfield神经网络中引入了“能量函数”概念,使网络的运行稳定性的判断有了可靠依据。Hopfield神经网络的权值不是经过反复学习获得的,而是按照一定规则计算出来的,一经确定就不再改变,而Hopfield神经网络的状态(输入、输出信号)会在运行过程中不断更新,网络演变到稳态时各神经元的状态便是问题的解。

1985年,Hopfield和Tank研制了电子线路来模拟Hopfield网络,较好地解决了优化组合问题中着名的TSP(旅行商)问题,找到了最佳解的近似解,为神经网络的复兴建立了不可磨灭的功劳。

对于地球物理反演这种最优化问题,可以很方便地用Hopfield网络来实现。反演的目标函数等于Hopfield网络的“能量函数”,网络的状态(输入、输出信号)就是模型的参数,网络演变到稳态时各神经元的输入输出值便是反演问题的解。

Hopfield神经网络分为离散型和连续型两种网络模型,分别记为DHNN(Discrete Hopfield Neural Network)和CHNN(Continues Hopfield Neural Network)。

在前馈型网络中无论是离散的还是连续的,一般均不考虑输入与输出之间在时间上的滞后性,而只表达两者之间的映射关系。但在连续Hopfield神经网络中,考虑了输出与输入之间的延迟因素,因此需要用微分方程或差分方程来描述网络的动态数学模型。

8.5.4.1 离散Hopfield神经网络

离散Hopfield神经网络的拓扑结构如图8.12所示。这是一种单层全反馈网络,共有n个神经元。图8.12的特点是任意一个神经元的输出xi只能是0或1,均通过连接权wij反馈至所有神经元j作为它的输入xj。也就是说,每个神经元都通过连接权接收所有其他神经元输出反馈的信息,这样每一个神经元的输出都受其他所有神经元输出的控制,从而每个神经元的输出相互制约。每个神经元均设一个阀值Ti,以反映对输入噪声的控制。

图8.12 离散Hopfield神经网络的拓扑结构[8]

8.5.4.1.1 网络的状态

离散Hopfield神经网络任意一个神经元的输出xj称为网络的状态,它只能是0或1。变化规律由下式规定:

xj=f(netj) j=1,2,…,n(8.33)

f( )为转移函数,离散 Hopfield神经网络的转移函数常用符号函数表示:

地球物理反演教程

其中netj为净输入:

地球物理反演教程

对离散Hopfield神经网络,一般有

wij=0,wij=wji (8.36)

这说明神经元没有自反馈,两个神经元的相互控制权值相同。

离散Hopfield神经网络稳定时,每个神经元的状态都不再改变。此时的稳定状态就是网络的输出,记为

地球物理反演教程

8.5.4.1.2 网络的异步工作方式

它是一种串行方式,网络运行时每次只改变一个神经元的状态,其他神经元的状态保持不变。

8.5.4.1.3 网络的同步工作方式

它是一种并行同步工作方式,所有神经元同时调整状态。

8.5.4.1.4 网络的吸引子

网络达到稳定状态时的输出X,称为网络的吸引子。

8.5.4.1.5 网络的能量函数

网络的能量函数定义为

地球物理反演教程

以上是矩阵形式,考虑无自反馈的具体展开形式为

地球物理反演教程

当网络收敛到稳定状态时,有

ΔE(t)=E(t+1)-E(t)=0 (8.40)

或者说:

地球物理反演教程

理论证明了如下两个定理[8]:

定理1.对于DHNN,若按异步方式调整网络状态,且连接权矩阵W为对称阵,则对任意初始状态,网络都能最终收敛到一个吸引子。

定理2.对于DHNN,若按同步方式调整网络状态,且连接权矩阵W为非负定对称阵,则对任意初始状态,网络都能最终收敛到一个吸引子。

8.5.4.1.6 利用离散Hopfield神经网络进行反演

在地球物理线性反演中,设有如下目标函数:

地球物理反演教程

对比式(8.38)和式(8.42)发现它们在形式上有很多相似之处。王家映的《地球物理反演理论》一书中,直接用式(8.42)和式(8.38)类比,公式显得复杂。本书设立一个新的目标函数ϕ,公式将会变得简洁得多:

地球物理反演教程

再对比式(8.38)和式(8.43),发现它们完全一样,只要设:

X(t)=m,W=GTG,T=GTd (8.44)

注意:式(8.43)的目标函数ϕ的极大值解就是原来目标函数φ极小值的解,它们是同解的。

如果待反演的模型参数是离散的0或1值,那么可以直接应用离散Hopfield神经网络进行反演。但是一般它们都是连续的数值,所以还要将模型参数表示为二进制[1]:

地球物理反演教程

其中:Bij=0或1为二进制数;D和U为整数,取决于模型参数的大小和精度。这样第i个模型参数就用Bij表示为了二进制数。将式(8.45)代入目标函数式(8.43)后再与离散Hopfield神经网络的能量函数进行对比,确立新的等价关系后,就可以进行反演了。

这个新的等价关系式可以参见王家映的《地球物理反演理论》[1]一书。

反演的过程大致如下:

(1)根据模型参数的大小范围和精度确定D和U,将初始输入模型参数变为二进制数。设立一个拟合精度标准,如相对均方差ε,设定一个最大迭代次数N(所有神经元的输出都修改一次称为一次迭代)。

(2)利用数据方程的G矩阵(在一般情况下需用偏导数矩阵获得)计算网络的权值和阀值。

(3)将二进制初始模型参数输入网络并运行网络。

(4)把每次迭代网络输出值变为十进制模型参数,进行正演计算。如果拟合满足精度ε,则停止网络运行并输出反演结果。否则重复(2)~(4)步直到满足精度或达到最多迭代次数N为止。

在一般情况下,地球物理数据方程的G矩阵是无法用解析式写出的,需要用偏导数矩阵获得,它是依赖于输入参数的,因此网络的每次迭代都要重新计算偏导数矩阵。这个计算量是很大的。因此他的反演过程和最小二乘法相似。此外,用Hopfield神经网络进行反演同样有可能陷入局部极值点(吸引子)。因此同样受初始模型的影响,需要尽量让初始模型接近真实模型。

8.5.4.2 连续Hopfield神经网络(CHNN)[8]

1984年,Hopfield把离散Hopfield神经网络发展为连续Hopfield神经网络。但所有神经元都同步工作,各输入输出量为随时间变化的连续的模拟量,这就使得CHNN比DHNN在信息处理的并行性、实时性方面更接近实际的生物神经网络工作机理。因此利用CHNN进行地球物理反演更加方便。

CHNN可以用常系数微分方程来描述,但用模拟电子线路来描述,则更加形象直观,易于理解。图8.13为连续Hopfield神经网络的拓扑结构[8]

图8.13 连续Hopfield神经网络的拓扑结构[8]

图8.13中每个神经元用一个运算放大器模拟,神经元的输入输出用放大器的输入输出电压表示,连接权用电导表示。每个放大器有一个正向输出和一个反向输出,分别表示兴奋和抑制。每个神经元还有一个用于设置激活电平的外界输入偏置电流作为阀值。

这里由于篇幅关系不再累述。感兴趣的读者可以参考其他文献。

B. hopfield神经网络和遗传算法的不同点

两者不同的地方非常多吖,或者说,两者根本就没有多少相同的。
hopfield网络,基本上是设置了一个机制,使每次能量都下跌。
而遗传算法,则非常的不同,是种群搜索的机制,先初始化一堆的解,然后每次按概述让优秀解进入下一代(注意到,有可能有不优秀的也可以进入,而hopfield是每一代能量都会下跌),下一代再通过交叉和变异等机制,产生新的一代。由于每次竞选下一代都会让优秀的更大概率通过,所以按概率,每一代都会比上一代更优秀 ,就这样,最后进化到中够优秀的一代。
两者同是通过数次跌代,最后趋于稳定。
但两者不同,遗传算法是每一代是一个种群,而hopfield是一个个体。遗传算法每一代允许更差的情况,有助于跳出局部最成。而hopfield每次能量都是下跌的,有贪婪算法的味道 ,一般不能跳出局部最优。
这样。
《神经网络之家》

C. Hopfield神经网络用python实现讲解

神经网络结构具有以下三个特点:

神经元之间全连接,并且为单层神经网络。

每个神经元既是输入又是输出,导致得到的权重矩阵相对称,故可节约计算量。

在输入的激励下,其输出会产生不断的状态变化,这个反馈过程会一直反复进行。假如Hopfield神经网络是一个收敛的稳定网络,则这个反馈与迭代的计算过程所产生的变化越来越小,一旦达到了稳定的平衡状态,Hopfield网络就会输出一个稳定的恒值。

Hopfield网络可以储存一组平衡点,使得当给定网络一组初始状态时,网络通过自行运行而最终收敛于这个设计的平衡点上。当然,根据热力学上,平衡状态分为stable state和metastable state, 这两种状态在网络的收敛过程中都是非常可能的。

为递归型网络,t时刻的状态与t-1时刻的输出状态有关。之后的神经元更新过程也采用的是异步更新法(Asynchronous)。

Hopfield神经网络用python实现

D. 神经网络——BP算法

对于初学者来说,了解了一个算法的重要意义,往往会引起他对算法本身的重视。BP(Back Propagation,后向传播)算陆袭法,具有非凡的历史意义和重大的现实意义。

1969年,作为人工神经网络创始人的明斯基(Marrin M insky)和佩珀特(Seymour Papert)合作出版了《感知器》一书,论证了简单的线性感知器功能有限,不能解决如“异或”(XOR )这样的基本问题,而且对多层网络也持悲观态度。这些论点给神经网络研究以沉重的打击,很多科学家纷纷离开这一领域,神经网络的研究走向长达10年的低潮时期。[1]

1974年哈佛大学的Paul Werbos发明BP算法时,正值神经外网络低潮期,并未受到应有的重视。[2]

1983年,加州理工学院的物理学家John Hopfield利用神经网络,在旅行商这个NP完全问题的求解上获得当时最好成绩,引起了轰动[2]。然而,Hopfield的研究成果仍未能指出明斯基等人论点的错误所在,要推动神培判经网络研究的全面开展必须直接解除对感知器——多层网络算法的疑虑。[1]

真正打破明斯基冰封魔咒的是,David Rumelhart等学者出版的《平行分布处理:认知的微观结构探索》一书。书中完整地提出了BP算法,系统地解决了多层网络中隐单元连接权的学习问题,并在数学上给出了完整的推导。这是神经网络发展史上的里程碑,BP算法迅速走红,掀起了神经网络的第二次高潮。[1,2]

因此,BP算法的历史意义:明确地否定了明斯基等人的错误观点,对神经网络第二次高潮具有决定性意义。

这一点是说BP算法在神经网络领域中的地位和意义。

BP算法是迄今最成功的神经网络学习算法,现实任务中使用神经网络时,大多是在使用BP算法进行训练[2],包括最近炙手可热的深度学习概念下的卷积神经网络(CNNs)。

BP神经网络是这样一种神经网络模型,它是由一个输入层、一个输出层和一个或多个隐层构成,它的激活函数采用sigmoid函数,采用BP算法训练的多层前馈神经网络。

BP算法全称叫作误差反向传播(error Back Propagation,或早中兄者也叫作误差逆传播)算法。其算法基本思想为:在2.1所述的前馈网络中,输入信号经输入层输入,通过隐层计算由输出层输出,输出值与标记值比较,若有误差,将误差反向由输出层向输入层传播,在这个过程中,利用梯度下降算法对神经元权值进行调整。

BP算法中核心的数学工具就是微积分的 链式求导法则 。

BP算法的缺点,首当其冲就是局部极小值问题。

BP算法本质上是梯度下降,而它所要优化的目标函数又非常复杂,这使得BP算法效率低下。

[1]、《BP算法的哲学思考》,成素梅、郝中华着

[2]、《机器学习》,周志华着

[3]、 Deep Learning论文笔记之(四)CNN卷积神经网络推导和实现

2016-05-13 第一次发布

2016-06-04 较大幅度修改,完善推导过程,修改文章名

2016-07-23 修改了公式推导中的一个错误,修改了一个表述错误

E. 神经网络算法原理

一共有四种算法及原理,如下所示:

1、自适应谐振理论(ART)网络

自适应谐振理论(ART)网络具有不同的方案。一个ART-1网络含有两层一个输入层和一个输出层。这两层完全互连,该连接沿着正向(自底向上)和反馈(自顶向下)两个方向进行。

2、学习矢量量化(LVQ)网络

学习矢量量化(LVQ)网络,它由三层神经元组成,即输入转换层、隐含层和输出层。该网络在输入层与隐含层之间为完全连接,而在隐含层与输出层之间为部分连接,每个输出神经元与隐含神经元的不同组相连接。

3、Kohonen网络

Kohonen网络或自组织特征映射网络含有两层,一个输入缓冲层用于接收输入模式,另一个为输出层,输出层的神经元一般按正则二维阵列排列,每个输出神经元连接至所有输入神经元。连接权值形成与已知输出神经元相连的参考矢量的分量。

4、Hopfield网络

Hopfield网络是一种典型的递归网络,这种网络通常只接受二进制输入(0或1)以及双极输入(+1或-1)。它含有一个单层神经元,每个神经元与所有其他神经元连接,形成递归结构。

(5)hopfield网络算法扩展阅读:

人工神经网络算法的历史背景:

该算法系统是 20 世纪 40 年代后出现的。它是由众多的神经元可调的连接权值连接而成,具有大规模并行处理、分布式信息存储、良好的自组织自学习能力等特点。

BP算法又称为误差反向传播算法,是人工神经网络中的一种监督式的学习算法。BP 神经网络算法在理论上可以逼近任意函数,基本的结构由非线性变化单元组成,具有很强的非线性映射能力。

而且网络的中间层数、各层的处理单元数及网络的学习系数等参数可根据具体情况设定,灵活性很大,在优化、信号处理与模式识别、智能控制、故障诊断等许 多领域都有着广泛的应用前景。

阅读全文

与hopfield网络算法相关的资料

热点内容
看电视可以用什么app 浏览:943
安卓路由表怎么看 浏览:76
10个小孩分糖果python 浏览:825
安卓app小红点怎么取消 浏览:288
马哥linux面授 浏览:772
2345程序员 浏览:374
怎么开启网速显示安卓 浏览:206
索尼950app怎么样 浏览:400
计算机毕设论文源码 浏览:148
小米手机怎么下载易媒体App 浏览:191
还原系统设计可以怎样清理文件夹 浏览:670
北京时间校准服务器云服务器 浏览:844
pythonexcel数据计算 浏览:49
内医附院党建APP怎么下载 浏览:356
荣耀v20刷加密门禁卡 浏览:329
app缓冲视频怎么保存在手机 浏览:433
广度优先算法c语言 浏览:680
提高程序员竞争力 浏览:108
nfc可以开加密门卡吗 浏览:675
如何知道网页使用的服务器是什么 浏览:224