第26卷第2期 计算机技术与发展 COMPUTER TECHNOLOGY AND DEVEL0PMENT 2016年2月 Vo1.26 No.2 Feb. 2016 BP算法改进及在软件成本估算中的应用 周启超 (渤海大学信息科学与技术学院,辽宁锦州121013) 摘要:软件成本估算在软件开发过程中扮演着重要角色,它是控制软件进度、降低软件风险和保证软件质量的有效措 施。软件成本估算是复杂的工作,受众多因素影响且具有不确定性。针对软件成本难以估算的现状,文中基于BP算法展 开研究。首先,研究BP算法原理和数学表示;然后,在分析BP算法存在问题的基础上,将自适应学习率、附加动量项法与 退火模拟算法、遗传算法等方法相结合对其进行改进;最后,构建软件成本估算指标体系,并将改进的BP算法应用于软件 成本估算。结果表明,算法具有估算结果精确、节省人力物力、减少资金浪费等优点,对加快软件开发进度、提高软件质量 具用重要作用。 关键词:BP算法;改进;成本估算;应用 中图分类号:TP39 文献标识码:A 文章编号:1673-629X(2016)02-0195—04 doi:10.3969/j.issn.1673—629X.2016.02.043 Improvement of BP Algorithms and Its Application in Software Cost Estimation ZHOU Qi-chao (College of Information Science and Technology,Bohai University, Jinzhou 121013,China) Abstract:Software cost estimation plays all important role in the software development process,which is an effective measure to control software progress and reduce software risk and ensure software quality.Software cost esimattion is a complicated task,affectd by maeny fact0lrs nd uncertaainties.According to the current situation of software costs are dificulft to esimatte.a study based on BP lgoriahm its car- ried out.Firstly,BP algorihm tprinciple nd matahematical representation is researched.Then,based on he atnalysis ofexisting problems on BP algorithm。the adaptive learning rate。the additional momentum method and simulated annealing,and genetic algorihm are combitned to impmveit.Finally,the software costesimattionindex systemis esabltished andtheimpmvedBPalgorithmisusedin software costesti— marion.The results show that the improved BP algorihm has tthe advantages of accurate estimated result,saving manpower and materil aresources,reducing waste of money,to accelerate software development progress nd iamprove software quality、vim an important role. Key words:BP algorithm;improvement;cost estimation;application O 引 言 软件系统规模不断增大且越来越复杂化,随之带 度的自我学习能力和自适应能力,能够快速地学习和 提取知识,将其应用于软件成本估算中,不必费力去寻 找和发现成本驱动因素与软件成本之间的关系 。 BP神经网络在前馈神经网络中应用最广泛,是一 来了软件项目延期和预算超支等问题,准确估算软件 成本是控制项目进度、减少项目成本的重要手段。软 件成本估算主要指软件开发过程中所花费的工作量及 相应的代价…,影响软件成本的因素不仅多且异常复 杂,而且随着项目的不断开发,影响因素也在不断变 化,存在复杂的非线性关系,要准确高效地进行软件成 本估算是非常困难的。因为BP神经网络具有较强的 种3层或者3层以上的神经网络,包括一个输入层,一 个或多个隐含层,一个输出层,相邻两层之间的所有神 经元互相连接,而处于同一层的神经元不能相互连 接 。采用的BP算法具有计算量小、并行性强、可操 作性强等优点。随着BP算法的不断应用,一些不足 逐渐被发现。因此,文中研究BP算法的原理、存在的 网络出版时间:2016—01—04 非线性映射能力,能以任意精度逼近非线性函数,其高 收稿日期:2O15一o4一O2 修回日期:2015-07一O8 基金项目:2014年辽宁省教育科学研究项目(L2014248) 作者简介:周启超(1990一),女,硕士,研究方向为人工智能。 网络出版地址:http://www.cnki.net/kems/detail/61.1450.TP.20160104.1453.006.html ·196· 计算机技术与发展 Awkj=一叼 OE= 第26卷 问题及改进方法,并应用到复杂的软件成本估算中。 耋(一 缸 (7) 1 BP算法原理 1.1原理 BP算法也称误差反向传播算法,实质是一边传播 一边不断调整权值的过程,使实际输出与期望输出的 误差达到最小。主要思想是输入信号从输入层经过隐 含层处理,到达输出层,输出端产生输出信号,在信号 向前传递过程中网络的权值是固定不变的,每一层神 经元的状态只影响下一层神经元的状态 ],这是工作 信号的正向传播。当实际输出没有达到期望输出,将 误差信号由输出端开始逐层向前传播,按照原来神经 元连接的路线返回,这是信号的反向传播。在反向传 播过程中,网络的实际输出与期望输出之间的差值即 为误差信号,将误差分摊给各层所有的单元,根据误差 反馈修改各层权值,经过多次的迭代,使实际输出越来 越逼近期望值或达到预先设定的学习次数,停止训练。 1.2 BP算法数学表达式 三层BP神经网络是BP神经网络中最典型的,所 以介绍如下 ]:如输入层、隐含层和输出层的节点个数 分别是m,n,s,输入样本总数P。把阈值写入连接权 中,即把阈值看成节点的一个输入的权值,则各节点的 输出可以表示为向量的形式 ,隐含层、输出层节 点的输出分别为: = ∑ ), =0,1,…,n (1) Opk= ∑wkj ),k=0,1,…,s (2) 其中, 表示第P个样本的第i个输入值; 表示 输入层第i个节点到隐含层第 个节点的权值;W 表 示隐含层第 个节点到输出层第k个节点的权值。 在式(1)、(2)中激励函数选取Sigmoid函数: 1 )=_ (3) 1十e )具有连续可导的特点,且有: f( )=,( )(1一厂( )) (4) .全局误差函数为: P E=∑ (5) 其中,E 是第P个样本的误差;t础是第P个样本 第k个节点的期望输出。 1 =÷∑(1 ‰一。 ) (6) 在反向传播中,采用梯度下降方法,其各层调整公 式如下所示。其中田是学习率,一般取值(0,1)。 输出层各神经元权值调整公式为: 其中: =(t坤一。 )。 (1一。 ) (8) 隐层各神经元权值调整公式为: Auji ̄-一叼筹=叼毫c一鲁 砉 其中: =(∑ 村)dpj(1一 ) (10) 根据以上公式进行网络训练,BP算法的实现步 骤 如图1所示。 【 ’......竺 J.][——一......J 训练结束 ———1r—一 ——————对权值阈值赋值 是l 最小的随机数 匿 ......................j.......~ 按照新的权值计 否 算误差 二二工二二 调整各层的权值 二二工二二 善 有训练样本/ 粟 图1 BP算法流程图 2 BP算法存在的问题及改进 2.1 BP算法存在的问题 BP算法因为固定的学习率,需要长时间的调整和 多次的迭代,因此训练次数多,收敛速度慢,训练时间 较长,对于一些复杂问题,所需的训练时间会更长,这 是由于学习率太小所致,如果加快收敛速度,则容易产 生振荡;由于网络误差曲面是非常繁杂的高维的凹凸 不平的曲面,BP算法收敛到某个值时不能保证误差是 全局最小值,也可能是局部极小值,不同的起始点可能 导致不同的极小值,而无法得到全局最优解 。由于 在一些平坦地区内误差的改变很小几乎为零,造成网 络不能得到训练,收敛速度就会变慢,难以达 给定的 误差。还有网络结构的选择,包括输入层和输出层节 点数、网络隐层数、隐层神经元数,只能根据经验或者 通过反复实验去确定。网络的学习和记忆具有不稳定 性,容易造成过拟合现象导致泛化能力差等缺点。 2.2改进BP算法的方法 目前随着对BP算法的大量研究,已经得出了很 多改进的方法,在前人基础上进行再改进,将几种改进 后与其他智能算法相结合,如下所示。 第2期 周启超:BP算法改进及在软件成本估算中的应用 .197. 自适应调节学习率的方法是为了减少训练时间, 实现快速有效的学习收敛的过程。基本思想:根据误 差增量的大小来调节学习率的大小,当误差减小,增大 学习率;当误差增大,减小学习率” 。对此进行改进, 修正公式为: E 叩(t+1)=(1一 1·△ + 2·i )叩(t) (11) 凸 +l 其中, (t+1)、 (t)分别表示学习率迭代到第 t、t+1次时的值;AE=E川一E ;0<OL1<OL2<1为常量。 此公式不仅考虑了误差增量,还考虑了相对误差 E /E ,根据它适当减小学习率的调整幅度,进而有 更合理的学习率进行训练,避免出现振荡。优点是算 法稳定性得到保证,又使算法收敛速度加快。 附加动量项法,BP算法中叼的选取很重要, 值 大网络收敛速度快,但过大会引起不稳定;若叼值小虽 避免了不稳定,收敛速度变慢,加入动量项来改变田从 而提高网络性能。动量项能记忆上一时刻的权值修改 方向 ,使权值调节向着误差曲面底部的平均方向变 化,不仅可以微调权值的修正量,也避免陷入局部极小 值,加速了网络的收敛,避免了网络的来回振荡,起到 了缓冲平滑的作用。其中动量项/3 ̄w(t)=/3[州(t)一 (t一1)], 为动量因子,0</3<l,一般取0.3—0.6。一 F Aw(t+1)=叼 +/3hw(t) (12)OW 一 ~模拟退火算法是通过模拟金属热加工中温度与能 量的关系,温度高原子的能量高,随着温度降低,能量 越来越小而达到最低点确定关系。概率为 P(E)。。exp(一E/kT),定义人工温度 ,需要加入一 个干扰Aw,则AE=E(W+aW)一E( ),AE<0,干扰 接受,AE>0,则依据概率公式判断是否接受,干扰接 受 :W+Aw,否则不变。 文中将自适应学习率法和附加动量项法与模拟退 火算法、遗传算法相结合。基本思想是:在BP算法进 行样本数据训练时,首先利用遗传算法产生初始种群, 确定网络的权值,根据式(1)、(2)计算节点的输出,式 (5)计算全局误差,得到测试误差;然后判断训练是否 达到平衡状态,是则调用自适应学习率调整算法和附 加动量项法,根据权值修正公式(7)、(9),式(11)和式 (12)的调整学习率和附加动量项,来进行权值调整。 若E <E ,说明第t时刻的迭代是比先前有所提高, 可以接受的,应该增大学习率;若E川>E ,则说明t 时刻迭代是比先前的误差更大了,没有效果,应该减小 学习率。否则调用模拟退火算法对权值进行加干扰等 进行调节,致使网络训练进入到新的状态时¨ ,再利 用遗传算法的选择、交叉、变异等遗传操作得到新群 体,计算群体适应度、计算精度,如果满足条件则训练 结束,否则返回前面的步骤依次执行,对新状态进行优 化改进,反复进行计算,直到满足算法的要求为止。 3改进BP算法的应用 将以上改进BP算法和智能算法相结合的方法, 应用到软件项目的成本估算中,以提高软件成本估算 的效率和准确性。 3.1构建指标体系 软件成本估算通常是通过估算工作量来进行,综 合得到,一级指标是产品元素、计算机元素、人员因素、 项目因素;相对应的16个二级指标H ¨ 如图2所示。 软件可靠性 ——斗——— 产品复杂性 l l匦 一一—— —、I lL————1———一 存储限制 软件成本估、算指标体系/、、千 —T//.工『 _]的元素l I 1 . 1虚拟机易变性 .l项目的I 亘一一一一一一一]一 =二l环境周转时间===工= —一因素l—_} ———._{开发进度限制 lt========:= l l开发工作地点 图2软件成本估算指标体系 实现步骤如下: (1)对输入训练样本进行归一化,公式如下: =( 一X )÷( 一X ) (13) (2)定义网络输入和期望输出。 (3)设BP神经网络中输入层节点数为l7个,前 16个为成本驱动因子,第l7个节点取KDSI代码千行 数,只需要一个输出节点,根据前人的研究理论,隐层 节点为2x17+1=35个。建立相应BP网络,根据改进 算法进行。 (4)设 , ,…, 。 为成本驱动因子的评分;输入 向量为X=[ , ,…,X17】 ,根据上述改进算法进行 训练。 3.2仿真结果比较 用MATLAB仿真改进前后的算法比较输出结果。 基于COCOMO数据库¨ 的80个项目的训练样本得到 的结果如图3和图4所示。 结果表明在使用同一组数据时,改进后的训练步 数减少很多,大约是改进前的一半,且随着训练步数增 加,误差更趋于稳定收敛,没有很多跳跃的点,减少陷 入局部极小值的问题,大大减少了估算时间。同样在 比较实际输出与期望输出结果,改进前虽然基本上和 一一·198· 计算机技术与发展 第26卷 实际输出大体一致,但存在很多相差很大的部分,而改 进后的基本与实际输出一致。准确率也相应提高,误 差率也达到了实际应用的要求。 算中。结果表明不仅减少了估算的时间,估算的精确 度也得到了很大提高。 参考文献: [1]任永昌.软件项目管理[M].北京:清华大学出版社,2012. [2] 张红.基于神经网络的软件项目工作量估算系统实现 l。。 删 l 一· [J].宁波职业技术学院学报,2014,18(4):87—90. [3]Mittas N,Andreas S.Integrating non—parametirc models with linear componen ̄for producing software cost estimations[J]. Journal of Systems and Software,2015,99(1):120—134. 0 5O l00 150 200 250 300 350 400 450 500 540步 图3改进前训练误差 、‘ \ ‘ 、\\、10-2 。 \ lO"3 \ 。、—、 0 2O 40 60 80 100 l20 140 l60 i80 200 200步 图4改进后训练误差 因此,结果更加表明有效的改进更适用于实际估 算,它不仅兼具了标准BP算法的优点,还带有自适应 学习率、附加动量项,模拟退火算法和遗传算法的优 点。使软件成本估算时间短且相对简单,并且带有准 确性 。 4结束语 随着对BP神经网络理论不断深入的研究,以及 网络计算能力不断的提高,BP算法更适应于很多复杂 难以解决的问题,对其不断改进将会使应用范围不断 扩大。为了改善BP神经网络的各种不足,前人已经 在各个方面采用不同的方法,有了大量的研究及改进。 文中已有研究成果的基础上,将其改进并和遗传 算法、模拟退火算法等智能算法相结合,算法各自发挥 自己独特的优势,具有全局优化搜索性质、容易得到全 局最优解等特点,又根据影响软件成本估算的因素众 多且不具有确定性等特点,将算法应用到软件成本估 [4] 王盛源,王颖,刘连光,等.基于误差反向传播ANN的电 网磁暴灾害风险评估方法[J].计算机与数字工程,2014, 42(12):2223—2226. [5]孟栋,樊重俊,王家桢.混沌遗传算法对BP神经网络的 改进研究[J].数学理论与应用,2014,34(1):102—110. [6]蒋亮.BP神经网络的优化研究[D].南昌:南昌大学, 2014. [7] 王晶晶,王剑.一种BP神经网络改进算法研究[J].软 件导刊,2015,14(3):52—53. [8] 李晓华,周加波,周韦.基于误差反向传播神经网络的江 苏省用电量预测研究[J].科技与企业,2014,23(2O):197 —198. [9] 白牧可,唐巍,张璐,等.基于BP神经网络群的中压配 电网电压降落估算[J].电力系统保护与控制,2014,42 (2):132-138. [10]苏丽冰.BP神经网络的改进综述[J].信息与电脑:理论 版,2013,7(6):110—111. [11]江丽.基于粒子群与模拟退火算法的BP网络学习方法 研究[D].合肥:安徽大学,2013. [12]孙海涛,李仲秋.模拟退火算法改进BP算法的区域物流中 心选址[J].计算机技术与发展,2014,24(9):222—225. [13]Boehm B W.Software cost estimation with COCOMO II[M]. [S.1.]:Prentice Hall PTR,2009. [14]Seo Yeong-Seok,Jeffery R.Sotfware efort estimation based on multiple regressions with adaptive recursive data partitioning [J].Information and Software Technology,2013,55(10): 1710—1725. [15]Nassif A B,Ho D.Towards an early software estimation using log-linear regression and a muhilayer perceptorn model[J]. Journal of Systems and Software,2013,86(1):144—160. [16]焦玉婷.软件成本估算模型的研究[D].北京:北京工业大 学,2013. [17]段美美,于本海,朱萌.基于CBR的软件项目成本估算 方法[J].计算机工程与设计,2014,35(11):3837—3844. [18]郝胜兰.基于模糊神经网络的房产软件项目成本估算研究 [D].大连:大连海事大学,2012.