首页 百科知识 模块化神经网络的子网集结新算法

模块化神经网络的子网集结新算法

时间:2024-08-23 百科知识 版权反馈
【摘要】:在4.1的论述中已经指出,模块化神经网络研究的一个核心问题是如何有效的集结子网输出,确切地说,是如何确定各子网的输出投票权重。Bayes学习法是把确定组合多神经网络的子网输出投票权重当作一种统计决策过程,递归运用Bayes决策分析,使得对子网的性能评估(即决策)越来越精确。对于神经网络的参数学习和网络设计,常规的误差纠正学习方法都可看作是Bayes学习方法的一种近似[13]。

4.3.1 引言

在4.1的论述中已经指出,模块化神经网络研究的一个核心问题是如何有效的集结子网输出,确切地说,是如何确定各子网的输出投票权重。到目前为止,提出的方法有很多,如文献[11]中所引或所提的等权值法(即平均法),RLS法,线性最优连接法(MSEOLCs),模糊积分法(FI),Stacked Generalization法,主元回归法(PCR),部分最小二乘法(PLS),并行递推预报误差法(PRPE),以及作者在上一节中提出的几种方法。蔡骏博士提出了一种基于Bayes学习的子网集成法(这里简称为Bayes学习法)[12],该方法思路新颖,有重要的应用价值和潜在的理论价值。但是,在对该算法的研究过程中也发现一些必须完善和改进之处。本节就此展开研究。

4.3.2 基于改进的Bayes学习的子网集结方法

Bayes学习法是把确定组合多神经网络的子网输出投票权重当作一种统计决策过程,递归运用Bayes决策分析,使得对子网的性能评估(即决策)越来越精确。其基本思想是:在各子网对训练样本集进行连接权值学习的同时,通过对测试样本集中信息的学习来得到各子网的输出投票权重。算法的基本框架为[12]:

Step 1.选定K个不同结构的子网,并设定各个子网的先验投票权重为w 0j=1/K,j=1,2,…,K;

Step 2.由大到小设置S个等级的均方误差限e i,i=1,2,…,S。可以依次把100ε,10ε,5ε,ε作为分级均方误差限。S的个数一般取3―5;

Step 3.对每个级别i(i=1,2,…,S)进行如下递推操作:

(3.1)在训练集上以e i为均方误差限训练各个子网直至收敛;

(3.2)在测试集上观察各子网的ε水平逼近正确率ωj(ε),j=1,2,…,K;

其中,ε是各子网的最终目标均方误差限,而ε水平逼近正确率ωj(ε)是按如下方式进行定义的:

设测试集中有L个样本,如果一个子网能以小于ε的平方误差实现P(P≤L)个测试样本的逼近,则该子网在这一测试集上的ε水平逼近正确率为

显然该算法比等权值法要合理得多,它不是对所有子网都一视同仁,而是充分考虑到了各个子网的不同。尽管各子网都在同一样本集上学习,但因为不同结构,不同初始权值,学习的结果——泛化性能也因“网”而异。这里,泛化性能是由逼近正确率来表现的。由(4.8)式知,逼近能力越好的子网所得到的投票权重越大。另外,该算法也考虑到各子网的学习有快有慢这一情况,因此它把权值学习过程分解成若干个连续的阶段,在每一阶段中间再嵌入Bayes学习。所谓Bayes学习,就是通过不断做实验,将信息不充分或不真实的先验知识改变为信息逐步完善准确的后验知识,从而提高人们对问题认识的把握度,进而提高决策精度。对于神经网络的参数学习和网络设计,常规的误差纠正学习方法都可看作是Bayes学习方法的一种近似[13]

然而,该算法还存在较多缺陷,分析说明如下:

(1)处理复杂问题能力有限。因为所有子网都得先独立学习整个问题,如果这时每个子网都学习困难——要么学习时间很长,要么学习能力很差(直接结果是泛化性能差),那么再协作就毫无意义了。如果为使每个子网都能学习得较好而复杂化网络结构,那么模块化的意义也不存在了。

