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

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

相关文章推荐

超限学习机(ELM)

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

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

G.-B. Huang, Q.-Y. Zhu and C.-K. Siew, “Extreme Learning Machine: Theory and Applications”, Neurocom...

Deep Learning 的挑战: Extreme Learning Machine(超限学习机)?

序: 今天刚听了一个关于 Extreme Learning Machine (超限学习机)的讲座,讲员就是ELM的提出者 黄广斌 教授 。ELM的效果自然是比SVM,BP 算法优异很多。并且相对比 当...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

关于无法卸载和安装VISIO2010的问题

之前装个Visio2010突然就打不开了,并且最可恨的是,每次打开word编辑转化搜狗输入法就会提示什么安装错误程序停止工作问是否继续,虽然点击确定后不影响word的使用,但每次都这样就很闹心了,试了...

简单易学的机器学习算法——极限学习机(ELM)

极限学习机(Extreme Learning Machine) ELM

ELM-超限学习机介绍

  • 2015年09月22日 09:35
  • 1.07MB
  • 下载

极限学习机(ELM)算法的matlab与C++实现

极限学习机(ELM)算法的matlab与C++实现
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ELM(Extreme Learning Machine):超限学习机
举报原因:
原因补充:

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