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的),其中

xj=(xj1,xj2,...,xjn)T∈Rn

x_j=(x_{j1},x_{j2},...,x_{jn})^T \in R^n

tj=(tj1,tj2,...,tjn)T∈Rm

t_j=(t_{j1},t_{j2},...,t_{jn})^T \in R^m
将所有输出向量按行拼接起来,可得到整体输出矩阵

T=⎡⎣⎢⎢⎢⎢⎢tT1tT2⋮tTN⎤⎦⎥⎥⎥⎥⎥N~×m=⎡⎣⎢⎢⎢⎢⎢t11t21⋮tN1t12t22⋮tN2⋯⋯⋱⋯t1mt2m⋮tNm⎤⎦⎥⎥⎥⎥⎥

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行对应的向量

wi=(wi1,wi2,...,win)T

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β=T

      H\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}

      and

      and

      T=⎡⎣⎢⎢TT1⋮TTN⎤⎦⎥⎥N×m

      T= \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. 算法步骤

      1. 任意赋值输入权值wi,bi,i=1,2,...,N~w_i,b_i,i=1,2,...,\tilde N
      2. 计算隐层输出矩阵HH
      3. 计算输出权矩阵β^=H+T\hat \beta = H^+T

极限学习机(ELM)相关推荐

  1. 基于樽海鞘算法的极限学习机(ELM)回归预测-附代码

    基于樽海鞘算法的极限学习机(ELM)回归预测 文章目录 基于樽海鞘算法的极限学习机(ELM)回归预测 1.极限学习机原理概述 2.ELM学习算法 3.回归问题数据处理 4.基于樽海鞘算法优化的ELM ...

  2. 基于哈里斯鹰算法的极限学习机(ELM)分类算法-附代码

    基于哈里斯鹰算法的极限学习机(ELM)分类算法 文章目录 基于哈里斯鹰算法的极限学习机(ELM)分类算法 1.极限学习机原理概述 2.ELM学习算法 3.分类问题 4.基于哈里斯鹰算法优化的ELM 5 ...

  3. Python机器学习17——极限学习机(ELM)

    本系列基本不讲数学原理,只从代码角度去让读者们利用最简洁的Python代码实现机器学习方法. (2023年3月11日,已更新--针对评论区指出没有加入激活函数,现在已更新,加入了sigmod激活函数, ...

  4. 基于粒子群算法的极限学习机(ELM)分类算法-附代码

    基于粒子群算法的极限学习机(ELM)分类算法 文章目录 基于粒子群算法的极限学习机(ELM)分类算法 1.极限学习机原理概述 2.ELM学习算法 3.分类问题 4.基于粒子群算法优化的ELM 5.测试 ...

  5. 【ELM预测】基于粒子群算法改进极限学习机ELM实现数据预测matlab源码

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

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

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

  7. 【ELM预测】基于遗传算法改进极限学习机ELM实现数据预测matlab源码

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

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

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

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

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

最新文章

  1. 随记:kickstart远程批量无人值守安装linux
  2. phpmyadmin执行mysql语句_如何在phpMyAdmin中执行sql语句
  3. PHP--认识Smarty模板引擎
  4. 谈判专家(东方化改题+懒得看标程)
  5. CompletableFuture并行异步处理类使用示例
  6. 方案解析:纸张计数精准测量出200张纸?!第1名妥妥的
  7. Qt文档阅读笔记-QScopedPointer解析及实例
  8. 笔记本样机的识别(加测硬盘通电时间软件HDTune)
  9. JavaScript模板引擎-artTemplate
  10. UID/DID/SID总结
  11. windows电脑打开jnlp文件设置
  12. ical4j 实现ICS文件的生成和解析
  13. 武林外传之同福奇缘 【安卓游戏】
  14. 行内和块级元素区别?如何让行内元素设置宽高?
  15. SQL server中时间获取少了两天解决方法
  16. 稳压二极管、肖特基二极管、ESD静电保护二极管、TVS瞬态抑制保护管
  17. sklearn聚类之—KMeans
  18. Nginx rewrite 详解
  19. 排序计算机教案,八年级信息技术教案:数据排序
  20. VB.NET基于WEB房地产评估系统(源代码+文档)

热门文章

  1. 今日头条:任务调度面试题解答
  2. Alpha 冲刺 (4/10)
  3. NVIDIA在GDC展示最新DX10开发套件
  4. docker学习日记
  5. Mac Chrome导出扩展程序crx文件
  6. Teigha前世今身
  7. java如果智慧小区物业系统,基于ssm\springboot智慧小区物业管理平台实现
  8. 吉林大学2021年3月考试计算机组成原理,吉林大学2021年3月考试《计算机组成原理》作业考核试题(参考)...
  9. @所有人,网易数字+大会报名通道正式开启!
  10. 算法题解 - 牛客编程巅峰赛S1第3场 - 黄金钻石组