蝗虫优化算法(GOA)优化深度置信网络DBN【matlab源码】

1.GOA算法

1.1简介

GOA是一种用于全局优化的新型元启发式算法提出的蝗虫优化算法(GOA)在数学上模拟并模拟了蝗虫群的行为,以解决优化问题。提出了一种称为蚱蜢优化算法(GOA)的优化算法,并将其应用于结构优化中具有挑战性的问题。该算法通过数学建模和模拟自然界中蝗虫群的行为来解决优化问题。

1.2算法数学模型

用于模拟蝗虫群集行为的数学模型如下

X_i=S_i+G_i+A_i

其中,Xi表示第i只蚱蜢的位置,Si表示社会相互作用,Gi表示第i只蚱蜢上的重力,Ai表示风平流。Si由如下方程求解:

S_i=\sum_{\substack{j=1\\j\neq i }}^{N} s(d_{ij}) \hat{d_{ij}}

式中,dij是第i个和第j个蚱蜢之间的距离。

d_{ij}=\left | x_j-x_i\right |

\hat{d}_{ij}=\frac{x_j-x_i}{d_{ij}}

定义s函数计算如下:

s(r)=fe^{\frac{-r}{T}}-e^{-r}

然而,这个数学模型不能直接用于解决优化问题,主要是因为蝗虫很快到达舒适区,而蝗虫群不会收敛到指定的点。为了解决优化问题,该方程的修改版本:

蝗虫优化算法(GOA)优化深度置信网络DBN【matlab源码】_第1张图片

上式表明,蚱蜢的下一个位置是根据其当前位置、目标位置和所有其他蚱蜢的位置来确定的。请注意,该方程式的第一部分考虑了当前蝗虫相对于其他蝗虫的位置。事实上,我们已经考虑了所有蚱蜢的状态来定义目标周围搜索代理的位置。这与PSO不同,PSO是文献中最受欢迎的群体智能技术。在粒子群优化算法中,每个粒子有两个向量:位置向量和位置向量。然而,GOA中每个搜索代理只有一个位置向量。GOA根据搜索代理的当前位置、全球最佳位置和所有其他搜索代理的位置更新搜索代理的位置。这意味着在粒子群优化算法中,没有任何其他粒子有助于更新粒子的位置,而GOA要求所有搜索代理参与定义每个搜索代理的下一个位置。

2、DBN深度置信网络

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的过程,即如何得到更好的特征表达。
 

 3.GOA优化DBN参数

本文使用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)优化深度置信网络DBN【matlab源码】_第2张图片

GOA算法的代码清单:

 蝗虫优化算法(GOA)优化深度置信网络DBN【matlab源码】_第3张图片

 完整代码包获取链接:

正在为您运送作品详情

你可能感兴趣的:(智能优化算法应用,算法,深度学习,人工智能)