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

定义

极限学习机器( 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

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Mosout/article/details/53997040
个人分类: 机器学习
想对作者说点什么? 我来说一句

extreme learning machine

2014年07月19日 1.08MB 下载

没有更多推荐了,返回首页

关闭
关闭