(2)在整个样本集上训练每个子网若干次,从耗费时间上讲是不合算的。如果样本集很庞大,子网较多,结构较为复杂,那么训练时间将相当可观。

(3)训练误差限等级的设置若为100ε、10ε、5ε、ε,那么在以100ε、10ε作为训练误差限时,要求计算测试误差达到ε的逼近正确率,似乎有些勉为其难。很可能出现逼近正确率全零的情况,这时(4.8)式就无意义,因为分母为零。

(4)ε水平逼近正确率显得过于绝对。对于1.01ε和100ε的测试误差,尽管都大于ε,但在相对意义上讲,1.01ε较100ε正确,决不能等量齐观,同时,对于在逼近误差限附近的一些样本,若存在干扰噪声,则很容易使其中某些样本列为“逼近正确”,而其余的样本不在此之列,这有悖常理。

针对这些不足,作者对上述算法进行了如下改进:

(1)将样本集顺序分成K(子网个数)份(这样做有一个前提,即样本集是随机产生的),然后在每份子样本集上训练一个子网,最后按投票方式组合各个子网输出。这样先分后合,一方面可以降低子网的学习难度,缩短必要的训练时间;另一方面子网间协作的意义也社会化了。如果说算法在未改进前,子网之间与其说是协作,不如说是竞争:类似于人类社会中的招投标(每个候选者都能独立完成该任务,只是候选者的规模、处理能力各不相同):每个子网相当于一个候选者;子网间的连接权值对应于某个评审委员会对各个候选者的打分;子网输出的加权综合其实是对所有独立候选者处理能力的一种兼收并蓄,扬长补短。在改进之后,各个子网面对的不再是同一任务,而只是任务的某一片断,因此协作成为必要,这时子网的综合相应于任务的还原。这种改进并不新颖,它也常见于许多其他研究者的工作中。

(2)将测试误差限也进行等级划分。划分方法为:取当前训练误差限的下一级误差限为这一步的测试误差限。比方说,若训练误差限等级的设置为100ε、10ε、5ε、ε,而当前的训练误差限为100ε,那么在测试时,就以10ε为误差限,并计算这一水平(10ε)下的逼近正确率。依此类推,只是在到达最后一级训练误差限时,测试误差限保持上一级不变,也就是与当前训练误差限一致。这样做,显然可以减少大误差限等级时(1)式分母为零的几率,而且这种渐进学习更符合人类的理性化行为。

(3)对于上述的第(4)点缺陷,引入一种模糊机制,模糊化“ε水平逼近正确”的概念,即让超出ε一定范围的平方测试误差都算作ε水平逼近正确。用数学语言描述,即:设某一个测试样本的平方测试误差为se,计算该误差对模糊集合“ε水平逼近正确”的隶属度,设为mb,若mb>0.5,则认为这一误差可以算作“ε水平逼近正确”。这里存在一个模糊隶属度选择的问题。因为当se<ε,那么可认为该误差对模糊集合“ε水平逼近正确”的隶属度为1;当se>Pε(P为某一常数),那么就认为该误差对模糊集合“ε水平逼近正确”的隶属度为0;否则隶属度随se增大而减小,在(0,1)开区间上取值。因此本文选用sigmoid隶属度函数:

其中a为控制交叉点x=c处的斜度。这里,取a=-3,c为5.5倍的当前测试误差限。

(4)对ε水平逼近正确率换种方式定义以避免(1)式分母为零。譬如:

其中,sse j(ε)表示第j个子网在训练集上以ε为误差限的平方误差和。显然,sse j(ε)越小ωj(ε)越大;反之亦然。与(4.9)式定义比较,这种定义更为精细一些。另外,由于该表达式进行了归一化,因此是相对逼近正确率。

因此,改进后的Bayes组合神经网络学习算法可描述为:

输入参数:训练样本集TrainSet

测试样本集TestSet

子网训练参数,包括学习率,最大迭代次数和训练误差限ε

输出参数:组合多神经网络模型,包括所有子网的内部权值向量以及子网的输出投票权重w j(j=1,2,…,K)

