Hopfield神经网络和TSP问题

一、TSP问题

旅行商问题,又叫货郎担问题。它是指如下问题:在完全图中寻找一条最短的哈密尔顿回路。
哈密尔顿回路问题:给定一个图,判断图中是否存在哈密尔顿回路。
哈密尔顿回路:寻找一条回路,经过图中所有点且每个点只经过一次。
欧拉回路:寻找一条回路,经过图中所有的边且每条边只经过一次。
判断一个图是否存在欧拉回路只需要判断每个顶点的出度和入度是否相同。
判断一个图是否存在一条哈密尔顿回路是一个NP问题。
旅行商问题和哈密尔顿回路问题最大的区别在于:旅行商研究的图是完全图,必然存在一条哈密尔顿回路。哈密尔顿回路问题的研究对象是一般的图。
由此,可以构造一个难上加难的问题:在无向图中寻找最短的哈密尔顿回路,这必然也是NP问题。

二、Hopfield神经网络

神经网络系列分成好多种:

  • 前馈神经网络
  • 反馈神经网络
  • 不分前后的神经网络

Hopfield神经网络就是不分前后的神经网络,它的每个神经元之间都是全连接的,构成一个完全图,N个神经元就有$N \times N$个权值。

Hopfield神经网络根据激活函数不同可以划分为:离散型Hopfield神经网络(Discrete Hopfield Neural Network,DHNN)和连续型Hopfield神经网络(Continuous Hopfield Neural Network)。离散型Hopfield神经网络的激活函数是离散的,连续型Hopfield神经网络的激活函数是连续的。

离散型Hopfield神经网络主要用于死记硬背,说好听点就是用于联想记忆、存储知识。

连续型Hopfield神经网络主要用于优化,类似模拟淬火、遗传算法、蚁群算法。1985年Hopfield将连续型Hopfield神经网络用于求解大规模旅行商问题并取得不错成果,开创了神经网络在最优化领域的应用先河。连续型Hopfield神经网络其实就是不断地迭代,使得整个系统的能量逐渐减少。这种方法会陷入局部最优。

三、对Hopfield神经网络的理解

任何优化问题都需要找到明确的目标。神经网络方法把分类、聚类、回归等一切问题都转化成了最优化问题,神经网络的唯一作用就是求解最优化问题。因为神经网络都是定义一个loss,然后更改权值去使得loss最小。

起初,人们不把“损失”叫“损失”,而是称之为“能量”。能量和损失其实完全是一回事。Hopfield神经网络最突出的特点就是它跟电路硬件关系密切。Hopfield提出的主要思想是我们可以使用硬件电路来模拟神经网络的优化过程,这个过程速度极快。因为这个过程使用的电路不是数字电路而是模拟电路。这是Hopfield神经网络最大的贡献。而用软件实现Hopfield神经网络时,可谓毫无亮点,简直就是阉割版全连接神经网络。

四、大规模TSP问题的求解

虽然用Hopfield网络求解大规模TSP问题十分困难,然而处理N=10或20个城市则比较容易。一个自然的想法是把N>100的TSP问题先用分类算法分成若干子类,每一子类10~20个城市,然后把每一个子类看成类似于城市的一个区,再用神经网络求每一区的TSP。而各城区之间的连接也将是一个较小的规模的TSP。用这种分类和分级的方法可使神经网络有效地用于大规模TSP问题的求解。实践证明这一方法也适用于其他的大规模组合优化问题。

参考资料

也不知道这群人谁抄谁,这么垃圾的模型研究的人这么多

金灿. 基于离散Hopfield神经网络的数字识别实现[J]. 计算机时代, 2012(3):1-3.
王韬. 基于连续型Hopfield神经网络的噪声字符识别[J]. 系统仿真学报, 2003, 15(9):1288-1290.
江铁, 曹龙汉, 孙奥. 基于离散Hopfield神经网络的噪声数字识别[J]. 计算机科学, 2012, 39(b06):526-528.
傅德胜, 张学勇. 基于Hopfield神经网络噪声数字的识别[J]. 通信技术, 2010, 43(1):126-128.
车洁, 窦新宇, 彭国志,等. 基于离散Hopfield神经网络的车牌字符识别[J]. 城市建设理论研究:电子版, 2013(14).
钟杰, 房智. Hopfield神经网络在噪声字符识别中的应用[J]. 内江科技, 2009, 30(1):76-76.
刘艳红. 基于离散型Hopfield神经网络的车牌汉字识别方法研究[D]. 东北师范大学, 2013.
王小峰. 基于离散Hopfield神经网络的数字识别研究[J]. 忻州师范学院学报, 2012, 28(2):21-24.
朱献文. 基于遗传算法和Hopfield神经网络的字符识别方法[J]. 电子设计工程, 2011, 19(18):57-59.

https://zh.wikipedia.org/wiki/Hopfield%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C
https://blog.csdn.net/weixin_39707121/article/details/79042714
https://blog.csdn.net/weixin_39707121/article/details/79041536
https://blog.csdn.net/app_12062011/article/details/54290484

上一篇:python 自动化之路 day 03


下一篇:protocol的简单写法