极限学习机(ELM)
1. 引言
极限学习机(extreme learning machine)ELM是一种简单易用、有效的单隐层前馈神经网络SLFNs学习算法。2004年由南洋理工大学黄广斌副教授提出。传统的神经网络学习算法(如BP算法)需要人为设置大量的网络训练参数,并且很容易产生局部最优解。极限学习机只需要设置网络的隐层节点个数,在算法执行过程中不需要调整网络的输入权值以及隐元的偏置,并且产生唯一的最优解,因此具有学习速度快且泛化性能好的优点。
其主要思想是:输入层与隐藏层之间的权值参数,以及隐藏层上的偏置向量参数是 once for all 的(不需要像其他基于梯度的学习算法一样通过迭代反复调整刷新),求解很直接,只需求解一个最小范数最小二乘问题(最终化归成求解一个矩阵的 Moore Penrose广义逆问题)。因此,该算法具有训练参数少、速度非常快等优点。接下来的若干年,黄教授带领的团队在此基础上又做了更多的发展,例如,将ELM推广到复数域,提出基于 ELM 的在线时序算法等等。
2. 基本描述
对于一个单隐层前馈神经网络(Single-hidden Layer Feedforward Networks, SLFNs),结构如下图所示
为描述方便,引入以下记号:
- NN:训练样本总数
- N~ \tilde N:隐藏层单元(以下简称隐单元)的个数
- n,mn,m:输入和输出层的维度(即输入和输出向量的长度)
- (xj,tj),j=1,2,...,N(x_j,t_j),j=1,2,...,N:训练样本(要求它们是distinct的),其中
x_j=(x_{j1},x_{j2},...,x_{jn})^T \in R^n
t_j=(t_{j1},t_{j2},...,t_{jn})^T \in R^m
将所有输出向量按行拼接起来,可得到整体输出矩阵
T = \left[\begin{matrix}t_1^T \\t_2^T \\\vdots \\t_N^T \end{matrix}\right] _{\tilde N \times m}= \left[\begin{matrix}t_{11} & t_{12} & \cdots & t_{1m} \\t_{21} & t_{22} & \cdots & t_{2m} \\\vdots & \vdots & \ddots & \vdots \\t_{N1} & t_{N2} & \cdots & t_{Nm}\end{matrix}\right]
- oj,j=1,2,...,No_j,j=1,2,...,N:与标注 tjt_j对应的实际输出
- W=(wij)N~×nW=(w_{ij})_{\tilde N \times n}:输入层与隐藏层之间的劝矩阵,其中 WW对应第·¥i行对应的向量
w_i = (w_{i1},w_{i2},...,w_{in})^T
表示连接隐藏层第 ii个单元与输入单元的权向量。
- b=(b1,b2,...,bN~)T b=(b_1,b_2,...,b_{\tilde N})^T:偏置向量, bib_i表示第 ii个隐单元的阈值
- β=(βij)N~×m\beta = (\beta_{ij})_{\tilde N \times m}:隐藏层与输出层之间的权矩阵,其中 β\beta的第 ii行对应的向量
βi=(βi1,βi2,...,βim)T
\beta_i = (\beta_{i1},\beta_{i2},...,\beta_{im})^T
表示连接隐藏层第 ii个单元和输出单元的权向量,矩阵展开可以写成β=⎡⎣⎢⎢⎢⎢⎢β11β21⋮βN~1β12β22⋮βN~2⋯⋯⋱⋯β1mβ2m⋮βN~m⎤⎦⎥⎥⎥⎥⎥\beta = \left[\begin{matrix}\beta_{11} & \beta_{12} & \cdots & \beta_{1m} \\\beta_{21} & \beta_{22} & \cdots & \beta_{2m} \\\vdots & \vdots & \ddots & \vdots \\\beta_{\tilde N1} & \beta_{\tilde N2} & \cdots & \beta_{\tilde Nm}\end{matrix}\right]
- g(x)g(x):激活函数
3. 模型
数学上,标准的SLFNs模型为
∑i=1N~g(wi⋅xj+bi)βi=oj,j=1,2,...,N\sum_{i=1}^{\tilde N}g(w_i \cdot x_j+b_i) \beta_i=o_j,j=1,2,...,N
单隐层神经网络的最终目的是为了是输出的误差最小,在极限情况下为零误差逼近,可以表示为∑j=1N||oj−tj||=0\sum_{j=1}^N||o_j-t_j||=0
即存在 βi,wi.bi\beta_i,w_i.b_i使得∑t=1N~g(wi⋅xj+bi)βi=tj,j=1,2,...,N\sum_{t=1}^{\tilde N}g(w_i \cdot x_j+b_i) \beta_i=t_j,j=1,2,...,N
以上N个线性方程组可以简单用矩阵表示Hβ=TH\beta = T
其中H(wi,...,wN~,b1,...,bN~,x1,...,xN)H(w_i,...,w_{\tilde N},b_1,...,b_{\tilde N},x_1,...,x_N)
=⎡⎣⎢⎢⎢g(w1⋅x1+b1)⋮g(w1⋅xN+b1)⋯⋱⋯g(wN~⋅x1+bN~)⋮g(wN~⋅xN+bN~)⎤⎦⎥⎥⎥N×N~= \left[\begin{matrix}g(w_1 \cdot x_1+b_1) & \cdots & g(w_{\tilde N} \cdot x_1+b_{\tilde N}) \\\vdots & \ddots & \vdots \\g(w_1 \cdot x_N+b_1) & \cdots & g(w_{\tilde N} \cdot x_N+b_{\tilde N})\end{matrix}\right] _{N \times \tilde N}
β=⎡⎣⎢⎢⎢βT1⋮βTN~⎤⎦⎥⎥⎥N~×N\beta = \left[\begin{matrix}\beta_1^T \\\vdots \\\beta_{\tilde N}^T\end{matrix}\right] _{\tilde N \times N}
andand
T=⎡⎣⎢⎢TT1⋮TTN⎤⎦⎥⎥N×mT= \left[\begin{matrix}T_1^T \\\vdots \\T_N^T\end{matrix}\right] _{ N \times m}
为了能够训练单隐层神经网络,我们希望得到 βi,wi.bi\beta_i,w_i.b_i,使得||H(w^1,...,w^N~,b^1,...,b^N~)β^−T||=minw,b,β||H(w1,...,wN~,b1,...,bN~)β−T||||H(\hat w_1,...,\hat w_{\tilde N},\hat b_1,...,\hat b_{\tilde N})\hat \beta-T||= \min_{w,b,\beta}||H(w_1,...,w_{\tilde N}, b_1,...,b_{\tilde N})\beta-T||
其最小二乘解便为β^=H+T\hat \beta = H^+T
其中 H+H^+是 HH的广义逆矩阵,利用SVD分解等许多方法均可以求出。传统方法是写出目标函数,然后求解梯度,利用BP原理算法反向传播误差,BP算法存在一些缺点:
1. 学习率的取值。学习率过小,则收敛非常慢;学习率过大,则算法不稳定,可能会发散。
2. 局部最优。若损失函数不是凸函数,则算法可能陷入局部最优解。
3. 过拟合。BP算法如果参数设置不当,则可能会造成过拟合,使得泛化能力变差,因此需要引入交叉验证和极小化过程中引入合适的停止机制。
4. 耗时。显然基于梯度的学习算法通常都比较耗时。相比较BP算法,ELM算法最大的优势便是速度极快,当然准确率有可能会损失一些。另外基于梯度求解的算法就是有可能陷入到局部最优解出不来,而ELM是基于最小二乘原理所以不存在这个。当然ELM算法也存在缺点,就是单层限制,在多层的情况下不像BP算法那样梯度存在链式法则很好处理。
4. 算法步骤
- 任意赋值输入权值wi,bi,i=1,2,...,N~w_i,b_i,i=1,2,...,\tilde N
- 计算隐层输出矩阵HH
- 计算输出权矩阵β^=H+T\hat \beta = H^+T
极限学习机(ELM)相关推荐
- 基于樽海鞘算法的极限学习机(ELM)回归预测-附代码
基于樽海鞘算法的极限学习机(ELM)回归预测 文章目录 基于樽海鞘算法的极限学习机(ELM)回归预测 1.极限学习机原理概述 2.ELM学习算法 3.回归问题数据处理 4.基于樽海鞘算法优化的ELM ...
- 基于哈里斯鹰算法的极限学习机(ELM)分类算法-附代码
基于哈里斯鹰算法的极限学习机(ELM)分类算法 文章目录 基于哈里斯鹰算法的极限学习机(ELM)分类算法 1.极限学习机原理概述 2.ELM学习算法 3.分类问题 4.基于哈里斯鹰算法优化的ELM 5 ...
- Python机器学习17——极限学习机(ELM)
本系列基本不讲数学原理,只从代码角度去让读者们利用最简洁的Python代码实现机器学习方法. (2023年3月11日,已更新--针对评论区指出没有加入激活函数,现在已更新,加入了sigmod激活函数, ...
- 基于粒子群算法的极限学习机(ELM)分类算法-附代码
基于粒子群算法的极限学习机(ELM)分类算法 文章目录 基于粒子群算法的极限学习机(ELM)分类算法 1.极限学习机原理概述 2.ELM学习算法 3.分类问题 4.基于粒子群算法优化的ELM 5.测试 ...
- 【ELM预测】基于粒子群算法改进极限学习机ELM实现数据预测matlab源码
一.极限学习机的概念 极限学习机(Extreme Learning Machine) ELM,是由黄广斌提出来的求解单隐层神经网络的算法. ELM最大的特点是对于传统的神经网络,尤其是单隐层前馈神经网 ...
- 【ELM预测】基于极限学习机ELM实现数据预测matlab源码
一.极限学习机的概念 极限学习机(Extreme Learning Machine) ELM,是由黄广斌提出来的求解单隐层神经网络的算法. ELM最大的特点是对于传统的神经网络,尤其是单隐层前馈神经网 ...
- 【ELM预测】基于遗传算法改进极限学习机ELM实现数据预测matlab源码
一.极限学习机的概念 极限学习机(Extreme Learning Machine) ELM,是由黄广斌提出来的求解单隐层神经网络的算法. ELM最大的特点是对于传统的神经网络,尤其是单隐层前馈神经网 ...
- 【预测模型-ELM分类】基于极限学习机ELM+OSELM+KELM+半监督SSELM+USELM实现数据集分类附matlab代码
1 内容介绍 极限学习机是由黄广斌等[13]提出的一种针对前馈神经网络设计的机器学习算法.该算法结构简单.计算速率快.ELM的关键在于找到输出和输出之间的映射空间.首先确定隐含层之间的连接权值w和隐含 ...
- 基于极限学习机ELM的人脸识别程序
前言 有关极限学习机基础知识请参考 极限学习机详解 目标 基于YALE人脸库,15组人脸(每组照片代表一个人),进行人脸分类识别.(下载地址:YALE人脸库) 将每类人脸前10张照片用于学习,第11张 ...
最新文章
- 随记:kickstart远程批量无人值守安装linux
- phpmyadmin执行mysql语句_如何在phpMyAdmin中执行sql语句
- PHP--认识Smarty模板引擎
- 谈判专家(东方化改题+懒得看标程)
- CompletableFuture并行异步处理类使用示例
- 方案解析:纸张计数精准测量出200张纸?!第1名妥妥的
- Qt文档阅读笔记-QScopedPointer解析及实例
- 笔记本样机的识别(加测硬盘通电时间软件HDTune)
- JavaScript模板引擎-artTemplate
- UID/DID/SID总结
- windows电脑打开jnlp文件设置
- ical4j 实现ICS文件的生成和解析
- 武林外传之同福奇缘 【安卓游戏】
- 行内和块级元素区别?如何让行内元素设置宽高?
- SQL server中时间获取少了两天解决方法
- 稳压二极管、肖特基二极管、ESD静电保护二极管、TVS瞬态抑制保护管
- sklearn聚类之—KMeans
- Nginx rewrite 详解
- 排序计算机教案,八年级信息技术教案:数据排序
- VB.NET基于WEB房地产评估系统(源代码+文档)