算法:

PROCEDURE

BEGIN

Step 2.由大到小设置S个等级的训练均方误差限e i,i=1,2,…,S(S一般取3—5);从而测试误差限可定,设为g i,i=1,2,…,S。

Step 3.FOR i=1:S

(3.1)在训练集T j(j=1,2,…,K)上以e i为均方误差限训练第j个子网直至收敛;

(3.2)在测试集上计算各子网的模糊g i水平逼近正确率ωj(g i),j=1,2,…,K;

(3.3)根据和ωj(g i)计算各子网的后验投票权重如下:

这里对(3.3)作一说明:如果逼近正确率全零,即条件一成立,那么各个子网的投票权重保持上一次值不变;否则,使用Bayes定理对其修正。如果某一子网的投票权重过小,也就是条件二成立(具体来讲,就是小于0.1/K),那么截断为零。在所有子网的投票权重重置完毕后,再次对其归一化。

4.3.3 仿真研究

仿真实验在MATLAB6.1环境下(处理器为PIV1.4GHz)完成,并且使用其神经网络工具箱。为克服随机取值可能带来的偶然性,研究中对各实例皆做五次实验。限于篇幅,这里只报告一例。

对于改进算法中的g i水平逼近正确率ωj(g i),可分别按公式(4.9)或(4.11)来计算。这样就得到两种算法,为方便起见,分别称作算法一和算法二。

例一个多输入非线性动态系统的辨识[14]

(1)问题描述:

该方程组表示一个3输入1输出的动态系统,其中x 1(k),x 2(k)为系统的状态变量

令z=[u 1(k),u 2(k),u 3(k),x 1(k),x 2(k)],则系统的辨识转化为5输入1输出的函数逼近问题:y=f(z)。

实验步骤:首先,构造训练样本集和测试样本集。置x 1、x 2的初始值为零,u 1、u 2、u 3在[-1,+1]上取均匀分布的随机数800个。取前400个用以训练,后400个用以测试。然后,设计网络模型。这里,选用5个前向BP网络,每个网络的结构如表4.3。其中,每个隐层神经元的激活函数均为双曲正切函数,输出层神经元的激活函数均为线性函数。最后,训练并测试神经网络。训练参数设置:训练误差限为1e-8,训练最大代数为3000代,学习率为0.02。

表4.3 子网结构

实验结果:对于算法一和算法二,五次实验平均测试误差分别为3.5381e-5,1.0749e-6。下面给出第5次实验的数据结果(表4.4)和图形结果(图4.3,其中浅色曲线对应算法一)

表4.4 第5次实验数据结果

图4.3 输出误差曲线(第5次实验)

结果分析:在时间上,算法二的较算法一速度加快将近40倍。由表4.4知,算法二的测试误差较算法一的要小,从图4.3也可很直观地看到。另外,由算法二得到的投票权重很特殊,只有一个网络的值为1,其余的全为0,有些“胜者为王”的意味。事实上其他四次实验也是这种情况。从平均测试误差看,算法二的误差是算法一的1/30还弱。较文献[14]中用小波网络方法得到的均方差结果(7.88e-4),显然这两种算法的结果要好得多。

本节针对[12]中的Bayes学习法的若干不足提出几点改进。实验结果表明,不论在速度上还是在精度上都令人满意。对于某些复杂问题,速度优势更是明显。然而,研究过程中也出现了一些需要进一步解决的问题,列举如下:

(1)训练误差限的等级划分是直接从[12]中获得的,对其依据尚没有深究。

(2)在子网学习时,测试误差限凭经验设定,在理论上须作定量分析。

(3)对投票权值的递归学习未作理论上的推理论证,其收敛性还有待研究。

同时,虽然从实验结果中反映所提出的算法有较好的鲁棒性,但例子还不太充分,今后尚需通过更广泛的问题加以验证。除此之外,将本算法与其他算法进行融合也颇有研究价值,譬如说,先用这种算法得到各个子网的先验投票权重,而后对新的输入,对其进行在线调整。下一步的工作要针对以上这些问题进行深入研究。

