![bf90073f2b005efdf73b76ae093de66a.png](https://i-blog.csdnimg.cn/blog_migrate/9e24a67d93a0d75bf4b093b86144bcef.png)
旅行商问题[1] 是优化算法的试金石。 可以使用多种方法进行求解。比如下面是Will Campbell 利用遗传算法求解美国各州首府旅行商问题[2] 的动态过程。利用神经网络中的自组织映射网络(SOFM),连续Hopfield网络也可以进行求解。
▲ 使用遗传算法求解旅行商问题
下面是利用自组织特征映射(SOFM)用于求解十个地点中间的旅行商问题的过程。在SOFM网络的竞争层采用首尾相连的一维拓扑结构,学习速率从0.3线性降低到0, 学习半径从2线性减小到0。200步训练过程网络对应的位置的演变过程如下图所示:
![f8edc4f027b7b3a46ae7acead6afc7da.gif](https://i-blog.csdnimg.cn/blog_migrate/62fd588c5213cb3c40900a9cca852531.gif)
在上述搜索过程中,对于每个搜索节点增加了随机噪声和定向游动,提高了网络搜索的能力。
![b3fbb130ca2f47d380434d7889151fd3.png](https://i-blog.csdnimg.cn/blog_migrate/36a70ade8ee10274bac3b8b10fedfb9b.png)
前面使用SOFM网络进行优化,应用的是自组织特征映射网络的“保序特性”,也就是网络的竞争层的神经元相互之间的拓扑结构与对应训练样本在数据空间中的分布上保持有相似的关系。
比如下面使用来自于三角形内均匀分布的数据点训练一维拓扑结构的SOFM,随着训练过程的收敛竞争网络中的神经元逐步扩展到数据所在的三角形。
![c0f0aa122ba7ee2fdcf4f728381df4c1.gif](https://i-blog.csdnimg.cn/blog_migrate/703710cb65e76e1f5454217950c15864.gif)
下面显示的是二维拓扑结构的SOFM网络在来自于区间随机采样的数据训练下的收敛情况。
![3b717101c11482de92895ab649138f0d.gif](https://i-blog.csdnimg.cn/blog_migrate/35f47d01edabb9886f109d6cc5e3f5fe.gif)
下面是一次训练扭曲的分布结果:
![a716883bc31391288802bc82b59bf80f.gif](https://i-blog.csdnimg.cn/blog_migrate/2dd0450ae3061fd421f8540cafb39dff.gif)
![891c1a4d2a8dff976fe6986e23e92489.png](https://i-blog.csdnimg.cn/blog_migrate/9a4315f120fdb14642f860496debb016.png)
上面的自组织特征映射网络是来自于对竞争算法(WTA:胜者为王)的改进。下面显示的是两个节点的竞争网络节点位置(红点)在五个训练样本(蓝点)作用下竞争的结果。
![7abf61bf5bf81b37777278138f2ef8c7.gif](https://i-blog.csdnimg.cn/blog_migrate/c1df1819e1a46379db87d60d1739b49e.gif)
![a55ea1faf226e10f571ddffe6c5d9636.png](https://i-blog.csdnimg.cn/blog_migrate/eff7c815cb36ddc6a4730b690ffdf234.png)
简单的使用竞争算法,可以完成对于数据内部规律的学习。
比如下面是三个神经网络初始的位置。
![a399f619eb2cf29e408242c986a24f80.png](https://i-blog.csdnimg.cn/blog_migrate/3d3728ecba628aeef6e94db05880ab24.png)
使用下面带有噪声的C,I,T字符进行训练。三个神经元便可以分别演化到C,I,T的平均结果。
![ecf6b0228ec9fb84092c677ab2ca94ed.gif](https://i-blog.csdnimg.cn/blog_migrate/9a94d834fc1ad1408f31c1d32e693c60.gif)
经过100次竞争学习之后他们最终演变的形状。
![0bbc1a992da65e0133efa48bb47179f9.gif](https://i-blog.csdnimg.cn/blog_migrate/fb2a33205008fce6f0a6b49e169cc1e9.gif)
![4d11789f47c0e1a91ec56dcd4d137c9c.png](https://i-blog.csdnimg.cn/blog_migrate/cf9934bba0cde4a8aeb0d6960e503c7a.png)
在竞争的结果上,再增加一层映射,便可以去逼近函数。下面显示的是单相对偶传播网络(CPN)逼近Hermit函数的演变过程。
![ac042235ae5464e50bf07c4fc94bc8c6.gif](https://i-blog.csdnimg.cn/blog_migrate/a9bc98056ba037b2c4fb4627501744e8.gif)
增加竞争神经元节点的个数,使用双向CPN可以进一步提高逼近函数的效果。
![7763c6c828daa3f0dd77ff0bbea2b069.gif](https://i-blog.csdnimg.cn/blog_migrate/53d58300821b4409ad0518322310cc9b.gif)
![042300c5d40831bfe3cf9c96dff61f26.png](https://i-blog.csdnimg.cn/blog_migrate/7081ae4abab679d6e2b4db6c011668d4.png)
对于神经网络,如果只是依靠竞争(无导师训练)所能够达到的精度会受到数据量和分布的影响。对于只有少数数据量的场景,只有竞争往往是无法达到很好的效果的,除非是一个天才。
适当引入导师信号可以在小样本下提高学习的效果。这就是学习矢量量化网络(LVQ)优势。下面是一个极端的例子,可以看到LVQ网络对于小样本下的学习能力是非常强的。
![75d95138a870a1be8ad703a4df8aa149.gif](https://i-blog.csdnimg.cn/blog_migrate/dadb6bdd94d4d4f48f55cb9881d825ef.gif)
![4644deffd07a66536b1425dcbaed77b7.gif](https://i-blog.csdnimg.cn/blog_migrate/88af7062b69eb1de952640a667527e6d.gif)
![aacdeb1243e89c16e348963dfd2536b1.png](https://i-blog.csdnimg.cn/blog_migrate/5d6cb625561078ed45b53a86a5a828b4.png)
对于复杂的非线性映射,最有效的方式就是通过浅层网络的随机梯度下降,来获得较为可靠的训练结果。
下面是MATLAB中的Peaks二维函数。
![5950de9497bc0b6ae34ed938f3d87106.gif](https://i-blog.csdnimg.cn/blog_migrate/39a232d93575e5a9a5e669fb1c073508.gif)
采集到一些离散的数据,对于有隐层网络进行训练。如果数据采集的足够多,分布的足够合理,可以很快获得其中的映射关系。
![dd8eabde734ac6dba52c629700e3332c.gif](https://i-blog.csdnimg.cn/blog_migrate/47595a2b2c7b37ea218d0ca63a4da5cd.gif)
下图显示了一个网络在训练过程中对应的输入输出关系演变过程。
![d5c2c22b2873df068853a0de713a93ee.gif](https://i-blog.csdnimg.cn/blog_migrate/ed39f986d3c1bf8503359d566f512b62.gif)
公众号留言
卓大大,这周末规则值得我们拥有吗?