Machine Learning学习笔记(四)EML极限学习机
EML定义
极限学习机器( Extreme Learning Machine,ELM) 是神经网络研究中的一种算法,是一种泛化的单隐层前馈神经网络( Single-hidden Layer Feed forward Network,SLFN)。
SLFN:单隐层前馈神经网络
以SLFN为例,传统的神经网络训练方法:
1.初始化参数(输入层到隐层的权重与偏置,隐层到输出层的权重与偏置),
2.计算输出层误差并反向传播,迭代直至误差满足要求。
BP算法利用迭代,将误差逐步降低,然而迭代率过低则训练速度慢,过高则无法收敛,导致需要不断调参。
在ELM模型理论中,提出的问题是,这些权重真的需要进行不断地迭进行求解吗?
黄广斌教授给出了一个新的思路:从输入层到隐层的权重根本不需要进行迭代优化,随机赋值即可。并在论文中给出了严格的数学证明。
EML算法原理
输入权值和隐层阈值进行随机赋值,输出层权值则通过最小二乘法直接计算。整个学习过程一次完成,无需迭代,因而能达到极快的学习速度。
两个重要理论:
从以上两条理论我们可以看出,只要激励函数g:R ^ R满足在任意区间上无限可微,那么wt和bt可以从R的n维和R空间的任何区间内根据任意连续的概率分布随机生成 ,也就是说单隐藏层前馈神经网络无需再对wt和bt进行调整;又因为式子||TH*beta||_f=0以概率一成立,我们发现输出层的偏置也不再需要。那么一个新型的但隐藏层反馈神经网络如图2 .3表示 。
n x(L+1) +Lx(m+1)个值,且反向传播算法为了保证系统的稳定性通常选取较小的学习率,使得学习时间大大加长。因此极限学习机在这一方法优势非常巨大,在实验中 ,极限学习机往往在数秒内就完成了运算。而一些比较经典的算法在训练一个单隐藏层神经网络的时候即使是很小的应用也要花费大量的时间,似乎这些算法存在着一个无法逾越的虚拟速度壁垒。
(2)在大多数的应用中,极限学习机的泛化能力大于类似于误差反向传播算法这类的基于梯度的算法。
( 3 ) 传统的基于梯度的算法需要面对诸如局部最小,合适的学习率、过拟合等问题 ,而极限学习机一步到位直接构建起单隐藏层反馈神经网络,避免了这些难以处理的棘手问题。
极限学习机由于这些优势,广大研究人员对极限学习机报以极大的兴趣,使得这几年极限学习机的理论发展很快,应用也在不断地拓宽。
小结
本文主要对极限学习机的本质原理和来龙去脉作了详尽的介绍,阐明极限学习机所具有的各种各样优势吸引广大学者进行研究。然而极限学习机也有自己的劣势,接下来我们将对极限学习机的劣势进行分析和研究并加以改进。
EML算法实战
%% I. 清空环境变量
clear all
clc%% II. 训练集/测试集产生
%%
% 1. 导入数据
load iris_data.mat%%
% 2. 随机产生训练集和测试集
P_train = [];
T_train = [];
P_test = [];
T_test = [];
for i = 1:3temp_input = features((i-1)*50+1:i*50,:);temp_output = classes((i-1)*50+1:i*50,:);n = randperm(50);% 训练集――120个样本P_train = [P_train temp_input(n(1:40),:)'];T_train = [T_train temp_output(n(1:40),:)'];% 测试集――30个样本P_test = [P_test temp_input(n(41:50),:)'];T_test = [T_test temp_output(n(41:50),:)'];
end%% III. ELM创建/训练
[IW,B,LW,TF,TYPE] = elmtrain(P_train,T_train,20,'sig',1);%% IV. ELM仿真测试
T_sim_1 = elmpredict(P_train,IW,B,LW,TF,TYPE);
T_sim_2 = elmpredict(P_test,IW,B,LW,TF,TYPE);%% V. 结果对比
result_1 = [T_train' T_sim_1'];
result_2 = [T_test' T_sim_2'];
%%
% 1. 训练集正确率
k1 = length(find(T_train == T_sim_1));
n1 = length(T_train);
Accuracy_1 = k1 / n1 * 100;
disp(['训练集正确率Accuracy = ' num2str(Accuracy_1) '%(' num2str(k1) '/' num2str(n1) ')'])%%
% 2. 测试集正确率
k2 = length(find(T_test == T_sim_2));
n2 = length(T_test);
Accuracy_2 = k2 / n2 * 100;
disp(['测试集正确率Accuracy = ' num2str(Accuracy_2) '%(' num2str(k2) '/' num2str(n2) ')'])%% VI. 绘图
figure(2)
plot(1:30,T_test,'bo',1:30,T_sim_2,'r-*')
grid on
xlabel('测试集样本编号')
ylabel('测试集样本类别')
string = {'测试集预测结果对比(ELM)';['(正确率Accuracy = ' num2str(Accuracy_2) '%)' ]};
title(string)
legend('真实值','ELM预测值')
Machine Learning学习笔记(四)EML极限学习机相关推荐
- 【Machine Learning 学习笔记】Stochastic Dual Coordinate Ascent for SVM 代码实现
[Machine Learning 学习笔记]Stochastic Dual Coordinate Ascent for SVM 代码实现 通过本篇博客记录一下Stochastic Dual Coor ...
- 【Machine Learning 学习笔记】feature engineering中noisy feature的影响
[Machine Learning 学习笔记]feature engineering中noisy feature的影响 通过本篇博客记录一下添加噪声对Lasso和SVM的影响,采用的数据集为sklea ...
- Machine Learning 学习笔记1 - 基本概念以及各分类
What is machine learning? 并没有广泛认可的定义来准确定义机器学习.以下定义均为译文,若以后有时间,将补充原英文...... 定义1.来自Arthur Samuel(上世纪50 ...
- IBM Machine Learning学习笔记(一)——Exploratory Data Analysis for Machine Learning
数据的探索性分析 1. 读入数据 (1)csv文件读取 (2)json文件读取 (3)SQL数据库读取 (4)Not-only SQL (NoSQL)读取 (5)从网络中获取 2. 数据清洗 (1)缺 ...
- [Python Machine Learning] 学习笔记之scikit-learn机器学习库
1. scikit-learn介绍 scikit-learn是Python的一个开源机器学习模块,它建立在NumPy,SciPy和matplotlib模块之上.值得一提的是,scikit-learn最 ...
- Machine Learning学习笔记(十)K-means聚类算法
K-Means介绍 K-means算法是聚类分析中使用最广泛的算法之一.它把n个对象根据他们的属性分为k个聚类以便使得所获得的聚类满足:同一聚类中的对象相似度较高:而不同聚类中的对象相似度较小.其聚类 ...
- IBM Machine Learning学习笔记(二)——Supervised Learning: Regression
文章目录 一.Introduction to Supervised Machine Learning 二.Data Splits and Cross Validation 三.Regression w ...
- IBM Machine Learning学习笔记——Time Series and Survival Analysis
文章目录 一.时间序列介绍 1.时间序列分析介绍 2.时间序列分解 二.平稳性和时间序列平滑 1.稳定性和自相关 2.时间序列平滑 (1)移动平均法 (2)指数平均法 三.ARMA模型 1.ARMA模 ...
- Georgia Tech - machine learning 学习笔记一
机器学习的分类 1.监督学习(supervised learning) 获取已标记的数据集,通过标记的数据集来收集信息,以便能标记新的数据集,也就是一个函数逼近的过程. 所有的机器学习,当然也包括监督 ...
最新文章
- 使用 git 管理 portage tree
- StringUtils工具类的常用方法
- php制作会员签到打开,【PHP】织梦dedecms会员中心模板带会员签到赚金币功能
- ORACLE工作原理小结
- java红包记录_微信红包算法(java)
- 阿里开源首个深度学习框架 X-Deep Learning!
- 遗传算法(Genetic Algorithm)
- mysql的安全管理_MySQL安全管理
- SQL CE与SQL Server数据交换
- php打印函数console,PHP内置Web Server探究(2)自定义PHP控制台输出console函数
- Jmeter压力测试快速使用
- 加入HA后的完全分布式集群搭建
- Git 报错:error: The requested URL returned error: 401 Unauthorized while accessing
- 2020-11-30 OpenCV人工智能图像处理学习笔记 第4章 计算机视觉加强之图像特效
- 视频 |【2019】Power BI 8月产品功能更新讲解
- 荣耀路由器外界硬盘与win10
- 服务器ie浏览器访问不了网站,IE浏览器打不开网站网页怎么办 IE无法加载网页解决方法。...
- 基于FPGA的微观磁共振实验设备开发
- Failed to execute vcredist_x64.exe
- Qt学习之Windows下Qt应用程序打包成exe安装包
热门文章
- Intellij Idea 好用插件之GsonFormat
- 安装windows+linux双系统
- 离心机 TFN A17CH 微量高速冷冻离心机 17800r/min 触摸屏 轻型便捷微量高速
- 云和恩墨加入GCC,共建绿色计算产业生态
- 计算机专业能评电子工程师吗,电子设计工程师认证
- 点云数据处理合集(三)软件、开源库、数据库
- Docker入门书籍
- 库存管理习题:第三章
- excel工具栏隐藏了怎么办_Office2016基础教程第一章:认识Excel #excel #职场 #办公技巧...
- Scala(三) 类和特质