概念
ELM是一种应用于训练SLFN的算法,传统的单隐层前馈神经网络(Single hidden Layer Feedforward Network, SLFN)由于其结构简单、训练速度快且具有较高的泛化能力等特点,已经在模式识别、信号处理、短期预测等领域有了很多应用成果。相比于传统的基于梯度下降的BP算法来训练SLFN,ELM具有更好的泛化能力和更快的训练速度。
虽然,国内外对ELM的评价褒贬不一,但是本着学习的态度就稍稍整理一下了。
超限学习机(ELM,Extreme Learning Machine)
1、ELM学习理论
ELM的提出目的是为了解决人工神经网络训练时耗费的时间和高成本。对此,黄教授提出了ELM学习理论:
机器或者生物学习可以不需要调整隐层节点:给定任何连续目标函数或者可分类目标,只要前馈神经的隐层节点是非线性阶段连续的,神经网络无需调整隐层节点就能任意逼近目标连续函数或者对分类目标加以区分。
ELM考虑的主要问题在于高泛化能力、尽可能少的人工干预以及实时学习。
2、ELM实现原理
下面是ELM网络的结构,从直观上看,就是一个SLFN的结构图。
在隐层中的每个节点处,有如下定义:
第 i i i个隐层节点的输出方程为: h i ( x ) = G ( a i , b i , x ) h_{i}(x) = G(a_{i}, b_{i}, x) hi(x)=G(ai,bi,x)
其中 a i , b i a_{i} , b_{i} ai,bi为第 i i i个隐层节点的参数,可以理解为对应的输入权重和节点的偏向。 G ( . ) G(.) G(.)则是相应的激活函数,当选取不同激活函数时,得到的表现形式也便不同:
S i g m o i d : G ( a i , b i , x ) = g ( a i × x + b i ) Sigmoid:G(a_{i},b_{i},x) = g(a_{i} \times x + b_{i}) Sigmoid:G(ai,bi,x)=g(ai×x+bi)
R B F : G ( a i , b i , x ) = g ( b i ∣ ∣ x − a i ∣ ∣ ) RBF:G(a_{i},b_{i},x) = g(b_{i}||x-a_{i}||) RBF:G(ai,bi,x)=g(bi∣∣x−ai∣∣)
F o u r i e r S e r i e s : G ( a i , b i , x ) = c o s ( a i × x + b i ) Fourier Series:G(a_{i},b_{i},x) = cos(a_{i}\times x + b_{i}) FourierSeries:G(ai,bi,x)=cos(ai×x+bi)
最后再根据任务是做分类还是回归,单分类还是多分类来进行加权求和得到输出结果:
f ( x ) = ∑ i = 1 L β i G ( a i , b i , x ) = β H f(x) = \sum_{i=1}^{L}\beta_{i}G(a_{i},b_{i},x)=\beta H f(x)=∑i=1LβiG(ai,bi,x)=βH
对于有 N N N个批次的样本 x i , i = 1 , 2 , 3... , N x_{i}, i=1,2,3...,N xi,i=1,2,3...,N,对应的目标值为 t i , i = 1 , 2 , 3... , N t_{i},i=1,2,3...,N ti,i=1,2,3...,N,这样,目标函数就是使得 m i n ∣ ∣ f ( X ) − T ∣ ∣ min||f(X) - T|| min∣∣f(X)−T∣∣,等价于最小化损失函数 E = ∑ i = 1 N [ f ( x i ) − t i ] 2 E=\sum_{i=1}^{N}[f(x_{i}) - t_{i}]^{2} E=∑i=1N[f(xi)−ti]2,这里通过传统的梯度下降不断迭代就可以调整所有的参数,而在ELM算法中,由于隐层的输入权重 a L a_{L} aL 和偏向 b L b_{L} bL 是随机产生的,也就是矩阵 H H H是固定的,所以训练过程只需要求解方程 β H = T \beta H = T βH=T中的输出权重 β \beta β就可以了,也就是 β ^ = T H T \hat{\beta} = TH^{T} β^=THT。
在线顺序超限学习机(OS-ELM,Online Sequential Extreme Learning Machine
因为ELM是一种 batch based 的算法,所以这就意味着在训练阶段,它需要获得所有的训练数据,然后 train then test,而不是随着新数据的到来在线更新。所以黄广斌教授的团队又提出了在线顺序超限学习机算法,用于在线学习并更新网络参数,OS-ELM具备了ELM的速度和泛化能力上的优点,并且可以随着新数据的到来不断更新模型,而不是重新训练模型。
OS-ELM分为两个部分,第一部分为通过少量的训练样本,利用ELM算法计算并初始化输出权重 β 0 \beta_{0} β0;第二部分开始在线学习,每次当一个新的数据样本到来时,通过一个递推公式得到新的输出权重 β 1 \beta_{1} β1,从而实现在线且快速的训练,具体的关于 β \beta β的递推公式推导可以参考大佬 https://blog.csdn.net/google19890102/article/details/45273309 的文章。
总结
关于业内对于ELM算法褒贬不一的原因还是其算法的简单、随机产生权重的不稳定,ELM利用随机初始化输入权重将求解输出权重转换为矩阵运算,通过一个单隐层的前馈神经网络来匹敌深度神经网络的复杂的梯度下降迭代的训练过程,确实让从事深度神经网络研究的一些人不得不产生质疑,但是毕竟ELM的成果也是很多的,所以一些短期预测、分类或者在线学习的问题还是可以使用的,毕竟只是个工具,用对了自然有其work的地方。
Ref
黄教授2016年会议关于ELM的ppt
简单易学的机器学习算法——极限学习机(ELM)
简单易学的机器学习算法——在线顺序极限学习机OS-ELM