GOA是一种用于全局优化的新型元启发式算法提出的蝗虫优化算法(GOA)在数学上模拟并模拟了蝗虫群的行为,以解决优化问题。提出了一种称为蚱蜢优化算法(GOA)的优化算法,并将其应用于结构优化中具有挑战性的问题。该算法通过数学建模和模拟自然界中蝗虫群的行为来解决优化问题。
用于模拟蝗虫群集行为的数学模型如下
其中,Xi表示第i只蚱蜢的位置,Si表示社会相互作用,Gi表示第i只蚱蜢上的重力,Ai表示风平流。Si由如下方程求解:
式中,dij是第i个和第j个蚱蜢之间的距离。
定义s函数计算如下:
然而,这个数学模型不能直接用于解决优化问题,主要是因为蝗虫很快到达舒适区,而蝗虫群不会收敛到指定的点。为了解决优化问题,该方程的修改版本:
上式表明,蚱蜢的下一个位置是根据其当前位置、目标位置和所有其他蚱蜢的位置来确定的。请注意,该方程式的第一部分考虑了当前蝗虫相对于其他蝗虫的位置。事实上,我们已经考虑了所有蚱蜢的状态来定义目标周围搜索代理的位置。这与PSO不同,PSO是文献中最受欢迎的群体智能技术。在粒子群优化算法中,每个粒子有两个向量:位置向量和位置向量。然而,GOA中每个搜索代理只有一个位置向量。GOA根据搜索代理的当前位置、全球最佳位置和所有其他搜索代理的位置更新搜索代理的位置。这意味着在粒子群优化算法中,没有任何其他粒子有助于更新粒子的位置,而GOA要求所有搜索代理参与定义每个搜索代理的下一个位置。
DBN (deep belief network,深度置信网络),是使用RBM(Restricted Boltzmann Machines,受限波尔兹曼机 )构成的一种深度神经网络。
DBN 在训练模型的过程中主要分为两步:
第1步:按照顺序依次训练每一层RBM网络,确保特征向量映射到不同特征空间时,能保留尽可能多的特征信息;
第2步:在DBN最后一层设置BP网络,同时将最后一个RBM的输出特征向量作为BP网络的输入特征向量,有监督地训练实体关系分类器。接着反向传播网络将错误信息自顶向下传播至每一层 RBM,微调整个 DBN 网络。
在训练模型中,第1步称作预训练,第2步称作微调。有监督学习不一定是BP网络,可以根据需要换成任何分类器模型。
DBN算法本质
从其非监督学习的部分来讲,目的是尽可能地保留原始特征的特点,同时降低特征的维度;
从其有监督学习的部分来讲,目的在于使得分类错误率尽可能地小。
不论是监督学习还是非监督学习,DBN算法本质都是Feature Learning的过程,即如何得到更好的特征表达。
本文使用GOA算法对DBN网络的学习率和两个隐含层节点数进行优化。
主要流程为:
1.首先通过matlab代码建立DBN网络
train_x=mapminmax(train_x')';
test_x=mapminmax(test_x')';
train_x = double(train_x);
test_x = double(test_x);
train_y = double(train_y);
test_y = double(test_y);
rand('state',0)
%train dbn
dbn.sizes = [30];
opts.numepochs = 100;
opts.batchsize = 12;
opts.momentum = 0.01;
opts.alpha = 0.1;
dbn = dbnsetup(dbn, train_x, opts);
dbn = dbntrain(dbn, train_x, opts);
%unfold dbn to nn 将DBN展开到NN
nn = dbnunfoldtonn(dbn, 27);
nn.activation_function = 'sigm'; % 可能换一下。
nn.output='sigm';
%
%train nn
opts.numepochs = 1;
opts.batchsize = 12;
nn = nntrain(nn, train_x, train_y, opts);
2. 将DBN网络的学习率和隐含层节点作为GOA算法的优化变量
3.自定义目标函数,将DBN网络的误差作为算法的评价函数
4.迭代训练得到最优的DBN网络参数。
代码整理架构:
GOA算法的代码清单:
完整代码包获取链接:
正在为您运送作品详情