基于多个在线核极限学习机的并行模型训练算法

2019-05-16 01:39沈哲钧凌志扬
智能计算机与应用 2019年2期
关键词:训练样本学习机权值

沈哲钧,凌志扬

(东华大学计算机科学与技术学院,上海201620)

0 引 言

随着机器学习、深度学习理论的不断发展,现代预测技术中,主要包括人工神经网络、支持向量机以及极限学习机等模型作为代表的预测方法在传统平台上都已经有着广泛的研究实践与应用。

传统神经网络方法一定程度上改善了基于时间序列预测模型的很多不足,但是容易出现局部最小、过度的信号迭代、过多的参数设定以及较慢的学习速度导致的较长模型训练时间等问题。极限学习机模型的优势在于,神经网络模型比较简单,而且可以灵活地处理非线性信息序列的问题,通过基于影响因素的非线性映射来预测数据[1],有效降低了网络参数计算时间,在保证预测准确率的基础上提高了模型训练时间以及表现出较好的模型泛化性能的条件下,在各个领域的应用前景正日趋广阔[2]。

同时,针对极限学习机方法的各种改进研究也越来越多。文献[3]将小波分解与核极限学习机相结合克服ELM中存在的过拟合等缺陷;文献[4]采用Cholesky分解将核极限学习机(KELM)从离线模式扩展到在线模式,提高网络的在线学习效率;文献[5]针对单个在线极限学习机输出不稳定的情况,根据数据训练误差自适应地调整在线模型集成权重,选择性能更好的模型用于集成预测,改进了模型的预测准确度和稳定性。缺点在于多个模型训练造成的时间复杂度却有所增加。

本文针对以上问题,通过集成学习的方式,提出多个在线核极限学习机的模型训练框架,得到比单个模型更好的学习性能。同时借助大数据技术提出基于MapReduce的多个在线核极限学习机集成学习模型的并行算法(MROS-KELM),有效地改进了多个在线核极限学习机训练造成的时间复杂度问题。

1 极限学习机相关理论

1.1 核极限学习机

根据给定的训练样本集 {(xi,ti),i=1,2,…,L},采用随机方式从中挑选部分样本,将挑选出的样本组成新的训练样本 (xi,ti),i=1,2,…,N0,N0>L,其中xi为输入变量,ti为输出变量。极限学习机通过以下函数来估计实际输出,其函数形式可表示为:

其中,L为隐层节点个数,g(x)为激活函数,是连接i个隐含层节点的输出权值。

式(1)可表示成矩阵形式为:

极限学习机训练目标的最优化模型可以表示成:

其中,βN为隐层输出权值;φ为常参数;εi为理论输出ti与实际输出f(x)的最大绝对误差;h(xi)为隐层关于样本xi的输出向量,求解上式,可得:

其中,HN=[hT(x1),…,hT(xN)]T为神经网络关于训练样本集的隐含层输出矩阵,TN=[t1,…,tN]T为训练样本的目标矩阵。得到ELM模型的实际最优输出为:

在ELM的训练过程中,f(xop)是通过随意赋值的方式产生,因此容易产生一系列非最优的输入权值和隐层节点的问题。为了得到更稳定的输出权值,针对电价数据的特点,将 RBF(radial basis function)作为极限学习机的核函数通过Mercer条件定义ELM核矩阵:

其中,i,j=1,2,…,N;K(xi,xj) 为核函数,是该核矩阵位于第i列、第j列的元素。因此式(7)可以写成:

其中,αRBF为KELM模型的输出权值。从式(8)的推导可得,核极限学习机通过核函数将输出数据映射至高维空间,通过核映射避免了随机赋值导致的一定概率的隐层权值偏差,得到稳定的输出值。

1.2 在线核极限学习机

针对ELM的离线状态到在线状态的拓展模型训练算法分为2个阶段[6],对此可阐释如下。

Step 1离线阶段。利用随机设置的输入权值wi和bi(i=1,2,…,N0) 计算隐含层输出矩阵H0;并计算初始输出权值,其数学公式可表述如下:

其中,初始中间矩阵P0=(0)-1,T0=[t1,t2,…,tN0]T;

