一种基于尺度变换激活函数的超限学习机的改进方法与流程

文档序号:11655062阅读:669来源:国知局
一种基于尺度变换激活函数的超限学习机的改进方法与流程

本发明涉及一种改进的超限学习机算法,尤其是一种基于尺度变换激活函数的超限学习机的改进方法,属于人工智能的技术领域。



背景技术:

超限学习机(extremelearningmachine,elm)是一种单隐含层前馈神经网络(single-hiddenlayerfeedforwardneuralnetworks,slfns),仅有一个隐含层。相比较于传统的bp神经网络需要多次迭代进行参数的调整,训练速度慢,容易陷入局部极小值,无法达到全局最小等缺点,elm算法随机产生输入层与隐含层的连接权值与偏置,且在训练过程中无需进行隐层参数迭代调整,只需要设置隐含层神经元的个数以及激活函数,便可以通过最小化平方损失函数得到输出权值。此时,这个问题转化为一个最小二乘问题,最终化为求解一个矩阵的moore-penrose问题。即:对于给定的一个训练的数据集{(xi,ti)|xi∈rd,ti∈rm,i=1,2,...,n},其中xi是训练数据向量;ti是每一个样本的目标;d是每一个输入样本的特征向量维数;m是总共的类数。elm的目标就是达到最小的训练误差,即

这里,h是隐藏层的输出矩阵,可以表示成

此外,β是输出权重矩阵,t是训练样本的目标矩阵,可表示为

其中,是随机生成的输入权重和隐藏节点的偏置。g(·)是激活函数。l是隐藏节点的个数。β是输出权重矩阵,也就是elm需要进行求解的量。t是训练样本的目标矩阵,也就是每一个样本的类号。然后通过使用moore-penrose逆得到最小二乘算法的解析解为

近十年来,elm已经吸引了大量的关注。但是仍然存在一个现实的问题:对于固定的隐藏层的激活函数,随机生成的未经调整的隐藏层参数可能导致许多经过隐藏层参数作用后的数据落入激活函数的饱和区域(远离原点的区域)或者原点附近的单调区域(近似一个线性函数),从而使得泛化性能变差。其原因是对输入数据进行变换v=w·x+b后,v的值集中在激活函数的饱和区域或者原点附近(接近于线性函数)。以两个基准图像识别数据集(ar人脸数据集和扩展yaleb数据集)为例,使用sigmoid函数作为elm中的激活函数,elm的隐藏层输出的分布如图2所示,可以看到,大多数隐藏节点输出g(v)集中在了0和1(sigmoid的饱和状态)附近。这样隐藏节点输出矩阵的条件数会非常大,使得最后求解输出权重过程变得不稳定,容易受噪声干扰;此外,由于上述的这种隐藏层输出数据的分布的集中性,导致超限学习机的泛化性能变差。

因此,如何能够较好地克服上述问题,提高elm的稳健性和泛化能力显得非常重要。



技术实现要素:

本发明为了克服上述存在的传统的超限学习机技术中的不足,提出了一种基于尺度变换激活函数的超限学习机的改进方法(selm)。这个改进的超限学习机(即selm)使用了一种基于尺度变换的激活函数,能够根据输入数据的分布以及随机生成的隐藏层参数值,自适应地调节缩放和平移参数,使隐藏层数据经过尺度变换激活函数的映射后,在输出区间上能够服从均匀分布,从而使得信息熵达到最大,即能够从数据中得到更多信息,具有更稳健的泛化性能。

按照本发明提供的技术方案,提出了一种基于尺度变换激活函数的超限学习机的改进方法,包括如下步骤:

步骤1、随机产生隐藏层节点参数(w,b),

其中,wi是连接第i个隐藏层节点和输入神经元的输入权重,bi是第i个隐藏层节点的偏差,l是隐藏层节点个数。

步骤2、给定一个训练的数据集{(xi,ti)|xi∈rd,ti∈rm,i=1,2,...,n},其中,xi是训练数据向量;ti是每一个样本的目标;d是每一个输入样本的特征向量维数;m是输出向量的维数。

经过隐藏层节点参数(w,b),变换所得隐藏层数据矩阵v:

步骤3、将隐藏层数据矩阵v中的n×l个元素按照从小到大的顺序排列成n×l维向量vasc,即:

vasc=[v1,…,vk,…,vn×l]t公式3

步骤4、给定一个激活函数g(·),并确定隐藏层的期望输出区间为

步骤5、将区间平均分成n×l-1个子区间,以所有子区间的端点构建期望输出向量

步骤6、计算尺度变换参数s和t,用来调整向量vasc,使得调整后的向量经过激活函数g(·)映射后的数据在隐藏层的期望的输出区间上服从均匀分布,即向量vasc经过g(s·vasc+t)映射后,隐藏层输出均匀地分布在区间上。

