ELM(Extreme Learning Machine):超限学习机

原创 2017年01月03日 18:59:31

定义

极限学习机器( Extreme Learning Machine,ELM) 是神经网络研究中的一种算法,是一种泛化的单隐层前馈神经网络( Single-hidden Layer Feed forward Network,SLFN)[1]。

特点

输入权值和隐层阈值进行随机赋值,输出层权值则通过最小二乘法直接计算。整个学习过程一次完成,无需迭代,因而能达到极快的学习速度[2]。

算法

假设有N个任意的样本 (Xi,ti)
其中Xi=[xi1,xi2,,xin]TRTti=[ti1,ti2,,tim]TRm

对于一个具有L个隐层节点,激活函数为g(x)的单隐层前馈神经网络输出可以表示为

i=1Lβigi(Xj)=i=1Lβig(WiXj+bi)=oj,j=1,2,N

其中, Wi=[wi1,wi2,,win]T为输入权重,βi=[βi1,βi2,,βim]T为输出权重,bi是第i个隐层单元的偏置,WiXj表示WiXj的内积

单隐层前馈神经网络学习的目标是在最小的误差下逼近N个样本,可以表示为

j=1Nojtj=0,j=1,2,,N

即存在βi,Wi,bi使得

i=1L=βig(WiXj+bi)=tj,j=1,2,,N

可以矩阵表示为

Hβ=T

其中,H是隐层节点输出,β为输出权重,T为期望输出
H(W1,,WL,b1,,bL,X1,,XL)

=g(W1X1+b1)g(W1XN+b1)g(WLX1+bL)g(WLXN+bL)N×L

其中

β=βT1βTLL×mT=TT1TTNN×m

为了能够训练单隐层神经网络,我们希望得到Wˆi,b^i,β^i使得

H(W^i,b^i)β^iT=minW,b,βH(Wi,bi)βiT,i=1,2,,L

等价于最小化损失函数

E=j=1N(i=1Lβig(WiXj+bi)tj)2

在ELM的思想中中,在输入权重Wi和隐含层偏置Bi随机确定后,隐层的输出矩阵H就会被确定,单隐层神经网络的求解过程就会被转换成一个线性系统Hβ=T的求解问题,输出权重β可由下式确定。(H+是矩阵H的Moore-Penrose广义逆)

β^=H+T

代码描述(Python)

import numpy as np
#激活函数
def F(x):
    return 1.0/(1+np.exp(-x))
#构造偏置矩阵
def CreateB(Num,InitB):
    return np.dot(np.ones((Num,1)),InitB)
#计算精度
def CalAccur(data,label,InW,OutW,InitB):
    Num=data.shape[0]
    result=np.dot(F(np.dot(data,InW)+CreateB(Num,InitB)),OutW)
    OriIndex=np.argmax(label,axis=1)
    NewIndex=np.argmax(result,axis=1)
    count=float(0)
    for i in range(Num):
        if(OriIndex[i]==NewIndex[i]):
            count+=1
    return count/Num

#读入数据
TrainData=np.loadtxt('ti.txt',delimiter=',')
TrainLabel=np.loadtxt('to.txt',delimiter=',')
TestData=np.loadtxt('ci.txt',delimiter=',')
TestLabel=np.loadtxt('co.txt',delimiter=',')
#获得数据的shape
[TrainInsNum,TrainFeaNum]=TrainData.shape
[TestInsNum,TestFeaNum]=TestData.shape
#设置隐层神经元结点数
NeuNum=int(input("Please input the number of the Neurals :"))
#随机生成输入层到隐含层之间的权重矩阵
InW=np.random.random((TrainFeaNum,NeuNum))*2-1
#随机生成每个隐层结点的偏置
InitB=np.random.random((1,NeuNum))
#计算输出矩阵
OutW=np.dot(np.linalg.pinv(F(np.dot(TrainData,InW)+CreateB(TrainInsNum,InitB))),TrainLabel)
#计算精度
TrainAccur=CalAccur(TrainData,TrainLabel,InW,OutW,InitB)
TestAccur=CalAccur(TestData,TestLabel,InW,OutW,InitB)
#输出训练精度和测试精度
print(TrainAccur)
print(TestAccur)

[1] HUANG G B, ZHU Q Y, SIEW C K. Extreme learning machine:theory and applications [J]. Neurocomputing, 2006,70( 1) : 489 -50.
[2] 康松林, 刘乐, 刘楚楚,等. 多层极限学习机在入侵检测中的应用[J]. 计算机应用, 2015, 35(9):2513-2518.
[3] zhiyong_will.简单易学的机器学习算法——极限学习机(ELM).http://blog.csdn.net/google19890102/article/details/18222103

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

NumPy 模块 常用方法 学习

import numpy as np1. 多维数组:类型 numpy.ndarray 方法:numpy.array(tuple[,dtype]):  # tuple 可以是由 tuple 组成的;dt...

机器学习该如何入门

引言  可能你对这个名字叫“机器学习”的家伙不是特别的了解,但是相信用过iPhone的同学都知道iPhone的语音助手Siri,它能帮你打电话,查看天气等等;相信大家尤其是美女童鞋都用过美颜相机,它能...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

Scikit-learn实战之SVM分类

Support vector machines (SVMs) 是一系列的有监督的学习方法,主要用于分类、回归和异常点检测。1. SVM的主要优点如下: 在高维空间有效; 当样本空间的维度比样本数高时任...

超限学习机(ELM)

ELM(Exteme learning machine,超限学习机),由新加坡南洋理工大学的Guangbin Huang(黄光斌)副教授提出的。

Win10 64bit下安装GPU版Tensorflow+Keras

Tensorflow和Keras都是支持Python接口的,所以本文中说的都是搭建一个Python的深度学习环境。        Keras是对Tensorflow或者Theano的再次封装,也就是以...

详解数据挖掘与机器学习的区别与联系

0、为什么写这篇博文  最近有很多刚入门AI领域的小伙伴问我:数据挖掘与机器学习之间的区别于联系。为了不每次都给他们长篇大论的解释,故此在网上整理了一些资料,整理成此篇文章,下次谁问我直接就给他发个链...

超限学习机--ELN 读书笔记一

G.-B. Huang, Q.-Y. Zhu and C.-K. Siew, “Extreme Learning Machine: Theory and Applications”, Neurocom...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)