什么是极限学习机?
极限学习机(ELM, Extreme Learning Machines)是一种前馈神经网络,最早由新加坡南洋理工大学黄广斌教授于2006年提出。该算法具有良好的泛化性能以及极快的学习能力
极限学习机和标准神经网络的区别
ELM 不需要基于梯度的反向传播来调整权重,而是通过 Moore-Penrose generalized inverse来设置权值。
标准的单隐藏层神经网络结构如下:
极限学习机
极限学习机是由Huang等[26]提出的一种特殊类型的单隐含层前馈神经网络.随机初始化其输入权值和偏置并得到对应的输入权重,在ELM模型的整个训练过程中并不需要对模型的各个参数进行调整,只需要对模型隐含层神经元的个数进行设置,最终就可以获得唯一的最优解[45].具有简洁高效,无需调参,训练学习速度较快等优点,其基本网络结构如图1所示.
图1 极限学习机基本结构
极限学习机模型的理论架构如下[26]:ELM模型包括输入层、隐含层和输出层,其中输入层的n个神经元分别与n个输入变量相对应,隐含层有l个神经元,输出层的m个神经元分别与m个输出变量相对应设隐含层神经元的激活函数为g(x),则ELM极限学习机的输出为
其中ωi=[ωi1,ωi2,...,ωin],xj=[x1j,x2j,...,xnj]T,ωi代表输入层神经元与隐含层神经元之间的连接权值,bi表示第i个神经元的偏差也即隐含层阈值. 式(8)也可以表示为Hβ=TT,其中H代表神经网络隐含层的输出矩阵,H的具体形式可以表示为
ELM实现汽油辛烷值预测实例
部分代码:
%%ELM极限学习实现汽油辛烷值预测
%% 训练集/测试集产生
clear all
clc
load xinwan_data.mat
% 随机产生训练集和测试集
temp = randperm(size(NIR,1));%打乱60个样本排序
disp(temp(1:50))
% 训练集——50个样本
P_train = NIR(temp(1:50),:)';
T_train = octane(temp(1:50),:)';
% 测试集——10个样本
P_test = NIR(temp(51:end),:)';
T_test = octane(temp(51:end),:)';
N = size(P_test,2);
%% 数据归一化
% 训练集
%% 这里函数的作用就是对p_train数据进行归一化处理
[Pn_train,inputps] = mapminmax(P_train);
Pn_test = mapminmax('apply',P_test,inputps);
% 测试集
%% 这里函数的作用就是对T_train数据进行归一化处理
[Tn_train,outputps] = mapminmax(T_train);
Tn_test = mapminmax('apply',T_test,outputps);
%% ELM创建/训练
[IW,B,LW,TF,TYPE] = elmtrain(Pn_train,Tn_train,30,'sig',0);
%% ELM仿真测试
tn_sim = elmpredict(Pn_test,IW,B,LW,TF,TYPE);
% 反归一化
T_sim = mapminmax('reverse',tn_sim,outputps);
实验共选取60个样本,将50个样本作为训练,10个样本作为测试,测试结果如下图所示:
读者可根据自己的需求更换数据进行测试,代码亲测有效。