通过计算最小时对应的尺度变换参数s和t,求得s和t所对应的尺度变换激活函数g(v,s,t),从而保证g(vasc,s,t)中的元素在上服从均匀分布。

步骤7、以尺度变换激活函数g(v,s,t)求其隐藏层的输出矩阵h,

并求得输出权重其中t为训练样本的目标矩阵。

步骤8、对于未知的测试样本xp,可得到h=g(w·xp+b,s,t),进而求得输出其中s和t为步骤6求出的尺度变换参数,w,b为训练过程中已经确定的随机隐藏层节点参数,h为隐藏层的输出,op为网络的输出。

所述步骤5中,隐藏层的期望输出区间为n×l个端点将区间平均分成n×l-1个子区间,其中令得到

所述步骤6中,中只有两个参数需要求解,对于大部分应用有n×l>>2,因此没有必要将所有的隐藏层节点数据用作参数估计,故采用均匀下采样和梯度下降算法求解的最优化问题,具体的步骤如下:

6-1.首先确定下采样向量的维度nd,求得下采样率为为取整函数。对vasc和期望输出向量进行均匀下采样求得新的向量:

6-2.定义最大迭代步数κ和一个较小的度量误差ε>0。

6-3.随机定义s和t的值,通过误差函数求得ε的值。

6-4.由定义的s和t以及计算求得的ε,根据s和t的梯度解析形式求解对应的

6-5.通过公式9逼近s和t的目标值:

其中η为步长。

6-6.每循环一次,迭代步数κ增加一次,ε的值也更新一次。如果迭代步数小于最大迭代步数:κ<κ,或误差函数值大于度量误差:ε>ε则继续重复进行步骤6-3到步骤6-5,直到跳出循环,得到参数s和t的目标值,进而得到尺度变换激活函数g(s,v,t)。

本发明有益效果如下:

这种基于尺度变换激活函数的改进超限学习机能够根据输入数据分布和随机生成的隐藏层参数,自适应调整缩放和平移参数,最后通过尺度变换激活函数映射后,能够使隐藏层输出均匀的分布在期望的输出区间内,这样,不仅避免了未经调整的隐藏层参数可能导致数据坠入激活函数饱和区域的问题,而且相比于非均匀分布的传统超限学习机,能从数据中得到更多信息,具有更稳健的泛化性能。

附图说明

图1为极限学习机原理图;

图2为selm的训练及测试效果图。

图3为本发明流程图。

具体实施方式:

下面结合具体实施例对本发明作进一步说明。以下描述仅作为示范和解释,并不对本发明作任何形式上的限制。

如图1-3所示,一种基于尺度变换激活函数的超限学习机的改进方法,实现的过程如下:

(1)选取任意一个训练数据集,首先由随机函数随机产生隐藏层节点参数(w,b),wi是连接第i个隐藏层节点和输入神经元的输入权重,bi是第i个隐藏层节点的偏差,l是隐藏层节点个数。由给定训练数据集{(xi,ti)|xi∈rd,ti∈rm,i=1,2,...,n},其中xi是训练数据向量;ti是每一个样本的目标;d是每一个输入样本的特征向量维数;m是输出向量的维数。经过隐藏层参数(w,b),变换所得隐藏层数据矩阵v:

将v中的(n×l)个元素以上升序列排列成(n×l)维隐藏层数据向量vasc,

且vasc=[v1,…,vk,…,vn×l]t

并对其均匀下采样,下采样向量的维度为nd,得到新的向量:

(2)给定一个激活函数g(·),隐藏层的期望输出区间为将区间平均分成(n×l)-1个子区间,以所有的子区间的端点构建输出向量均匀下采样,下采样向量的维度为nd。设置初始变换参数s和t,步长η,较小的度量误差ε>0,最大迭代步数κ。迭代计算出最小时对应的s和t。从而求得此时的s和t所对应的尺度变换激活函数g(s·v+t),此时g(vasc,s,t)中元素在上服从均匀分布。

(3)以尺度变换激活函数g(s·v+t)求其隐藏层的输出矩阵h,

并求得输出权重其中t为训练样本的目标矩阵。至此完成此selm的训练过程,训练过程中得出了隐藏层节点参数(w,b),尺度变换参数s和t,及尺度变换激活函数g(s·v+t)和输出权重

(4)测试过程,对于未知的测试样本xp,可得到h=g(w·xp+b,s,t),进而求得输出其中s和t为上面步骤求出的尺度变换参数,w,b为上面训练过程中已经确定的随机隐层节点参数,h为隐层输出,op为网络的输出。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1