首页 理论教育 人工神经网络集成优化探究

人工神经网络集成优化探究

时间:2023-06-19 理论教育 版权反馈
【摘要】:符合后一定义的研究至少可以上溯到1972年诺贝尔物理奖获得者Cooper及其同事和学生于20世纪80年代中后期在Nestor系统中的工作,但是目前一般认为神经网络集成的研究始于Hansen和Salamon在1990年的工作。由于认识到神经网络集成所蕴含的巨大潜力和应用前景,在Hansen和Salamon之后,很多研究者都进行了这方面的研究。当神经网络集成用于回归估计时,集成的输出通常由各网络的输出通过简单平均或加权平均产生。

人工神经网络集成优化探究

1.概述

人工神经网络由于其在处理非线性问题上所表现出来的优越性能而得到很多领域的广泛重视和成功应用,然而人工神经网络存在的不足也非常明显,包括如何最优地构造一个神经网络模型,如何保证神经网络的泛化能力等。造成神经网络不足的根本原因是,其自身缺乏严格的理论作指导,神经网络在构造和训练过程中存在较多的不确定性。例如:多层前馈神经网络中隐层的数目以及各隐层神经元数目、连接权值和阈值的初始值等都是不确定的。如何最优地构造和训练一个神经网络,更多的是依靠使用者的经验和不断的试验调整。

1990年,Hansen和Salamon[50]开创性地提出了一种方法,即神经网络集成(Neural Net-work Ensemble)方法。为上述问题的解决提供了一个简易可行的方案。他们证明,可以简单地通过训练多个神经网络并将其结果进行合成,来显著地提高神经网络系统的泛化能力。由于该方法易于使用且效果明显,即使是缺乏神经计算经验的普通工程技术人员,也可以从中受益,因此它被视为一种非常有效的工程化神经计算方法。对神经网络集成的研究,不仅会促进神经计算乃至所有统计学习方法的理论研究,还会极大地促进神经计算技术进入工程应用的进程。目前,尤其是最近两三年中,国际上很多神经计算、统计学的研究者都投入到神经网络集成的研究中,使得该领域成为了一个相当活跃的研究热点

Kearns和Valiant指出,在PAC(概率地,近似地,正确地)学习模型中,若存在一个多项式学习算法来识别一组概念,并且识别正确率很高,那么这组概念是强可学习的;而如果学习算法识别一组概念的正确率仅比随机猜测略好,那么这组概念是弱可学习的。Kearns和Valiant提出了弱学习算法与强学习算法的等价性问题,即是否可以将弱学习算法提升成强学习算法。如果两者等价,那么在学习概念时,只要找到一个比随机猜测略好的弱学习算法,就可以将其提升为强学习算法,而不必直接去找通常情况下很难获得的强学习算法。

上述等价性问题可视为神经网络集成思想的出发点。1990年,Schapire通过一个构造性方法对该问题作出了肯定的证明,其构造过程称为Boosting。虽然Boosting算法并非专为神经网络设计,但它却与神经网络集成有着难以分割的血缘关系。因此本节也将对Boosting及相关技术进行介绍。

1996年,Sollich和Krogh为神经网络集成下了一个定义,即“神经网络集成是用有限个神经网络对同一个问题进行学习,集成在某输入示例下的输出由构成集成的各神经网络在该示例下的输出共同决定”。目前这个定义已被广泛接受。但是也有一些研究者认为,神经网络集成指的是多个独立训练的神经网络进行学习并共同决定最终输出结果,并不要求集成中的网络对同一个(子)问题进行学习。符合后一定义的研究至少可以上溯到1972年诺贝尔物理奖获得者Cooper及其同事和学生于20世纪80年代中后期在Nestor系统中的工作,但是目前一般认为神经网络集成的研究始于Hansen和Salamon在1990年的工作。由于认识到神经网络集成所蕴含的巨大潜力和应用前景,在Hansen和Salamon之后,很多研究者都进行了这方面的研究。但当时的研究工作主要集中在如何将神经网络集成技术用于具体的应用领域。从20世纪90年代中期开始,有关神经网络集成的理论研究受到了极大的重视,大量研究者涌入该领域,理论和应用成果不断涌现,使得神经网络集成成为目前国际机器学习和神经计算界的一个相当活跃的研究热点。

在神经网络集成的研究中,始终存在着两方面的内容:一方面,研究者们试图设计出更有效的神经网络集成实现方法,以直接用于解决问题;另一方面,研究者们试图对神经网络集成进行理论分析,以探明这种方法为何有效,在何种情况下有效,从而为实现方法的设计提供指导。此外,还有很多研究者将神经网络集成应用到实际问题中,取得了很好的效果。

2.神经网络集成的实现方法

对神经网络集成实现方法的研究主要集中在两个方面,即怎样将多个神经网络的输出进行结合以及如何生成集成中的个体网络。

(1)结论生成方法 当神经网络集成用于分类器时,集成的输出通常由个体网络的输出投票产生。通常采用绝对多数投票法(某分类成为最终结果当且仅当有超过半数的神经网络输出结果为该分类)或相对多数投票法(某分类成为最终结果当且仅当输出结果为该分类的神经网络的数目最多)。理论分析和大量试验表明,后者优于前者。因此,在对分类器进行集成时,目前大多采用相对多数投票法。(www.xing528.com)

