关于极限学习机,原理较为简单,但也饱受争议。这篇文章只列举几个应用,关于极限学习机的相关文章,请参考如下链接:

Extreme learning machine (ELM) 到底怎么样,有没有做的前途? - 知乎

Extreme learning machine (ELM) 到底怎么样,有没有做的前途?

深度学习(deep learning)和极限学习机(extreme learning machine)的区别和联系之处? - 知乎

深度学习(deep learning)和极限学习机(extreme learning machine)的区别和联系之处?

贴个大佬的图,图片来自Extreme learning machine (ELM) 到底怎么样,有没有做的前途? - 邓博元的回答 - 知乎 Extreme learning machine (ELM) 到底怎么样,有没有做的前途? - 知乎

咳咳,下面进入正题

第一个例子,构建一个具有极限学习机规则的深度信念网络,关于深度信念网络现在已经很少用了,有很多原因,现在的算力已经不再需要这么折腾了,而且逐层预训练会有副作用。具有极限学习机规则的深度信念网络,即把DBN的每一层的特征提取过程使用ELM机制代替,看个图就懂了。

相关的理论推导可参考如下3篇文献:

[1]Deep Supervised Learning Approach for Condition-Based Maintenance of Naval Propulsion Systems

[2]Aircraft Eng%ines Remaining Useful Life Prediction with an Adaptive Denoising Online Sequential Extreme Learning Machine.

[3]Aircraft Engines Remaining Useful Life Prediction with an Improved Online Sequential Extreme Learning Machine.

首先导入一个发动机剩余使用寿命数据集

load('big_data');

看下数据结构

将数据划分为训练集和测试集

trainRatio=0.4; %学习率
testRatio=1-trainRatio;
Q=size(Outputs,1);
[trainInd,~,testInd] = divideint(Q,trainRatio,0,testRatio);
Trinputs=S(Inputs(trainInd,:),0,1);   % 训练输入
Tsinputs=S(Inputs(testInd,:),0,1);    % 训练目标
Trtargets=Outputs(trainInd,:);        % 测试输入
Tstargets=Outputs(testInd,:);         % 测试目标
clearvars -except Trinputs Tsinputs Trtargets Tstargets testInd trainInd

下面定义DBN参数

Options.activF ='radbas' ;                            %  激活函数
Options.net_Architecture=[100 100 254];               %  深度网络的网络架构(每个隐层中的一系列神经元)
Options.mini_batch=5;                                 

开始训练

[net] = DBN_OSELM(Trinputs,Tsinputs,Trtargets,Tstargets,Options)% DBN

作图

plot(testInd,Tstargets,'.',testInd,net.yts_hat,'+')
legend('Desired ','Predicted ')

再看一个基于自编码器的极限学习机的图像降噪的小例子,首先看下结构

基于自编码器的极限学习机图像降噪

然后看下训练集

进行训练集和测试集的构建

pathname        = uigetdir;
allfiles        = dir(fullfile(pathname,'*.jpg'));
xtr=[];       % 初始化训练输入
gamma=[96 97];% 每个图像的尺寸
for i=1:size(allfiles,1)
x=imread([pathname '\\' allfiles(i).name]);
x=imresize(x,gamma);
x=rgb2gray(x);
x=double(x);
xtr=[xtr; x];% 训练集构建
end
% 导入测试数据
pathname        = uigetdir;
allfiles        = dir(fullfile(pathname,'*.jpg'));
xts=[];         % initialize testing inputs
for i=1:size(allfiles,1)
x=imread([pathname '\\' allfiles(i).name]);
x=imresize(x,gamma);
x=rgb2gray(x);
x=double(x);
xts=[xts; x];% 测试集构建
end

进行算法参数初始化

NumberofHiddenNeurons=500;  % 隐层神经元数量
D_ratio=0.35;               % 每个选定帧中的信噪比
DB=1;                       % 高斯白噪声功率
ActivationFunction='sig';   % 激活函数
frame=20;                   % 每帧的尺寸

下面进行训练和测试, 在训练过程中,随机添加高斯白噪声

[AE_net]=elm_AE(xtr,xts,NumberofHiddenNeurons,ActivationFunction,D_ratio,DB,frame)

训练完成后,将不再需要使用InputWeight将输入映射到隐层。最后看下结果