设置k=0。

Step 2在线阶段

(1)假设k+1时刻以前的历史电价训练样本(Xt,Yt)已经被全部训练完成,其中Xt={xi},Yt={yi},M表示离线状态结束后初始化训练数据个数,假设k+1时刻的训练数据为 (Xs,Ys), 而且针对第k+1 个获取的实时电价数据:wk+1=(xM+k+1,tM+k+1), 令Tk+1=[tM+k+1]T,计算新到k+1时刻训练样本的隐含层输出矩阵Hk+1,计算公式如下:

(2)计算输出权值,即:

(3)置k=k+1,若k<N,返回Step 1中的式(9);否则算法结束。

2 数据处理算法比较

(1)串行数据处理算法[7]。使用串行数据处理算法的设计过程如图1所示。该算法对每一个核极限学习机模型的权重矩阵H进行串行化处理,依次选取每个节点进行训练,通过长时间的集群处理,可基于容错率来提高模型算法的稳定性。

图1 串行数据处理算法Fig.1 Serial data processing algorithm

(2)并行数据处理算法。本文提出的基于MapReduce的多个在线核极限学习机模型的并行算法(MROS-KELM)如图2所示,该算法分别在Map阶段和Reduce阶段对每一个核极限学习机模型的权重矩阵H以及输出的权值β进行并行化处理,避免了串行数据算法中每一个核极限学习机模型只有一个节点在运算处理的缺点,明显提高了集群运算效率。

图2 并行数据处理算法Fig.2 Parallel data processing algorithm

3 OS-KELM并行化算法设计

集成学习的基本思想是通过多个单一学习器集成组合在一起,使其共同完成学习任务,结合不同模型的结果进行新的组合来求出最终结果,得到比单个模型更好的学习性能。研究得到多个在线核极限学习机训练模型框架如图3所示,本文在集成学习框架下根据Bagging、随机森林以及交叉验证思想结合多个在线核极限学习机提出基于集成学习在线核极限学习机模型。其中,(,)、 (,)分别表示子模型m的第k组训练数据、验证数据,最后结果为子模型的测试数据。

图3 多个在线核极限学习机训练模型框架Fig.3 Multiple online kernel extreme learning machine training model framework

然而,在传统串行数据处理技术的环境下,基于集成学习的多个在线核极限学习机模型却会使该集成框架的并行处理优势受到限制,因此本文通过MapReduce的并行处理技术对OS-KELM模型进行并行化处理。针对OS-KELM模型的并行训练主要用最大期望(EM)算法,EM算法在数学中常可用于寻找在不容易观察的隐形变量的模型中的参数最大似然估计。文中,关于EM算法的流程步骤可分述如下。

(1)初始化分布参数。

(2)EM过程具体如下:

① E Step:估计未知参数期望值,给出当前的参数估计。

②M Step:重新估计分布参数,使数据训练的似然性最大。

(3)重复,直到收敛结束。

3.1 MROS-KELM算法的Mapper设计

通过MapReduce过程实现EM算法基本上遵循以下的操作过程:在每一次迭代过程中,Mapper过程训练数据实例。Reducer整合各类期望参数,为下一轮迭代生成参数估计。

其中,Mapper过程主要处理2个部分。对每一部分内容可做研究表述如下。

(1)初始化OS-KELM模型。根据框架相关参数,对OS-KELM模型初始化中间转移矩阵Pm,k、隐层矩阵Hm,k、 输入权重βm,K。

(2)map()函数运算。 训练OS-KELM模型的Mapper部分算法的伪代码详见如下。

Form=0 ToM-1

IfchooseForThisModel() Then

添加到blockm中;

countm++;

Ifcountm≥BThen

GetSubSpace(blockm);

Hm,k=calH();

Tm,k=calH(blockm);

输出 ((m,km,TrainTag),(Hm,k,Tm,k));//输出一个key/value对

countm=0;

km++;

EndIf

EndIf

IfchooseForValid() Then

添加到validm中;

If≥BThen

GetSubSpace(validm);

calH();

calH(validm);

输出((m,,ValidTag),(,));

0;

EndIf

EndIf

EndFor

