matlab循环神经网络_演变中的神经网络

本文探讨了如何使用MATLAB解决旅行商问题,通过自组织映射网络(SOFM)和遗传算法进行优化。SOFM在训练过程中展现出保序特性,并在不同数据分布下进行演示。此外,还提到了学习矢量量化网络(LVQ)和浅层网络在小样本和复杂非线性映射中的应用。
摘要由CSDN通过智能技术生成
bf90073f2b005efdf73b76ae093de66a.png

旅行商问题[1] 是优化算法的试金石。 可以使用多种方法进行求解。比如下面是Will Campbell  利用遗传算法求解美国各州首府旅行商问题[2] 的动态过程。利用神经网络中的自组织映射网络(SOFM),连续Hopfield网络也可以进行求解。

57436809ca432ad22c0d116cecb06d55.gif▲ 使用遗传算法求解旅行商问题

下面是利用自组织特征映射(SOFM)用于求解十个地点中间的旅行商问题的过程。在SOFM网络的竞争层采用首尾相连的一维拓扑结构,学习速率从0.3线性降低到0, 学习半径从2线性减小到0。200步训练过程网络对应的位置的演变过程如下图所示:

f8edc4f027b7b3a46ae7acead6afc7da.gif
▲ 循环和增加噪声两种效果下的搜索结果

在上述搜索过程中,对于每个搜索节点增加了随机噪声和定向游动,提高了网络搜索的能力。

b3fbb130ca2f47d380434d7889151fd3.png

前面使用SOFM网络进行优化,应用的是自组织特征映射网络的“保序特性”,也就是网络的竞争层的神经元相互之间的拓扑结构与对应训练样本在数据空间中的分布上保持有相似的关系。

比如下面使用来自于三角形内均匀分布的数据点训练一维拓扑结构的SOFM,随着训练过程的收敛竞争网络中的神经元逐步扩展到数据所在的三角形。

c0f0aa122ba7ee2fdcf4f728381df4c1.gif

下面显示的是二维拓扑结构的SOFM网络在来自于区间随机采样的数据训练下的收敛情况。

3b717101c11482de92895ab649138f0d.gif
▲ 2D拓扑结构的SOFM的训练结果

下面是一次训练扭曲的分布结果:

a716883bc31391288802bc82b59bf80f.gif
▲ 发生扭曲的训练过程
891c1a4d2a8dff976fe6986e23e92489.png

上面的自组织特征映射网络是来自于对竞争算法(WTA:胜者为王)的改进。下面显示的是两个节点的竞争网络节点位置(红点)在五个训练样本(蓝点)作用下竞争的结果。

7abf61bf5bf81b37777278138f2ef8c7.gif
▲ 变学习速率的训练过程
a55ea1faf226e10f571ddffe6c5d9636.png

简单的使用竞争算法,可以完成对于数据内部规律的学习。

比如下面是三个神经网络初始的位置。

a399f619eb2cf29e408242c986a24f80.png
▲ 三个神经元初始化后的情况

使用下面带有噪声的C,I,T字符进行训练。三个神经元便可以分别演化到C,I,T的平均结果。

ecf6b0228ec9fb84092c677ab2ca94ed.gif
▲ 添加噪声后的训练样本

经过100次竞争学习之后他们最终演变的形状。

0bbc1a992da65e0133efa48bb47179f9.gif
▲ 竞争演变过程
4d11789f47c0e1a91ec56dcd4d137c9c.png

在竞争的结果上,再增加一层映射,便可以去逼近函数。下面显示的是单相对偶传播网络(CPN)逼近Hermit函数的演变过程。

ac042235ae5464e50bf07c4fc94bc8c6.gif

增加竞争神经元节点的个数,使用双向CPN可以进一步提高逼近函数的效果。

7763c6c828daa3f0dd77ff0bbea2b069.gif
▲ 双向CPN函数逼近结果
042300c5d40831bfe3cf9c96dff61f26.png

对于神经网络,如果只是依靠竞争(无导师训练)所能够达到的精度会受到数据量和分布的影响。对于只有少数数据量的场景,只有竞争往往是无法达到很好的效果的,除非是一个天才。

适当引入导师信号可以在小样本下提高学习的效果。这就是学习矢量量化网络(LVQ)优势。下面是一个极端的例子,可以看到LVQ网络对于小样本下的学习能力是非常强的。

75d95138a870a1be8ad703a4df8aa149.gif
▲ LVQ训练过程
4644deffd07a66536b1425dcbaed77b7.gif
▲ LVQ训练中隐层节点演变过程
aacdeb1243e89c16e348963dfd2536b1.png

对于复杂的非线性映射,最有效的方式就是通过浅层网络的随机梯度下降,来获得较为可靠的训练结果。

下面是MATLAB中的Peaks二维函数。

5950de9497bc0b6ae34ed938f3d87106.gif
▲ peaks函数图像

采集到一些离散的数据,对于有隐层网络进行训练。如果数据采集的足够多,分布的足够合理,可以很快获得其中的映射关系。

dd8eabde734ac6dba52c629700e3332c.gif
▲ 采集到的数据样本

下图显示了一个网络在训练过程中对应的输入输出关系演变过程。

d5c2c22b2873df068853a0de713a93ee.gif
▲ 神经网络输入输出对应函数曲面演变过程

公众号留言

大大,这周末规则值得我们拥有吗309de4dabfeb6b1563f36ee104489fee.png309de4dabfeb6b1563f36ee104489fee.png309de4dabfeb6b1563f36ee104489fee.png

fd6f61834afdbcb9e0b9ccb5a82d1fb9.png

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值