4.3.4 基于序贯Bayes学习的子网集结方法

模块化网络的子网集结,是一个多目标决策的过程。而一个多目标决策问题,有事前决策、事中决策、事后决策三种模式。对应于子网集结时各子网权重的确定也有三类方式:其一为根据充分的先验信息,在训练所有子网络之前就确定了权重(即事前决策);其二是在独立训练完所有子网络之后再进行权重的确定(即事后决策);最后一类是在子网络的训练过程中确定权重(即事中决策)。第二种方式中的大多数方法是将确定权重看作为一个优化问题,即寻求各子网络(训练后)的输出组合对理想输出的最佳逼近。典型的方法有RLS法、线性最优连接法(MSEOLCs)、遗传算法等。至于第三种方式,有多种解决方案。蔡骏提出的用于组合多神经网络的贝叶斯学习法(以下简称贝叶斯学习法)就是其中一种。它将确定权重的过程当作一种统计决策过程(视每个子网络为一个决策人,其相应的权重被看作是其所作决策的可信度),在各子网络进行内部连接权值学习(即在训练集上接受训练)的同时,递归运用贝叶斯定理,通过对评价集(evaluation set,它专门用来学习各子网络的权重,一般不同于用于学习各子网络连接权值的训练集和用于评价整个系统性能的测试集)中信息的学习来得到各子网络的权重。

本节基于贝叶斯决策的序贯分析思想提出一种用于模块化神经网络的序贯贝叶斯学习法。从类别上看,它属于上述的第二类权重学习法,也就是说,在独立训练完所有子网络之后再确定各子网络的权重。但是,它不同于那些将权重确定看作为一个优化问题的第二类方法,而是将确定权重看作为一种统计决策问题。在这一点上,它与上述所提到的边训练边学习权重的贝叶斯学习法(为方便起见,称该方法为前者,本节方法为后者)一样。然而,从运用贝叶斯定理进行分析的角度看,两者又有区别——它们在构造似然函数(即在给定参数情况下观测数据的条件密度函数)时采用了不同的试验方法。前者是将贝叶斯学习嵌入子网络的训练过程中,即将训练过程(按不同等级的训练误差限)划分成若干阶段,使得每一阶段的训练要求(精度)都比上一阶段的高,然后根据各个子网络在每一阶段在某一固定评价集上的泛化误差来构造似然函数;而后者是将贝叶斯学习嵌入子网络的评价过程中,即将评价过程划分成若干阶段,使得每一阶段的评价集是其前一阶段评价集与该阶段新产生的数据集之和,也就是说不断引入新的数据信息到评价集中,然后根据子网络在每一阶段的评价集上的泛化误差来构造似然函数。该方法的一个突出优点是能根据新的数据信息不断调整各个子网络的组合权重,并且调整过程中兼顾了已有的组合方式。为验证该方法的有效性,本节以8个回归问题为例做了仿真实验。实验结果表明,对于较难学习的问题,它在泛化误差上明显小于简单平均。

本节提出算法主要分为两步:第一步是独立训练各个子网络(学习前网络结构已构建好,包括隐层数、隐层单元数以及激活函数等),使其皆达到一定的训练精度或都训练相当数量的代数;第二步是以序贯的方式学习各个子网络的组合权重,具体地说,就是将评价过程划分为若干个阶段(每一阶段对应一个序贯步),对于每一个序贯步,都要先构造一个评价集——使得每一序贯步的评价集总是在前一步的评价集的基础上加入新获取的数据信息,然后计算各子网络在该评价集上的泛化误差,进而计算各个网络的似然函数,最后运用贝叶斯定理求得各子网络在该序贯步的后验权重(每一步的先验权重取为其上一步的后验权重,而初始先验权重按照贝叶斯分析的极大熵原则取为等权重)。

这种方法与上一小节的方法不同,它从如下侧面模拟了人类社会处理问题的客观情形:信息的收集是一个逐步积累的序贯过程,在这个过程的各阶段都必须作决策,因此越到过程的后期,决策依据的信息越丰富而充分,但往往在信息不充分时就需要完成阶段性的决策以使系统得以运作;上一小节的方法则体现的是信息在开始便已充分的情形。

