传统前馈神经网络采用梯度下降的迭代算法去调整权重参数, 具有明显的缺陷:
极限学习机的网络训练模型采用前向单隐层结构。设m, M, n分别为网络输入层、隐含层和输出层的节点数, g (x) 是隐层神经元的激活函数, bi为阈值。设有N个不同样本 (xi, ti) 1≤i≤N, 其中xi=[xi1, xi2, …, xim]T, ti=[ti1, ti2, …, tin]T, 则极限学习机的网络训练模型如图1所示。
图1 极限学习机的网络训练模型
极限学习机的网络模型可用数学表达式表示如下
其中i∈[1, N], j∈[1, M];网络输入层节点与第j个隐层节点的输入权值向量为ωj=[ω1j, ω2j, …, ωmj];连接第j个隐层节点与网络输出层节点的输出权值向量为βj=[βj1, βj2, …, βjn];bj第j个隐层节点的阈值;oi=[oi1, oi2, …, oin]T表示网络输出值。
极限学习机的代价函数E可表示为
式中, S= (ωi, bi, i=1, 2, …, M) , 包含了网络输入权值及隐层节点阈值。Huang等指出极限学习机的悬链目标就是寻求最优的S, β, 使得网络输出值与对应实际值误差最小, 即min (E (S, β) ) 。min (E (S, β) ) 可进一步写为:
式中, H表示网络关于样本的隐层输出矩阵, β表示输出权值矩阵, T表示样本集的目标值矩阵:
对于ELM模型, 其输入权值矩阵和隐层偏差是随机确定的, 从而使得一些隐含层的节点失效或不能满足数据要求。从而, 自适应地选择最佳的隐层节点数就变得至关重要了。
%% 基于布谷鸟算法优化的深度极限学习机DLM的预测算法
clear;clc;close all;
%% 导入数据
load data
%训练集——400个样本
P_train=input(:,(1:550));
T_train=output((1:550));
% 测试集——200个样本
P_test=input(:,(250:350));
T_test=output((250:350));
%% 归一化
% 训练集
[Pn_train,inputps] = mapminmax(P_train,0,1);
Pn_test = mapminmax(‘apply’,P_test,inputps);
% 测试集
[Tn_train,outputps] = mapminmax(T_train,0,1);
Tn_test = mapminmax(‘apply’,T_test,outputps);
%所有的数据输入类型应该为 N*dim,其中N为数据组数,dim为数据的维度
Pn_train = Pn_train’;
Pn_test = Pn_test’;
Tn_train = Tn_train’;
Tn_test = Tn_test’;
%% DELM参数设置
ELMAEhiddenLayer = [2,3];%ELM—AE的隐藏层数,[n1,n2,…,n],n1代表第1个隐藏层的节点数。
ActivF = ‘sig’;%ELM-AE的激活函数设置
C = inf; %正则化系数
%% 优化算法参数设置:
%计算权值的维度
dim = ELMAEhiddenLayer(1)*size(Pn_train,2);
if length(ELMAEhiddenLayer)>1
for i = 2:length(ELMAEhiddenLayer)
dim = dim + ELMAEhiddenLayer(i)*ELMAEhiddenLayer(i-1);
end
end
popsize = 20;%种群数量
Max_iteration = 50;%最大迭代次数
lb = -1;%权值下边界
ub = 1;%权值上边界
fobj = @(X)fun(X,Pn_train,Tn_train,Pn_test,Tn_test,ELMAEhiddenLayer,ActivF,C);
[Best_pos,Best_score,CS_cg_curve]=CS(popsize,Max_iteration,lb,ub,dim,fobj);
figure
plot(CS_cg_curve,‘k’,‘linewidth’,2)
xlabel(‘迭代次数’)
ylabel(‘适应度值’)
grid on
title(‘布谷鸟算法收敛曲线’)
%% 利用布谷鸟获得的初始权重,进行训练
BestWeitht = Best_pos;
%DELM训练
OutWeight = DELMTrainWithInitial(BestWeitht,Pn_train,Tn_train,ELMAEhiddenLayer,ActivF,C);
%训练集测试结果
predictValueTrainCS = DELMPredict(Pn_train,OutWeight,ELMAEhiddenLayer);
% 反归一化
predictValueTrainCS = mapminmax(‘reverse’,predictValueTrainCS,outputps);
% 均方误差
Error1CS = (predictValueTrainCS’ - T_train);
MSE1CS = mse(Error1CS);
%测试集测试结果
predictValueTestCS = DELMPredict(Pn_test,OutWeight,ELMAEhiddenLayer);
% 反归一化
predictValueTestCS = mapminmax(‘reverse’,predictValueTestCS,outputps);
% 均方误差
Error2CS = (predictValueTestCS’ - T_test);
MSE2CS = mse(Error2CS);
1 matlab版本
2014a
2 参考文献
[1]赵坤,覃锡忠,贾振红.采用改进的布谷鸟算法优化极限学习机[J].计算机仿真. 2018,35(11)
3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除