什么是极限学习机?

极限学习机(ELM, Extreme Learning Machines)是一种前馈神经网络,最早由新加坡南洋理工大学黄广斌教授于2006年提出。该算法具有良好的泛化性能以及极快的学习能力

极限学习机和标准神经网络的区别

ELM 不需要基于梯度的反向传播来调整权重,而是通过 Moore-Penrose generalized inverse来设置权值。

标准的单隐藏层神经网络结构如下:

elman神经网络模型代码_elman神经网络模型代码

 

极限学习机

     极限学习机是由Huang等[26]提出的一种特殊类型的单隐含层前馈神经网络.随机初始化其输入权值和偏置并得到对应的输入权重,在ELM模型的整个训练过程中并不需要对模型的各个参数进行调整,只需要对模型隐含层神经元的个数进行设置,最终就可以获得唯一的最优解[45].具有简洁高效,无需调参,训练学习速度较快等优点,其基本网络结构如图1所示.

elman神经网络模型代码_归一化_02

图1 极限学习机基本结构

        极限学习机模型的理论架构如下[26]:ELM模型包括输入层、隐含层和输出层,其中输入层的n个神经元分别与n个输入变量相对应,隐含层有l个神经元,输出层的m个神经元分别与m个输出变量相对应设隐含层神经元的激活函数为g(x),则ELM极限学习机的输出为

elman神经网络模型代码_elman神经网络模型代码_03

        其中ωi=[ωi1,ωi2,...,ωin],xj=[x1j,x2j,...,xnj]T,ωi代表输入层神经元与隐含层神经元之间的连接权值,bi表示第i个神经元的偏差也即隐含层阈值. 式(8)也可以表示为Hβ=TT,其中H代表神经网络隐含层的输出矩阵,H的具体形式可以表示为

elman神经网络模型代码_matlab_04

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个样本作为测试,测试结果如下图所示:

elman神经网络模型代码_神经网络_05

         读者可根据自己的需求更换数据进行测试,代码亲测有效。