具体的算法描述见表4.5。从算法的(4.1)步,我们很容易看出,评价集的构造具有继承性。由于在学习组合权重的过程中,各个子网络的内部连接权值已经确定,变化的只是组合权重,因此,各子网络在每一序贯步的评价集上的泛化误差也具继承性,也就是说,各个子网络在每一序贯步上的泛化误差等于它们在当前步新产生的数据集上的泛化误差与其前一序贯步上泛化误差的和。

表4.5模块化神经网络的序贯贝叶斯学习法

本节在构造似然函数时使用了两种不同的方法:(4.9)式和(4.11)式。下面进行若干仿真实验研究。

本节仿真实验都是在MATLAB6.1环境下(处理器为PIV1.4GHz)完成的,并且使用其神经网络工具箱中的网络创建(newff)、训练(train)和仿真(sim)函数。

分别用公式(4.3)和(4.4)计算似然函数所得的算法,为方便起见,分别称作算法一和算法二。另外,还将这两种算法与简单平均(作为算法三)进行比较研究。以下给出8个回归问题,分别对这三种算法进行测试,而且对每个问题均作5次实验。

1)问题描述

选择8个回归问题来验证本文所提出的序贯贝叶斯学习法的有效性。这些问题均来自文献[4],将其列于表4.6。表中第一栏列出各个问题所对应函数的名称,第二栏列出产生各个问题的函数表达式,第三栏列出各函数中自变量所满足的概率分布,第四栏列出我们在实验中由各函数产生的数据集的大小(即所包含样本的个数)。其中,U[a,b]表示在区间[a,b]上的均匀随机分布。为方便起见,以下分别将各问题的名称缩写为MH2,MH3,F1,F2,G,M,PL,PO。

表4.6 用于测试的8个回归问题

2)实验方法

数据集的划分:将表4.6中给出的数据集顺序划分为三个独立的子集,即训练集,评价集,测试集。这三个数据子集的作用已在引言部分作了说明。具体的划分见表4.7。其中,x-y-z表示训练集、评价集、测试集的大小分别为x、y、z。另外,对于训练集,将它顺序划分成K个(模块化神经网络系统中的网络个数)独立的子集,每个子集用于训练一个网络;对于评价集,我们将它随机地划分为五个独立的部分,相应地我们作五次组合权重学习,第一次权重学习取第一个子集作为该次的评价集,第二次取前两个子集作为评价集,……依此类推,直到第五次取整个评价集。

表4.7 实验中部分参数的设置

3)网络构建

在实验中,使用的模块化神经网络系统全部由结构不同的BP网络组成,参见表4.8。其中,x-y-z或x-y 1-y 2-z的意义是,x表示输入单元数,y或y 1、y 2表示隐层单元数,z表示输出单元数。需要说明的是,对每个BP网络,隐层激活函数均为双曲函数(对应用MATLAB神经网络工具箱中的tansig函数),而输出层的激活函数全部为线性函数(purelin)。

表4.8 网络结构

4)训练参数

除学习率、训练误差限和最大训练代数之外,其他训练参数一律采用神经网络工具箱中用于BP网络训练的默认值。其中我们对每个问题的学习率都设定为0.02,对于训练误差限和最大训练代数的设置见表4.6。

5)实验结果

对于三种算法的性能,我们作了对比研究。表4.9给出8个问题在相应测试集上的平均均方误差。

表4.9 五次实验后8个问题在相应测试集上的平均均方误差

在实验中发现:问题MH2、G、M、PL、PO较容易学习,问题MH3、F1、F2则较难于学习。从平均均方误差来看,这一点也得到了验证。同时,较容易学习的一类问题用简单平均法也能取得较好的效果;而对于较难学习的一类问题,简单平均明显差于本文提供方法。另外,对于算法一和算法二,它们在该问题上平均效果上几近相当,对其优劣的判断需进行更多的实验来评价。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