当神经网络集成用于回归估计时,集成的输出通常由各网络的输出通过简单平均或加权平均产生。Perrone等人认为,采用加权平均可以得到比简单平均更好的泛化能力。但是也有一些研究者认为,对权值进行优化将会导致过配(Over Fitting),从而使得集成的泛化能力降低,因此他们建议使用简单平均。

此外,还存在多种结合方式。例如,有的研究者利用神经网络这样的学习系统,通过学习来对多个预测进行结合;有的研究者通过对一组子网进行优化,使各子网都可以较好地处理一个输入子空间,从而一步步地进行结合;有的研究者不使用线性结合方法,而是使用一些随个体网络输出的确定程度而变化的动态权值来产生最终的分类;有的研究者以最小化分类误差为标准选择出相对于每一个输出分类的最佳网络,然后估计出最优线性权值,以将个体网络集成起来形成理想分类器。

(2)个体生成方法 在生成集成中个体网络方面,最重要的技术是Boosting和Bagging。Boosting是一大类算法的总称,最早由Schapire提出,Freund对其进行了改进。通过这种方法,可以产生一系列神经网络,各神经网络的训练集决定于在其之前产生的神经网络的表现,被已有神经网络错误判断的示例将以较大的概率出现在新神经网络的训练集中。这样,新神经网络将能够很好地处理对已有神经网络来说很困难的示例。另一方面,虽然Boosting方法能够增强神经网络集成的泛化能力,但是同时也有可能使集成过分偏向于某几个特别困难的示例。因此,该方法不太稳定,有时能起到很好的作用,有时却没有效果。值得注意的是,Schapire和Freund的算法在解决实际问题时有一个缺陷,即它们都要求事先知道弱学习算法学习正确率的下限,这在实际问题中很难做到。1995年,Freund和Schapire提出了Ad-aBoost算法,该算法的效率与Freund算法很接近,却可以非常容易地应用到实际问题中,因此该算法已成为目前最流行的Boosting算法。

Boosting方法有两种不同的使用方式,即使用带权值的示例和按概率重取示例。Quinlan通过实验发现,前者效果优于后者。1996年,Breiman提出了Arcing(Adaptive Resample and Combine)的概念,认为Boosting是Arcing算法族的一个特例。在此基础上,他设计出Arc2×4算法,该算法在产生新神经网络时,示例的权值的变化与已有的所有网络都有关。有趣的是,Bauer和Kohavi通过实验发现,与AdaBoost相反,按概率重取示例的Arc2×4优于使用带权值示例的Arc2×4算法。另外,在使用Boosting类算法时,由于被已有网络正确判别的示例的权值会不断减小,在Boosting轮数较多,即产生了较多的个体神经网络时,计算机有可能会发生下溢。Bauer和Kohavi为此设计了一个与AdaBoost中的权值更新公式等价的公式,可以较好地缓解该问题。

Bagging的基础是可重复取样(Bootstrap Sampling)。在该方法中,各神经网络的训练集由从原始训练集中随机选取若干示例组成,训练集的规模通常与原始训练集相当,训练例允许重复选取。这样,原始训练集中某些示例可能在新的训练集中出现多次,而另外一些示例则可能一次也不出现。

Bagging方法通过重新选取训练集,增加了神经网络集成的差异度,从而提高了泛化能力。Breiman指出,稳定性是Bagging能否发挥作用的关键因素,Bagging能提高不稳定学习算法的预测精度,而对稳定的学习算法效果不明显,有时甚至使预测精度降低。学习算法的稳定性是指如果训练集有较小的变化,学习结果不会发生较大的变化,例如,k最近邻方法、Naive Bayes方法等是稳定的,而决策树、神经网络等方法是不稳定的。目前Bagging也有很多种变体,例如在扰动训练集时不进行重取样,而是对各示例的权值加入零均值高斯噪声的Wagging(Weight Aggregation)。

Bagging类算法与Boosting类算法的主要区别在于:Bagging的训练集的选择是随机的,各轮训练集之间相互独立,而Boosting的训练集的选择不是独立的,各轮训练集的选择与前面各轮的学习结果有关;Bagging的各个预测函数没有权重,而Boosting是有权重的;Bag-ging的各个预测函数可以并行生成,而Boosting的各个预测函数只能顺序生成。对于像神经网络这样极为耗时的学习方法,Bagging可通过并行训练节省大量时间开销。另外,一些研究者发现,一般情况下,Bagging方法总是可以改善学习系统的性能;而Boosting方法在有效时效果比Bagging还好,但在无效时却可能使学习系统的性能恶化。值得注意的是,Boos-ting和Bagging的轮数并非越多越好,实验表明,学习系统性能的改善主要发生在最初的若干轮中。

此外,还存在多种个体生成方法。例如,有些研究者使用不同的目标函数、隐层神经元数、权值空间初始点等来训练不同的网络,从而获得神经网络集成中的个体;有的研究者使用交叉验证技术来产生神经网络集成中的个体;有的研究者利用遗传算法进化出的神经网络种群作为集成中的个体。

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

我要反馈