3.2 MROS-KELM算法的Reducer设计

在每次OS-KELM模型训练的迭代过程中,Reducer部分伪代码详见如下。

整个MapReduce过程需要迭代多次,直到OSKELM模型的训练参数达到收敛。

4 OS-KELM算法的并行化实现

下面拟详尽给出OS-KELM并行化算法代码的设计实现。在这里使用ArrayWritable数组数据类型,用来分别存储OS-KELM模型的中间转移矩阵、隐层矩阵、输入权重的一行数据,代表收集到的相关值的集合。

4.1 MROS-KELM算法的Mapper实现

4.1.1 初始化 OS-KELM 模型

Mapper最先要处理的就是KELM模型。根据相关参数,对KELM模型初始化中间转移矩阵、隐层矩阵、输入权重。该过程在Mapper的setup()初始化方法中完成。部分的代码如图4所示。

4.1.2 Map 方法实现

OS-KELM模型的并行化map()函数部分可做解析阐述如下。

研究可知,输入的<key,value>对中,key值是训练数据;Value值存储的是测试数据。对每个训练实例来说,输出多个stripes并且每个训练实例都输出相同的key值集合。每个key值都会在M-step进行优化处理。

图4 模型初始化阶段Fig.4 Model initialization phase

而输出的<key,value>对包括着:在q状态开始时的初始化中间转移矩阵概率、q状态产生隐层矩阵概率、q状态输入权重调整概率。在讨论时,该部分研究中可参考设计代码如下。

//将map()结果发射出去

