今天我们来讲一讲使用自组织神经网络求解TSP问题,本次推文分为以下两部分:
1、自组织神经网络的基本原理
2、利用自组织神经网络解决TSP问题的基本思路
▎自组织神经网络的基本原理
一种自组织神经网络的典型结构:由输入层和竞争层组成。主要用于完成的任务基本还是“分类”和“聚类”,前者有监督,后者无监督。聚类的时候也可以看成将目标样本分类,只是是没有任何先验知识的,目的是将相似的样本聚合在一起,而不相似的样本分离。
竞争学习规则——Winner-Take-All ,网络的输出神经元之间相互竞争以求被激活,结果在每一时刻只有一个输出神经元被激活。这个被激活的神经元称为竞争获胜神经元,而其它神经元的状态被抑制,故称为Winner Take All。
那么如何寻找获胜神经元?首先,对网络当前输入模式向量X和竞争层中各神经元对应的权重向量Wj(对应j神经元)全部进行归一化,使得X和Wj模为1;当网络得到一个输入模式向量X时,竞争层的所有神经元对应的权重向量均与其进行相似性比较,并将最相似的权重向量判为竞争获胜神经元。前面刚说过,归一化后,相似度最大就是内积最大。
总结来说,竞争学习的步骤是:
(1)向量归一化
(2)寻找获胜神经元
(3)网络输出与权值调整
步骤(3)完成后回到步骤1继续训练,直到学习率衰减到0。学习率处于(0,1],一般随着学习的进展而减小,即调整的程度越来越小,神经元(权重)趋于聚类中心。
▎利用自组织神经网络解决TSP问题的基本思路
自组织映射(SOM)是一种无监督学习的神经网络。SM自组织映射的结构只有三层,分别是输入层,全连接层,输出层。其中输入层也就是权值矩阵,输出层就是那些特征映射。
SOM算法的主要原理就是每次找到离城市最近的神经元,该神经元被称为优胜神经元,然后以该神经元建立一个高斯分布逐渐更新其他神经元的位置,也就是更新输出神经元权值向量,通过不断的迭代,输出神经元会逐渐学习到输入数据背后的模式。
在TSP问题中二维城市坐标就是输入数据,城市空间位置就是网络需要学习的模式,在迭代的过程中,为了保证算法的收敛,会更新学习率等参数,最终达到神经元不断的靠近城市,最终输出一条最短城市回路。
程序流程:
1.以城市个数的八倍的随机神经元的位置
2.随机挑选一个城市
3.用欧式距离找到距离这个城市最近的神经元
4.以该神经元为中心,均值为0,方差为城市个数的十分之一创建高斯分布,所有神经元按照该高斯分布向选中的城市移动
5.改变学习率,改变高斯分布的方差
6.判断方差或者学习率是否达到阈值,或者是否达到迭代次数,如果达到则停止迭代,转到步骤7,否则转到步骤2
7.按照神经元的顺序输出城市编号即为最短路径,同时输出最短路径长度。
OK,老规矩,在公众号“优化算法交流地”里回复关键词【代码】,就能获取一整套高质量智能优化算法的MATLAB代码。