(计算机应用技术专业论文)遗传算法和神经网络在软件抗衰技术中的应用.pdf_第1页
(计算机应用技术专业论文)遗传算法和神经网络在软件抗衰技术中的应用.pdf_第2页
(计算机应用技术专业论文)遗传算法和神经网络在软件抗衰技术中的应用.pdf_第3页
(计算机应用技术专业论文)遗传算法和神经网络在软件抗衰技术中的应用.pdf_第4页
(计算机应用技术专业论文)遗传算法和神经网络在软件抗衰技术中的应用.pdf_第5页
已阅读5页,还剩56页未读 继续免费阅读

(计算机应用技术专业论文)遗传算法和神经网络在软件抗衰技术中的应用.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

硕士论文遗传算法和神经网络在软件抗衰技术中的应用 摘要 软件衰退现象,即软件系统随时间而出现的状态退化和性能降低,乃至系统崩溃 的现象,是影响系统可靠性的一个重要因素。为了减缓软件衰退所带来的危害,软件 抗衰技术被提了出来。 目前有两种最基本的软件抗衰策略基于时间的抗衰策略和基于测量的抗衰 策略。本文围绕基于测量的软件抗衰策略,结合遗传算法和神经网络对定期监测和收 集到的系统性能参数进行分析,预测资源消耗和软件衰退的趋势,在系统负载过重时 采取必要的应对措施。 本文首先对遗传算法和神经网络的优缺点进行分析,然后将这两种算法结合起 来,使得新的结合算法能够充分利用两者的优点,既有神经网络的学习能力和鲁棒性, 又有遗传算法的全局随机搜索能力。同时,本文对基本算法做了改进,对遗传算法的 步骤、编码方式、参数的选取以及适应度函数的定义按照本文的需求进行设计,在对 b p 网络进行训练时用多种不同的学习算法做对比,选取预测效果好的方法进行实验 预测。 在仿真实验中,文章给出第七天的预测值,并和实际值进行比较,说明本文算法 的可行性,然后对未来的数据进行预测。最后本文对比单独用遗传算法或神经网络进 行仿真实验的实验结果,表明本文算法的在预测合格率方面具有较大的优越性。 关键字:遗传算法,神经网络,软件衰退,预测。 硕士论文遗传算法和神经网络在软件抗衰技术中的应用 a b s t r a c t ac o l n n l o np h e n o m e n o nw h i c hc a l l e d s o f t w a r ea g i n g m e a n st h es o f t w a r es y s t e m d e g r a d e sw i t ht i m e i ta l w a y sm a k e si m p o r t a n ti n f l u e n c et ot h es y s t e m i no r d e rt o c o u n t e r a c ts o f t w a r ea g i n g ,ap r o a c t i v et e c h n i q u ec a l l e d “s o f t w a r er e j u v e n a t i o n h a sb e e n p r o p o s e d n o wt h e r ea r et w om o s tp o p u l a rs o f t w a r er e j u v e n a r i o ns t r a t e g i e s ,t h et i m e - b a s e d s t r a t e g ya n dt h em e a s u r e m e n t - b a s e ds t r a t e g y t l l i sp a p e rd i s c u s s e sm e a s u r e m e n t - b a s e d s o f t w a r er e j u v e n a t i o ns t r a t e g y , c o m b i n e dw i t hg e n e t i ca l g o r i t h m sa n dn e u t r a ln e t w o r k m e t h o d st oa n a l y z et h ep a r a m e t e r so fs y s t e mp e r f o r m a n c ew h i c ha r em o n i t o r e da n d e n l l e t e dp e r i o d i c a l l y i nc o n c l u s i o n , i tp r e d i c t sr e s o u r c ec o n s u m p t i o na n dt h et r e n do f s o r w a r e a g i n g 啦sp a p e rc a r r i e do nt h ea n a l y s i st oa d v a n t a g e sa n ds h o r t c o m i n go ft h eb pn e u r a l n e t w o r ka n dt h eg e n e r i ca l g o r i t h m ,t h e nt h i sa r t i c l ec o m b i n e st h eb pn e u r a ln e t w o r ka n d g e n e t i ca l g o r i t h m st of u l la d v a n t a g e so fb o t hw h i c hm a k e st h en e wa l g o n t h m sb o t hh a v i n g t h eb pn e u r a ln e t w o r kl e a r n i n gc a p a b i l i t ya n dr o b u s t n e s sa n dt h es t r o n gg l o b a ls e a r c h c a p a b i l i t yf r o mt h eg e n e t i ca l g o r i t h m s i nt h es a m et i m e ,s o m ei m p r o v e m e n t sh a v eb e e n i n a d ei nt h i sp a p e r , s u c ha st h e “g r o w i n gu p p r o c e s s ,t h ec o d i n gm e t h o d ,t h ep a r a m e t e r a n dt h ed e f i n i t i o no ft h ef i t n e s sf u n c t i o ni nt h eg e n e t i ca l g o r i t h m s a n dd u r i n gt h et r a i n i n g o f t h eb pn e u r a ln e t w o r k ,s e v e r a ll e a r n i n gm e t h o d sh a v e b e e nc o m p a r e d c o m p a r i n gt h er e s u l to ft h es e v e n t hd a yg i v i n gb yt h ee x p e r i m e n t sa n dt h et e s t , t h e a l g o r i t h mi nt h i sp a p e rh a sb e e np r o v e dt ob ed o a b l e a n dt h e nt h i sp a p e rf o r e c a s tt h ed a t a i nt h e 自t l r d l e r a tl a s tt h ee x p e r i m e n tr e s u l t sg i v e nb o t hb yt h eg e n e t i ca l g o d t h ma n db yt h e n c i l r a ln e t w o r kh a v eb e e nc o m p a r e d ,a n da l g o d t h mi nt h i sp a p e rh a sb e e np r o v e dt ob e e 街c i e n t k e y w o r d s :g e n e t i ca l g o r i t h m ,n e u r a ln e t w o r k , s o f t w a r ea g i n g ,f o r e c a s t 声明 本学位论文是我在导师的指导下取得的研究成果,尽我所知,在 本学位论文中,除了加以标注和致谢的部分外,不包含其他人已经发 表或公布过的研究成果,也不包含我为获得任何教育机构的学位或学 历而使用过的材料。与我一同工作的同事对本学位论文做出的贡献均 已在论文中作了明确的说明。 研究生签名:盈硅7 年月凇日 学位论文使用授权声明 南京理工大学有权保存本学位论文的电子和纸质文档,可以借阅 或上网公布本学位论文的全部或部分内容,可以向有关部门或机构送 交并授权其保存、借阅或上网公布本学位论文的全部或部分内容。对 于保密论文,按保密的有关规定和程序处理。 研究生签名:盈生铆7 年厂月7 , - g 日 i 硬士论文遗传算法和神经舟络在软件抗衰技术中的应用 1 绪论 1 1 研究背景 计算机系统在最近十几年中有了突飞猛进的发展,功能越来越强大,结构也越来 越复杂。然而正是由于系统功能的强大和复杂程度的提高,随之产生的系统可靠性问 题便日益突出。 近年来的研究表明,一个系统发生故障,更多的是由于软件的缺陷而造成的,只 要现在软件的复杂性和重用性在增长,这种趋势就不会改变。因此软件可靠性成为 系统可靠性的瓶颈,软件可靠性和可用性的研究成为高可靠性和高可用性系统研究的 一个主要的目标。 软件系统的性能不断提高,其复杂性使得软件在推出之前不可能做全面的测试, 不常见的异常和可能导致误操作的程序容易被忽视,导致了程序在连续运行过程中出 现内存的占用和泄露、未释放的文件锁、数据更新不及时、存储空间碎片以及舍入误 差的累积等不良情况。上述情况使得软件系统发生状态退化和性能降低,最终可能导 致系统崩溃,这种现象称为软件老化( s o f t w a r ea g i n g ) 【啦翔。 绝对避免软件老化是不可能的,为了尽量减少软件老化所带来的损失,y h u a n g 等人提出了一种系统资源耗尽前的重启技术软件抗衰( s o f t w a r er e j u v e n a t i o n , s r ) ,该思想就是在软件性能衰退到一定程度时,终止程序的继续运行,重启系统以 清理其内部状态( 如进行垃圾收集、刷新操作系统内核表、重新初始化内部数据结构 等) ,从而释放系统资源,使软件性能得到恢复 1 , 3 1 。 软件抗衰策略通过有计划的重启操作来减少软件老化所带来的损失,能够很好地 提高软件的可靠性和可用性。在应用软件抗衰技术的时候,一个很重要的问题就是确 定软件抗衰操作的执行时间,从而可以有效地减少软件失效的发生,同时尽可能少地 降低软件抗衰的成本消耗。 许多研究侧重于利用发生故障或错误时所采集的数据进行分析,从而确定软件抗 衰操作的执行,但是对于软件老化的预测和评估,仅仅利用故障数据是不够的,一个 更有效的方法就是通过定期地监测和收集系统的性能参数来确定所执行的软件的健 康程度,并且利用这些数据来预测软件可能会发生的失效,在失效之前采取相应的措 施以减少损失。 本文基于后一种思想,研究有效的预测技术确定资源消耗和软件衰退的趋势,从 而可以精确有效地确定何时执行恢复操作,降低软件失效的发生,为计算系统需要的 高可信赖、高性能提供有力的保证。 硕士论文遗传算法和神经网络在软件抗衰技术中的应用 1 2 软件抗衰及其预测领域的研究现状 1 9 9 5 年,a t & t 贝尔实验室的y h u a n g 等【1 】人针对软件衰退现象,首次提出了软 件恢复( s o t t w a r er e j u v e n a t i o n ) 的概念,并采用了一个基于连续时间马尔可夫链的简单 模型。 随后,经过相关研究人员多年以来对软件恢复技术的不断研究和实现之后,目前 已经形成了两种最基本的恢复策略甚于时间的恢复策吲l 】和基于测量的恢复策 略【3 】。 出现比较早的基于时间的恢复策略的重点在于对软件系统的状态和转换进行刻 画建模,利用数学方法进行求解得到最佳恢复时间。经过s g a r g 、y h u a n g 等人的不 断研究和改进,目前已经建立了比较完善的系统模型【4 】。 文献【l 】中采用的思想基本就可算是基于时间的。随后对于系统原型的研究,基 本上都是在y h u a n g 的定义和模型的基础上加以细致化,再考虑各种系统的本身的属 性,对这个模型进行修改。s g a r 9 1 5 1 利用马尔可夫再生随机p e t r i 网模型来刻画时间与 状态转换的所有可能关系;s g a r g 与y h u a a g 合作【6 】,进一步考虑了系统负载情况因 素,采用随机回报网来刻画系统负载的条件下的状态转换。 在已发展的理论进一步具体化、方法化的研究中,s g a r g 与y h u a n g 将软件恢复 技术和检查点技术结合1 7 1 ,具体探讨了这两种技术对长时间运行的计算程序的应用; 而在文献 8 1 中,a p f e n i n g 针对事务处理型应用软件系统,即长时间运行的服务器程 序提出了一个基于马尔可夫决策过程的框架和方法。 在1 9 9 7 年发表的文献【9 】中,s g a r g 等开创性地提出,系统处理低效状态与挂起 停机状态同样是软件衰退的重要体现。 后来发展的基于测量的恢复策略则主要是具体测量和估算可能引起软件衰退的 各种因素及其变化趋势,根据不同的策略来决定是否以及何时进行软件恢复措施。它 是基于对系统资源的监测情况,最早由s g a r g 等【2 】提出。同时s g a r g 还提出“预期 耗竭时间”标准,用来量化操作系统资源的衰退程度。 鉴于s g a r g 等【2 】只考虑了基于时间的趋势探测和资源损耗,k v a i d y a n a t h a n 等加 入了对系统负载的考虑来建造一个模型【1 0 1 。 a b o b b i o 掣l 的研究提出了一种细粒度模型来平滑软件衰退过程,将性能下降 的全过程分为很多个阶层,并据此通过计算产生对应于该层的软件恢复决策。 l l i 等【1 2 】提出了一种基于时序分析的方法,来监测和估算w e b 服务器的软件衰 退的情况。实验结果表明这套方法有着很好的实际效果,而且计算强度较小,非常高 效。 基于时间( n m e - b a s c d ) 的恢复策吲5 j 和基于测量( m e 嬲u r e m e n t _ b a s e d ) 的恢复策略 2 硕士论文 遗传算法和神经网络在软件抗衰技术中的应用 1 3 , 1 4 1 是最基本的抗衰技术,现在还出现了加入嵌套、循环的多层处理机制以及多种标 准的结合【2 j ,也就是结合嵌套的层次和时间的策略以及结合循环多层处理和时间的恢 复策略,另外,现在许多学者还深入研究了最佳软件恢复策略( o p t i i n a ls o f i - v a r e r e j u v e n a t i o n ) 1 吲。 在软件恢复技术的实际应用中,a t & t 计费应用软件和电信交换软件都装备了一 些恢复方式 1 1o i b m 也开始在它的商用服务器中预装包含软件恢复技术的集成工具 3 1 。 软件恢复也适用于些对于安全性要求高的系统,如美国爱国者导弹软件系统【17 1 ,其 中的计算机系统被建议每八个小时进行一次关闭重启。 最近,两种基本恢复策略还被用于集群系统【1 啦o 】以改善其性能和可用性。常用的 网络服务器软件a p a c h e 也实现了一套恢复策略,每当为一些请求提供服务后就会杀 死并重启一些进程【1 2 】。软件恢复还被用于一个特定的事物处理服务:i 器1 2 。自动恢复 策略还被用于自愈和自治系统【2 2 】。 1 3 本文主要工作 本文围绕软件抗衰中的基于测量的软件恢复篆略,对定期监测和收集到的系统性 能参数进行分析,预测资源消耗和软件衰退的趋势。主要预测方法将采用遗传算法结 合b p 神经网络。 主要工作可以概括如下: 对于定期监测和收集到的系统性能数据进行归一化处理,将采集到的数据映 射到【0 ,1 】之间,使得数据在后面的处理中方便、快速: 本文结合遗传算法和人工神经网络来设计软件衰退预测方法,首先利用遗传 算法,对b p 网络的权值、阙值以及重要的网络学习参数进行优化,选出一组较优解 作为网络的初始值。然后构建了b p 神经网络进行预测,采用多种b p 网络学习算法 进行网络训练,对比效果,最后进行预测。实验证明预测效果比较理想,一定程度上 满足了预测要求: 受自然界生物进化的启发,本文在传统遗传步骤的基础上,考虑加入了基因 成长的步骤,在评价每一代基因之前先使基因向适应度大的方向做一次改进,这更符 合般生物进化的规律,也在一定程度上提高了遗传算法的搜索速率; 遗传基因采用实数编码,基因包含b p 神经网络的权值、阈值以及重要的网 络学习参数等,采用自适应的交叉与变异规则。在基因成长时,采用b p 学习算法对 基因进行若干次改进: 在对遗传个体进行评价时,本文对适应度函数进行改进,考虑到种群的成长 时间参数的影响,从而平衡了速度和复杂度的关系; 在对网络进行训练时,对比多种学习算法的拟合能力和泛化能力,采用最好 3 硕士论文 遗传算法和神经网络在软件抗衰技术中的应用 的网络进行预测。 1 0 4 本文的结构与组织 本文主要是结合遗传算法和神经网络对定期监控和收集到的系统性能数据进行 资源消耗和软件衰退趋势的预测。 第一章介绍本文的研究背景,相关技术的研究现状。 第二章主要介绍遗传算法的基础理论。 第三章主要介绍人工神经网络的基础理论,以及b p 网络的反向传播算法。 第四章研究软件衰退预测方法的设计,包括数据的预处理以及详细的预测方法。 第五章给出预测实例和结果,并结合实验结果进行性能分析和比较。 最后是对本文作的总结,指出本文存在的不足以及今后进一步的研究方向。 4 硕士论文 遗传算法和神经网络在软件抗衰技术中的应用 2 遗传算法的基础理论 遗传算法简称g a ( g e n e t i ca l g o r i t h m ) ,其基本思想基于d a r w i n 进化论和m e n d e l 的遗传学说,在本质上是一种不依赖具体问题的直接搜索方遗传算法。它从生物界自 然选择和进化机制发展起来,具有高度的并行性、随机性和自适应性。 2 1 遗传算法的产生与发展 遗传算法的研究历史比较短,2 0 世纪6 0 年代末期到7 0 年代初期,主要由美国 m i c h i g a n 大学的j o h nh o l l a n d 与其同事、学生们研究形成了一个较完整的理论和方法, 从试图解释自然系统中生物的复杂适应过程入手,模拟生物进化的机制来构造人工系 统的模型。随后经过2 0 余年的发展,取得了丰硕的应用成果和理论研究的进展,特 别是近年来世界范围形成的进化计算热潮,计算智能已作为人工智能研究的一个重要 方向,以及后来的人工生命研究兴起,使遗传算法受到广泛的关注。遗传算法作为具 有系统优化、适应和学习的高性能计算和建模方法的研究也渐趋成熟。 2 2 遗传算法的工作原理 2 2 1 遗传算法的生物学原理 自然界的生物由简单到复杂、由低级到高级、由父代到子代,被称为生物的遗传 和进化( g e n e t i c sa n de v o l u t i o n ) 。根据达尔文的进化论及自然选择似a t u r a ls e l e c t i o n ) 学 说,异种间的交配或由于某种原因物种产生变异,则生成新的物种,新的物种如果能 够适应环境,在繁殖的同时,变异的部分能够一代代地遗传下来。若环境变化,有的 物种不能适应,即被淘汰。可见,物种的多样性是生成新物种的前提条件。 又根据生物遗传学、分子生物学等研究的成果可知,构成生物的基本单元是细胞, 细胞核内的染色体( c h r o m o s o m e ) 中包含遗传基因( g e n e ) ,细胞由于分裂而具各自我繁 殖的能力,分裂之际,细胞核内的遗传基因由于同时被复制而继承下来。交配使双亲 的不同染色体重组,生成新的染色体,其中的遗传基因也是由双亲的基因组成:遗传 基因的变异也能产生新的染色体。因此可以说,物种的进化主要是由细胞中染色体的 交叉和变异实现的。 遗传算法就是模拟上述生物的遗传和产期的进化过程建立起来的一种搜索和优 化算法,它将达尔文进化理论引入串结构,并且在串之间进行有组织但又随机的信息 交换。伴随着算法的运行,优良的品质被逐渐保留并加以组合,从而不断产生出更佳 的个体。这一过程就如生物进化那样,好的特征被不断地继承下来,坏的特征被逐渐 硬士论文遗传算法和神经网络在软件抗褒技术中的应用 淘汰。新一代个体中包含着上一代个体的大量信息,新一代的个体不断在总体特征上 胜过旧的一代,从而使整个群体向前进化发展。对于遗传算法,也就是不断地接近最 优解。研究遗传算法的目的主要有两个:一是通过它的研究来进一步解释自然界的适 应过程;二是为了将自然生物系统的重要机理运用到人工系统的设计中彩】。 2 2 2 基本遗传算法( s g a ) 的构成因素1 4 9 1 基本遗传算法的构成要素包括以下方面内容: ( 1 ) 染色体编码方式 基本遗传算法使用固定长度的二进制符号串表示个体。有以下定义: 字母表y = o ,1 ) , 个体空间s = ( 0 ,1 2 ,个体其中,是个体z 的长度。 初始群体中各个个体的基因值可用均匀分布的随机值来生成。而在改进的遗传算 法中编码方式可以采用十进制、浮点数、符号等多种方式,这些方式搜索空间大,精 度高,弥补了二进制编码的不足。 ( 2 ) 个体适应度评价 基本遗传算法按照与个体适应度成正比的概率来决定当前群体中每个个体遗传 到下一代群体中的机率。因此必须根据不同的问题和目标函数值来确定适应度评价函 数,实现编码串到个体适应度之间的映射。而且适应度函数值必须是正值,即适应度 函数厂需满足: f :s r + ( 3 ) 遗传操作算子 基本遗传算法包括三种基本算子: a ) 选择算子:s ”_ s ,是种群空间到个体空间的映射。常用的选择规则是概 率规则,即 尸孵( 牙) :置,:掣 ,。( 五) t = t 其中: j 表示种群( 五,五,瓦) : o a k ( 4 9 ) 1 = 0 其中k 为样本数,y 为隐单元数,玎为输入单元数; _ 。_ _ _ _ 。_ 一 y 2 q n + 优+ a ( 4 1 0 1 其中m 为输出神经元数,珂为输入数,a 为【1 ,l o 之间常数: y 2 l 0 9 2 ” ( 4 1 1 ) 其中万为输入数; - - - - y 2 q n m ( 4 1 2 ) 其中m 为输出神经元数,, 为输入数; 硕士论文遗传算法和神经网络在软件抗衰技术中的应用 y = 2 x 1 + 1 ( 4 1 3 ) 其中行为输入数。 参考这些经验公式,本文的隐层节点数取在8 2 0 之间,在仿真实验中验证效果。 4 3 4 激励函数 激励函数是神经网络神经元的输出函数,通常是非线性的,用以模拟神经细胞的 兴奋、抑制、疲劳等非线性特征。神经网络中,神经元的激励函数同样对网络训练的 各项关键指标造成很大的影响。 目前大多数的学习算法都是基于d e l t a 规则和反向传播算法的。由于在运算过程 中需要计算每个神经元的输出及神经元激励函数的导数,所以激励函数的形式是决定 整个神经网络训练和最终结果的基本因素之一。 陈天平【5 9 】证明隐含层神经元的激励函数有界是必要的,单调递增的条件是非必 要。根据经验也证明,采用三层b p 网络,隐含层神经元的激励函数采用s i g m o i d 函 数,输出层神经元的激励函数采用线性函数,完全可以达到网络的逼近要求。 因此,本文的神经网络隐含层神经元的激励函数采用s i g m o i d 函数,输出层神经 元的激励函数采用线性函数。 它具有如下形式: 弛) = 专 函数图像如图4 3 4 1 。 图4 3 4 1s i g m o i d 函数图像 其导数为 ( x ) = 高= 厂( x ) ( 1 。一厂( x ) ) ( 4 1 4 ) ( 4 1 5 ) 3 3 硕士论文遗传算法和神经网络在软件抗衰技术中的应用 导数图像如图4 3 4 2 所示。 4 3 5 学习算法 图4 3 4 2s i g m o i d 函数导数图像 在本文中,要对每一代种群的所以个体均进行网络训练,计算量比较庞大。而 b p 算法虽然简单但是它的收敛速度很慢,且容易陷入局部最小值,在本文的应用中 存在一定的局限性。针对b p 算法的这些缺陷,本文中尝试采用l e v e n b e r g - m a r q u a r d t 算法( l m 算法) 作为b p 网络的改进学习算法。下面对l m 算法加以介绍。 l m 算法规则 矿表示第k 次迭代的网络权值向量,新的权值向量w “1 可以根据下面的规则求 得: w 川= 矿+ a 矿 ( 4 1 6 ) e ( w ) = i z ( e k ) 2 = 去( 以一q ) 2 ( 4 1 7 ) 一k厶七 e 为误差能量函数。 j a c o b 矩阵,( w ) 为: a a a e 、 机饥饥 加2& 2弛2 机饥 ; ”加” a p ” 机鸭帆 w 为: a w = _ ,( w ) 以w ) + 】- l j 7 ( w ) p ( 叻 ( 4 1 8 ) 硕士论文遗传算法和神经网络在软件抗衰技术中的应用 式中:口( 叻= ( 一,p 2 c - - , e “) 7 ,为单位矩阵。 如果z 很大,l m 算法近似予梯度下降法;而如果z 为零,则是高斯牛顿法。由 于利用了近似的二阶导数信息,l m 算法比梯度法快得多。由于【,7 j + g l 】是正定的, 上式的解总是存在的。从这种意义上说,l m 算法优于高斯牛顿法,因为对于高斯牛 顿法来说,7 ,是否满秩还是个潜在的问题。在实际的操作中,u 是一个试探性的参 数。对于给定的z ,如果求得的a w 能使误差函数降低,则降低;反之,则增加。 l m 算法步骤 l m 算法的具体算法步骤可以如下简要描述【删: 1 对b p 网络的所有连接权值和阈值初始化一个小的随机数,设定网络的误差最 小值以及最大学习次数; 2 对p 个样本输入,求出预测值和期望值之间的偏差以及整体误差,根据误差 求出j a c o b 矩阵; 3 根据求出的矩阵确定搜索方向; 4 根据搜索方向确定符合条件的最优学习速率; 5 修正权值; 6 重复步骤2 至5 ,直到达到最大学习次数或者实际误差达到期望误差最小值。 根据l m 算法的步骤描述,可以看出l m 算法的特点是,每次求出网络对样本的 权值修正值之后不立即更新,而是对这些修正值做类似线性回归的运算,求出所有样 本的最优搜索方向,然后沿着这个方向尽可能大地前进( 跳跃式) 一步。因此网络收敛 速度很快,而且因为它是跳跃式前进,跨度很大,因此容易跳出局部极小值。 很显然,l m 算法需要计算j a c o b 矩阵,因此算法相对来说较为复杂,占用内存 大,但是由于本文需要解决的软件衰退预测的实际问题的输入模式和整个网络规模相 对来说不大,因此这个方法还是可以接受的。 4 3 6 网络评价 当准备好网络训练所用的样本之后,需要对网络进行训练用于测试,用来评价网 络训练和预测的性能指标有很多种,在本文软件衰退的预测过程中,采用网络均方差 指标m s e ( m e a ns q u a r e de r r o r ) 来评价网络性能。 ) v i s e = i l ,一、d f q ) 2 ( 4 1 9 ) o n 其中z 表示网络的目标输出值,o t 表示网络的实际输出值。 3 5 硕士论文遗传算法和神经网络在软件抗衰技术中的应用 4 3 7 网络训练 神经网络的预测问题,最为关注的主要是它的两个能力:收敛能力和泛化能力。 本文中,有两处要对神经网络进行训练,分别是在遗传算法中个体成长时进行训练, 提高个体的适应度;当得到初始网络之后还要对网络进行训练以求得最优解。由于这 两处训练的侧重点不同,训练条件不同,因此本文采取不同的训练方式进行训练。 遗传算法个体成长时的网络训练 上文中已经阐述过,在遗传算法的个体成长中,成长效率非常重要,由于对每个 个体要进行训练,使算法的计算量大大增加。因为个体本身的适应度存在差异,相当 一部分个体在经过成长后并不能使适应度有显著的提高,如果苛求高的网络收敛能力 必将使许多个体的训练次数增多,影响算法性能。在极端情况下,算法会演变为多个 b p 网络同时进行多次训练,再从中选出最优网络,体现不出遗传算法的价值。 在算法中,网络训练总是向着减小误差的方向进行,而误差减小的速率则与网络 初始值,训练次数等有关,因此可能有一些原本适应度小但是“成长潜力”大的个体 经过成长其适应度超过其它一些个体,此时虽然这些个体的收敛能力,预测误差可能 没有达到期望,却是达到了遗传成长的目的,也使算法向着好的方向进行。 由于以上的原因,在遗传算法的个体成长阶段,本文不考虑网络的收敛能力是否 达到预期,而只是对成长的时间进行大体上的限制。由训练的次数r 。决定,n 。的范 围在【0 ,2 0 】,并且被融和进遗传基因,在遗传算法中进化。 遗传算法结束后的网络训练 当遗传算法结束后,网络的初始权值已经给出,这时需要对网络进行训练。对于 收敛能力,可以认为网络在训练的过程中误差趋向于越小,收敛能力越强,网络误差 越小;但是训练误差最小却不能代表网络的泛化能力越强,也就是说网络的训练误差 达到最小的时候,并不一定是网络具有最优预测能力的时候。因为,这误差的最小值 中很有可能体现了过多的样本多余信息的学习,也就是没有体现出样本的本质规律, 这就是所谓的“过度拟合”,网络的泛化能力因此而降低。 网络的性能好坏主要看其是否具有很好的泛化能力,而对泛化能力的测试不能用 训练集的数据进行,而要用训练集以外的测试数据来进行检验。如果网络对训练集样 本的误差很小,而对测试集样本的误差很大,说明网络已被训练得过度吻合,因此泛 化能力差。如用”代表训练集数据,用“o ”代表测试集数据,极端情况下网络实 现的是类似查表的功能,如图4 3 7 1 所示。 为了获得好的泛化能力,存在着一个最佳训练次数。可以在训练时将训练于测试 交替进行,每训练一次记录一次训练均方误差,然后保持网络权值不变,用测试数据 正向运行网络,记录测试误差。利用两种误差数据可绘出两种均方误差随训练次数变 硕士论文遗传算法和神经同络在软件抗衰技术中的应用 化的曲线,如图4 3 7 2 所示。 y 误 差 图4 3 7 1 泛化能力差的网络 x 训练次数 图4 3 7 2 两种误差曲线 可见,在某一个训练次数前,随着训练次数的增加,两条误差曲线同时下降。当 超过这个训练次数时,训练误差继续减小而测试误差开始上升。因此,该训练次数即 为最佳训练次数,在次之前停止训练称为训练不足,在此之后则成为训练过度。 基于以上,本文采用下面的网络训练方法: 1 将随机划分好的一份训练样本作为网络的训练输入,相对应的另一份验证样 本作为网络训练的验证集; 2 将样本集中的所有样本作为输入,调整网络权值,作为一次训练,记录训练 误差: 3 将验证集中的样本作为网络输入进行验证,记录验证误差: 4 观察训练误差和验证误差,如果训练误差达到最小值或者验证误差出现增长 趋势,停止网络训练; 5 否则,继续进行步骤2 。 在这里,训练样本是用来更新网络的权值,而验证样本用来监控网络的误差大小。 3 7 令 一 ,。 硕士论文 遗传算法和神经网络在软件抗衰技术中的应用 在一开始的训练中,训练误差和验证误差均会同时减少,这说明网络在收敛中;随着 网络的不断学习和收敛,验证误差的减小会变得越来越慢;当再继续训练下去,一种 情况便是训练误差达到了最小值,也就是预测能力符合要求,另一种情况便是验证误 差出现增长的趋势,这说明网络已经出现“过度拟合”,需要停止训练。 在本文的仿真实验中,为了达到最好的预测效果,设定第二种情况为网络的终止 条件,即当验证误差达到最小时停止训l 练,这时得到的网络将有最好的预测性能。 图4 3 7 3 表示遗传算法结束后的网络训练的具体过程。 4 4 本章小结 图4 3 7 3 遗传算法结束后的网络训练 本章结合遗传算法和神经网络的方法对定期监测和收集到的系统性能数据设计 预测方法,进而预测软件衰退。 重点介绍遗传算法和b p 算法中各种参数的选择,提出对算法的改进,包括遗传 算法中的成长步骤,染色体编码方式和适应度函数,结合b p 算法后对训练强度的设 定等。 硕士论文遗传算法和神经网络在软件抗衰技术中的应用 5 预测实例及结果分析 5 1 数据预处理 5 1 1 数据来源 实例分析所采用的数据是通过监测和定期收集而来,监测和收集系统的环境设置 是在1 0 m p s 以太网连接的局域网内分别设有服务管理器和监控节点。所有机子使用 l i n u x 操作系统,l i n u x 的虚拟文件系- 统p r o e 保存了所有的系统信息。性能数据使用 l i n u x 下的性能监控工具( f e r f m o n ) 来周期性地从p r o e 下提取所得。 p e m o n 有三个主要的模块: 1 监控模块( m o n i t o rm o d u l e ) 每个监控模块( 或服务模块) 都是对本地节点上的某种系统资源使用情况的记录, 资源种类分为c p u 、内存、存储设备、网络、进程状态这五类,对应的监控模块分 另u 为c p um o n 、m e mm o n 、s t o r a g em o n 、n e tm o n 、p r o c s l sm o n 。 2 监控代理模块( m o n i t o ra g e n t ) 监控代理模块分布和驻留在每个被监控的节点上,对上层监控管理器发送的不同 监控事件做出响应,同时管理本地节点上的所有监控模块,收集本地节点的系统资源 的活动信息和使用情况的数据。 3 监控管理器( m o n i t o rm a n a g e r ) 监控管理器是p e r f m o n 性能监控系统中最为重要的一个模块,负责向各个监 控节点提出数据订阅请求并接受相应返回的监控数据,然后将解析后的监控数据存储 在性能信息库( p e r f o r m a n c ei n f o r m a t i o nb a s e ,p i b ) 中。 整个系统资源使用数据的采集时间是一个星期,在这期间实验使用的机器没有发 生宕机。监控的资源包括物理内存( u s e dp h y s i c a lm e m o r y ) 、空闲的交换空间( f r e es w a p s p a c e ) 等,采集的时间间隔设置为5 分钟。 下面以采集到的一星期的物理内存时序数据为例,对实验结果进行分析比较,验 证本文研究的软件衰退预测方法的有效性,实验代码全部使用m a t l a b 6 5 编写。 5 1 2 数据归一化 由于实时采集到的系统性能数据的数量级较大,一般要达到1 0 5 1 0 6 的数量级, 为了后面数据处理的方便,并且可以保证网络训练时间减少,收敛加快,本文在数据 预测之前对其进行归一化处理,这也是采用s 型转移函数的缘故,该函数的值域为 【0 ,1 】,因此在网络训练时要将原始数据规范到【0 ,1 】,通常采用标准的归一方法来实现。 硕士论文 遗传算法和神经网络在软件抗衰技术中的应用 最基本的归一化公式为使操作数据映射n o ,l 】之间。 归一化处理的公式如下 = 立兰虹 k 。一t n i n ( 5 1 ) 图5 1 2 1 是经过一周时间采集到的物理内存使用时序数据,图5 1 2 2 是经过归 一化后的数据。 图5 1 2 1 物理内存使用数据的原始信号 图5 1 1 2 2 物理内存使用数据归一化后的信号 5 2 用遗传算法生成初始网络 5 2 1 本文的方法产生的问题 在4 2 节中,本文提出了一种带成长过程的改进遗传算法,但是经过实验发现其 效果在时间性能上并不理想。分析原因如下: 硕士论文遗传算法和神经网络在软件抗衰技术中的应用 1 由于对代种群的每个个体都要进行进化,本身就有庞大的计算量。假设种群 规模为5 0 ,迭代次数为5 0 0 代,则就会产生2 5 0 0 0 次成长过程,设每次对个体进行 1 0 次b p 计算,一共会产生2 5 万次的计算,使得算法在时间性能很差。 2 在成长过程中,并不能像交叉,变异过程一样,对染色体进行直接操作,而 要将染色体解码成b p 网络,同样,在成长完成后要将新的网络再重新编码成染色体, 增加计算负担。 3 本文的成长算法是b p 网络的学习算法,这些算法本身存在不足,比如l m 算法占用的内存非常大,单纯b p 算法可能不收敛,而且速度慢等等。 因此,必须对本文提出的算法再进行改进,才能满足应用的要求。 5 2 2 进一步的改进方法 针对本文提出的遗传算法效率不高的问题,这里提出一个改良的方法。 图5 2 2 1 表示b p 网络的训练次数和误差的大致关系,从中可以看出开始时的训 练对网络的性能提高比较大,因此可以尝试在遗传成长中也采用类似于自适应的思 想,即在遗传初期对种群中的个体进行成长,随着进化过程的发展逐步减少进化次数, 到一定代数时停止成长。 误 差 5 2 3 结果分析及比较 训练次数 图5 2 2 1 训练次数和误差曲线 用上述改进的遗传算法来初始化b p 网络。当进化代数小于5 时,对种群进行成 长过程,当进化超过5 代后停止成长。算法的其他参数取在第4 章中的值。 算法的适应度曲线如图5 2 3 1 。 从图中可以看出经过约3 5 0 次进化,网络的适应度不再有明显的增长,因此可以 将最终的进化次数设置为3 5 0 次,可以提高网络性能。 4 1 硕士论文 遗传算法和神经网络在软件抗衰技术中的应用 用基本遗传算法的适应度曲线如图5 2 3 2 。 表5 2 3 1 给出基本遗传算法和改进算法对优化网络初始权值,阈值的比较。从 表中可见经过几乎相同的时间,改进后的遗传算法的效率明显高于基本遗传算法,进 化代数是后者的2 5 ,而适应度比后者提高6 8 8 倍。 表5 2 3 1 基本遗传算法和改进算法的比较 进化代数稳定代数适应度网络误差计算时间 基本 2 0 0 01 5 0 02 3 6 6 50 4 2 2 6 1 9 2 6 6 0 s 算法 改进 5 0 03 5 01 6 2 8 0 0 6 1 4l8 5 6 3 0 s 算法 图5 2 3 1 显示当种群进化到约3 5 0 代的时候已经基本稳定,适应度增长的速率 变慢,再进行进化效率将会降低,因此可以将3 5 0 代作为遗传终止的代数,防止算法 盲目迭代。 图5 2 3 1 本文遗传算法的适应度曲线 4 2 硕士论文遗传算法和神经网络在软件抗衰技术中的应用 图5 2 3 2 基本遗传算法的均方误差曲线 5 3 用b p 算法优化网络 在遗传算法结束后,产生一组b p 网络的权值阈值初始值,接下来就是用训练算 法对网络进行训练,检验和预测。 如第4 章所述,本文以一星期内监测的试验机物理内存使用情况为原始数据,每 5 分钟间隔采集一次共取到2 0 1 6 个数据。将数据分为甲,乙两组,甲组为周一至周 六的2 8 8 组数据样本,用来训练网络;乙组为周二至周日的2 8 8 组数据样本,用来检 验网络的预测能力。同时再将甲组的样本随机分为a ,b 两组,每次训练约用1 0 0 个 数据样本,轮流用一组做训练,另一组做拟合,测试网络性能。 以下是对b p 网络仿真部分的数据结果分析。 5 3 1 网络训练 隐层节点数的确定 前文已经阐述过,b p 网络的隐含层节点数的确定没有固定的公式。隐节点数量 太少,网络从样本中获取信息的能力就差,不足以概括和体现训练集中的样本规律; 隐节点数量太多,又可能把样本中非规律性的内容如噪声等也学会记牢,从而出现“过 度拟合”的问题,而且大大增加了训练时间。 经过实际训练的检验和不断的调整,确定隐含层的个数近似遵循以下关系: 硕士论文遗传算法和神经网络在软件抗衰技术中的应用 y = 2 x n + l( 5 2 ) 其中n 为输入神经元数,y 为隐节点数。 本文中网络的输入层个数为6 ,因此隐节点数大约取为1 3 。表5 3 1 1 显示了以 l m 算法训练网络的过程中网络效率和隐节点数的关系。 表5 3 1 1 隐层节点数和网络效率的关系 目标均 训练算法隐节点数收敛步数训练时间b 组检验误差 方差 1 02 5 23 2 0 3 s 4 3 7 7 2 e 。0 0 4 1 3 1 8 52 5 6 2 s 4 6 2 5 8 e 0 0 5 1 e - 0 0 5l m 算法1 51 6 42 7 6 6 s6 1 1 5 5 e - 0 0 5 2 01 0 93 1 8 8 s2 7 7 6 7 e 0 0 4 2 59 9 4 0 9 3 s 5 0 6 2 5 e 0 0 4 从效果来看,1 5 个隐层节点的网络效率更高,因此本文网络的隐节点数取为1 5 。 训练网络 确定网络结构后,接下来用甲组中的样本,即周一到周六的样本来训练网络。训 练方法是将其中随机分出的a 组样本做训练,b 组样本做拟合,评价网络性能。 1 矿 1 矿 p e r i o c m a n c ei s9 7 3 5 8 7 e - 0 0 6 g ii 8l e - 0 0 5 l j 02 04 0 6 0 8 01 1 2 0 1 4 0 1 4 8e p o c h s 图5 3 1 1l m 算法的训练曲线 坩 憎 小 ” 卫量日190当面-6ulc耍卜 硕士论文遗传算法和神经网络在软件抗衰技术中的应用 图5 3 1 2l m

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论