subplot(121)
corrupted=AE_net.x(:,1:gamma(2)*2);
imshow(corrupted')
title('corrupted images ');
subplot(122)
regenerated=AE_net.Ytr_hat(:,1:gamma(2)*2);
imagesc(regenerated'), colormap('gray');
title('regenerated images');

可参考如下参考文献

[1] P. Vincent, H. Larochelle, I. Lajoie, Y. Bengio, and P.-A. Manzagol, “Stacked Denoising Autoencoders: Learning Useful Representations in a Deep Network with a Local Denoising Criterion,” J. Mach. Learn. Res., vol. 11, no. 3, pp. 3371–3408, 2010.

[2] L. le Cao, W. bing Huang, and F. chun Sun, “Building feature space of extreme learning machine with sparse denoising stacked-autoencoder,” Neurocomputing, vol. 174, pp. 60–71, 2016.

[3] G. Bin Huang, “What are Extreme Learning Machines? Filling the Gap Between Frank Rosenblatt’s Dream and John von Neumann’s Puzzle,” Cognit. Comput., vol. 7, no. 3, pp. 263–278, 2015.

下面再看一个很简单的使用极限学习机建议回归模型的问题

首先生成模拟训练数据

a=0;
b=1;
x1 = a + (b-a).*rand([500 1]);
x2 = a + (b-a).*rand([500 1]);
x=[x1 x2];y = (1.3356 .* (1.5 .* (1 - x1)) + (exp(2 .* x1 - 1) .* sin(3 .* pi .* (x1 - 0.6).^2))+ (exp(3 .* (x2 - 0.5)) .* sin(4 .* pi .* (x2 - 0.9).^ 2)));

划分训练集和测试集

Ns=floor(0.8*length(y));        % 前80%的数据用于训练xtrain=x(1:Ns,:);               %训练数据
ytrain=y(1:Ns);xtest=x(Ns+1:end,:);            % 测试数据
ytest=y(Ns+1:end);[xtrain,mux,sigmax] = zscore(xtrain);       % 归一化
[ytrain,muy,sigmay] = zscore(ytrain);Neurons_HL=35;                              %隐层神经元数量
Input_Features=size(xtrain,2);Inputweights=rand(Neurons_HL,Input_Features)*2-1;               % 随机生成输入权重
Bias_HL=rand(Neurons_HL,1);Biasmatrix=Bias_HL(:,ones(1,Ns));    % 随机生成偏执、、偏置Prod=xtrain*Inputweights';
H=Prod+Biasmatrix';                                             % 隐藏层输出

选择激活函数并进行训练

AF='tanh';              % 选择激活函数
if strcmp(AF,'tanh')Hout=tanh(H);
elseif strcmp(AF,'sig')Hout=1./(1+exp(-H));
elseif strcmp(AF,'sin')Hout=sin(H);
elseif strcmp(AF,'cos')Hout=cos(H);
elseif strcmp(AF,'RBF')Hout=radbas(H);
elseif strcmp(AF,'tf')Hout=tribas(H);
endtype='OT';
if strcmp(type,'MP')Hinv=pinv(Hout);
elseif strcmp(type,'RCOD')Hinv=RCOD(Hout);
elseif strcmp(type,'OT')lambda=10000;Hinv=ORT(Hout,lambda);
endOutputweights=(Hinv)*ytrain;
ModelOutputs=Hout*Outputweights;  % 在训练数据集上预测的ELM的输出

最后进行模型测试并作图

xnew=(xtest-mux)./sigmax;       % 测试数据标准化Prod=Inputweights*xnew';
H=Prod+Bias_HL(:,ones(1,size(xnew,1)));  if strcmp(AF,'tanh')            % 选择激活函数Hout=tanh(H);
elseif strcmp(AF,'sig')Hout=1./(1+exp(-H));
elseif strcmp(AF,'sin')Hout=sin(H);
elseif strcmp(AF,'cos')Hout=cos(H);
elseif strcmp(AF,'RBF')Hout=radbas(H);
elseif strcmp(AF,'tf')Hout=tribas(H);
endYpred=Hout'*Outputweights;ypred=Ypred*sigmay+muy;R=corr(ytest,ypred);            % 相关系数
fprintf('R= %4.4f \n',R)RMSE=sqrt(mean((ypred-ytest).^2));
fprintf('RMSE= %4.4f \n',RMSE)figure
plot(ytest)
hold on
plot(ypred)
legend('Actual data','Predictions')
xlabel('samples')

完整代码见如下链接:

基于极限学习机的预测、图像降噪和回归相关推荐

  1. matlab形态学降噪,基于MATLAB的荧光分子图像降噪方法

    基于MATLAB的荧光分子图像降噪方法 [摘要]:医学成像是一种身体内部的视觉显示的技术,用于临床分析和医学干预.其目它旨在揭示身体的内部结构,以便进行诊断和治疗.医学成像产生了大量数据,可形成常规解 ...

  2. 【项目实战课】基于Pytorch的DANet自然图像降噪实战

    欢迎大家来到我们的项目实战课,本期内容是<基于Pytorch的DANet自然图像降噪实战>.所谓项目课,就是以简单的原理回顾+详细的项目实战的模式,针对具体的某一个主题,进行代码级的实战讲 ...

  3. 【ELM预测】基于极限学习机ELM实现数据预测matlab源码

    一.极限学习机的概念 极限学习机(Extreme Learning Machine) ELM,是由黄广斌提出来的求解单隐层神经网络的算法. ELM最大的特点是对于传统的神经网络,尤其是单隐层前馈神经网 ...

  4. 基于极限学习机ELM的人脸识别程序

    前言 有关极限学习机基础知识请参考 极限学习机详解 目标 基于YALE人脸库,15组人脸(每组照片代表一个人),进行人脸分类识别.(下载地址:YALE人脸库) 将每类人脸前10张照片用于学习,第11张 ...

  5. 基于极限学习机的轴承故障分类(西储大学数据)

    一概述 1.1说明 极限学习机的实现程序. 处理的数据为西储大学的不同故障类型的轴承数据. 程序包括:预处理数据和matlab训练预测部分 原理:参考博客 1.2开发工具 matlab2018 pyc ...

  6. 【预测模型-ELM分类】基于极限学习机ELM+OSELM+KELM+半监督SSELM+USELM实现数据集分类附matlab代码

    1 内容介绍 极限学习机是由黄广斌等[13]提出的一种针对前馈神经网络设计的机器学习算法.该算法结构简单.计算速率快.ELM的关键在于找到输出和输出之间的映射空间.首先确定隐含层之间的连接权值w和隐含 ...

  7. 【ELM】动态自适应可变加权极限学习机ELM预测(Matlab代码实现)

  8. 【预测模型-ELM预测】基于蝙蝠算法优化极限学习机预测matlab代码

    1 简介 针对变压器故障的特征,结合变压器油中气体分析法以及三比值法.提出了基于蝙蝠算法改进极限学习机的故障诊断方法.由于输入层与隐含层的权值和阈值是随机产生.传统的极限学习机可能会使隐含层节点过多, ...

  9. 【Kelm预测】基于哈里斯鹰算法优化核极限学习机实现数据预测matlab代码

    1 简介 工业过程常含有显著的非线性,时变等复杂特性,传统的核极限学习机有时无法充分利用数据信息,所建软测量模型预测性能较差.为了提高核极限学习机的泛化能力和预测精度,提出一种哈里斯鹰算法结合核极限学 ...

最新文章

  1. js练习 好友列表选择
  2. VirtualBox安装kali linux过程及安装后无法全屏问题解决方法(2)
  3. java中list排序
  4. linux查询tcp异常,linux服务器内存cpu 流量tcp异常信息记录python脚本
  5. AcWing 204. 表达整数的奇怪方式 / Strange Way To Express Integers
  6. Javascript对象扩展 - JsPoint类
  7. 2018-12-28
  8. jstack分析CPU高的问题
  9. 面向对象10:多态性的使用、重载和重写的区别、多态性的实用意义
  10. 刀片存储助力发挥融合基础架构优势
  11. dump java 分析工具,java内存分析工具 jmap,jhat及dump分析
  12. 屡败屡战,攻克中项(系统集成项目管理师考试经历分享)
  13. 工业物联网(IIoT)生态构建三字经:先做人、后修心、再打怪!
  14. 【Translate插件】报错:更新TTK失败,请检查网络连接问题
  15. C语言——获取键盘方向键效果
  16. 如何通过TotalControl系统设置,提高电脑操作手机速度(教程)
  17. the kth number第几大数问题
  18. 二,八,十六进制数转换为十进制数
  19. CentOS7开启自定义热点HotSpot
  20. Python中用户界面设计(GUI)

热门文章

  1. 电脑都面的没电了,我是如何通过腾讯云恐怖的一面面试的?
  2. CreateProcess的用法
  3. 关于免费的seo网站推广方法有哪些?
  4. Python——Day4(基础知识练习二)
  5. 微型计算机原理与接口技术-实验一
  6. 抓取淘宝司法拍卖数据
  7. MapGuide的系统架构
  8. python excel 插入图片并设置好大小
  9. Python用正则表达式根据格式匹配成语,如:AABB,AABC,ABAC......
  10. 微信小程序学习笔记2