for(inti=0;i<kelm.numStates;i++){

Pi_tmp[i]=newDoubleWritable(kelm.initialProbabilities[i]);

piStripe.set(pi_tmp);

context.write(new Text('initial'),piStripe);

for(inti=0;i<kelm.numStates;i++){

for(intj=0;j<kelm.sigmaSize;j++){

em_tmp[j]=newDoubleWritable(kelm.adjustmentMatrix[i][j]);

adjustmentStripe.set(em_tmp);

Context.write(newText('adjust from'+hiddenSequence.toString()),adjustmentStripe);

4.2 MROS-KELM算法的Reducer实现

输入的<key,value>对是Mapper部分的输出,即<string‘initial’, initialProbabilities>;<string‘emit from’, +states, Stripe adjustmentMatrix>和<string ‘produce from’, +states, Stripe produceMatrix>;Reducer部分对不同的Mapper部分发射来的数据进行整合迭代,即KELM在线状态,为下一轮迭代做准备。因此输出的<key,value>对依然为<string ‘initial’, initialProbabilities>; <string ‘emit from’, +states, Stripe adjustmentMatrix>和<string‘produce from’, +states, Stripe produceMatrix>。

MROS-KELM算法的Reducer实现部分研究中可参考如下设计代码。

Public static class KelmParallelReduce extends Reducer<Text, ArrayWritable,Text,ArrayWritable>{

Private ArrayWritable Cf;

Private DoubleWritable( ) Cf_tmp;

Double[]doubleValue;

//reduce 函数部分

Public void reduce(Text key, Iterable<ArrayWritable> values, Context context)

Throws IOException InterruptedException{..

5 算例测试

本文对在线核极限学习机模型算法(OSKELM)、基于集成学习的在线核极限学习机模型算法(EOS-KELM)以及提出的基于MapReduce的多个在线核极限学习机模型的并行算法(MROSKELM)进行实验性能对比。对此可展开论述如下。

5.1 实验设置

实验环境:在搭建异构环境的Hadoop集群上进行了实验。本地测试平台包含1个主节点(NameNode和JobTracker)和 2个从节点(DataNodes和TaskTrackers)。通过在每个节点上搭载各种CPU类型、内存大小和磁盘空间来测量集群中的异构性。每台服务器配置为Xeon E5-2620 v2(6核双线程)CPU、16 G内存,集群中的所有节点都与千兆以太网交换机连接,并在Centos6.4 64位操作系统上运行。

在实验中,集群环境部署配置的系统是市场上企业应用最多,结合最好的稳定版本Hadoop 2.6.0,块大小为128 MB,JDK版本8。并为此集群中的每个数据块维护3个副本,以提高数据的可用性。

在这里,真实数据使用的是MINIST和ImageNet数据集。其中,MINIST数据集是最受欢迎的深度学习数据集之一,这是一个手写数字数据集,包含一组60 000个示例的训练集和一个包含10 000个示例的测试集。这是一个很好的数据库,用于在实际数据中尝试引入学习技术和深度识别模式,同时可以在数据预处理中花费最少的时间和成本。

主要用于对各个算法的准确率、训练速率进行评测。数据集的特征数、训练样本和测试样本数以及数据块大小见表1。

表1 数据集说明Tab.1 Dataset description

MROS-KELM、EOS-KELM、OS-KELM 采用作为激活核函数。在真实数据测评中,由于数据集比较小,为了比较其准确性将隐含层节点数L设定为60。

5.2 数据分析

真实数据集的准确率与训练时间见表2,从测评表中可以推得以下结论:

(1)EOS-KELM的训练准确度和测试准确度都高于OS-KELM。说明基于集成学习的模型算法在减少噪声数据影响与增加准确率方面具有优势。

(2)MROS-KELM的训练准确率与测试准确率都与EOS-KELM基本相同。在提升模型训练准确率的同时,训练时间相比较EOS-KELM有明显的减少。

MROS-KELM的Map阶段和Reduce阶段算法分析与EOS-KELM的算法对比分析可推得,MROS-KELM并没有改变EOS-KELM的执行过程,因此MROS-KELM方法在保证原有集成框架算法的优点的基础上同时也使用 MapReduce框架,MROSKELM具备更好的模型并行处理能力,在Map阶段与Reduce阶段分别对各子模型的H和β矩阵进行并行计算,加速了各个模型的训练流程,因此相比EOS-KELM方法,MROS-KELM的训练速度更快。

表2 数据集结果评测Tab.2 Dataset result evaluation

其中,针对MROS-KELM和EOS-KELM基于不同数据块大小情况下的准确率比较如图5所示。由图5可以看出,MROS-KELM和EOS-KELM分别在2种不同数据集的不同数据块大小下的准确率基本一致。其中,每个数据块的前两项和后两项分别是ImageNet数据集和MINIST数据集的准确性能对比,只有ImageNet数据集下的不同大小数据块的准确率略有偏差,主要是因为数据的特征数量和训练样本数量的规模与MINIST数据集相比带来更多的数据噪声所造成的影响。综合来说,在大数据环境下基于MapReduce的MROS-KELM算法并不会影响EOS-KELM集成算法的准确性。

图5 不同数据块下的准确率比较Fig.5 Comparison of accuracy under different data blocks

图6 展示了基于MapReduce的多个在线核极限学习机模型的并行算法(MROS-KELM)、基于集成学习的在线核极限学习机模型算法(EOSKELM)以及在线核极限学习机模型算法(OSKELM)训练时间随训练样本数量的变化趋势。从图6中可以看出MROS-KELM的训练时间随着训练样本数量呈线性增长,也说明了MROS-KELM模型算法具有更好的泛化性能。同时也可以对比出MROS-KELM比OS-KELM训练速度快了一个数量级,这说明MROS-KELM通过并行化的算法更好地提高了模型训练效率。

图6 训练时间随训练样本数变化Fig.6 Training time varies with the number of training samples

6 结束语

本文主要对大数据并行处理技术结合多个在线核极限学习机模型算法的问题进行探讨。针对传统的串行数据处理技术难以处理多个极限学习机模型所造成的模型训练时间过长的缺点,研究中通过MapReduce并行处理技术提出基于MapReduce的在线核极限学习机集成学习的并行模型算法,通过算例测试验证了本文的基于MapReduce的集成学习算法可以有效提高模型的准确度和实时的训练速度,也说明了本文使用的基于大数据处理技术的预测模型在大数据环境中具备良好的适应性。

猜你喜欢
训练样本学习机权值
一种融合时间权值和用户行为序列的电影推荐模型
警惕平板学习机骗局
“机”关
人工智能
基于小波神经网络的网络流量预测研究
财务风险跟踪评价方法初探
从学习机到上网本