改进约束鸡群算法在神经网络的应用*
2018-02-26张莹杰张树群
张莹杰,张树群
(暨南大学信息科学技术学院,广东广州510632)
1 引言
近年来,Hinton教授等人[1]提出深度置信网络DBN(Deep Belief Network),掀起了深度学习DL(Deep Learning)的热潮。而最早的人工神经网络(又称神经网络)又重新引起了许多学者的关注,其中BP(Back Propagation)神经网络是应用最广泛的神经网络模型。BP神经网络有着并行处理、鲁棒性、自适应组织等特点,非常适合解决复杂的非线性问题,在模式识别、故障测试、图像处理等领域有着广泛的应用。
近年来,随着智能优化算法的发展,更多的智能优化算法被用于解决规模大、维数高的复杂工程问题,如粒子群优化算法[2-5]、萤火虫算法[6-8]、蚁群算法[9]。基于误差反向传播算法的BP神经网络存在收敛速度慢、易陷于局部极小值的问题,和智能算法相结合优化BP神经网络已成为一个研究热点。
鸡群算法CSO(Chicken Swarm Optimization)[10]是一种基于鸡群搜索行为的群智能算法,它模拟鸡群等级制度和鸡群行为,将鸡群分为若干子群,每个子群由一只公鸡、若干母鸡和小鸡组成,不同种类的鸡遵循不同的移动规律,每个子群中的个体都围绕这个子群中的公鸡寻找食物,而公鸡随机移动。CSO具有良好的全局收敛性和鲁棒性,在工程中得到了广泛的应用。Ahmed等人[11]基于鸡群优化算法提出一种自适应方法,更好地解决了复杂社会网络中的社区发现问题。Hafez等人[12]提出了一种基于鸡群优化算法的特征选择系统,取得了更好的分类精度。然而,鸡群算法兼具这些优点的同时不免也会有自己的缺陷,例如在求解多极值优化问题时易陷入局部最优、收敛速度较慢等问题。针对在高维问题求解中,CSO算法容易陷入局部最优的问题,提出了一种改进的CSO算法,在高维情况下,通过大量的测试函数进行相关参数分析和优化能力验证。
本文针对鸡群算法存在的收敛速度较慢及易陷入局部最优[13-15]等问题,提出了一种改进约束鸡群算法ICCSO(Improved Constrained Chicken Swarm Optimization),从约束函数和进化机制两方面对基本鸡群算法进行了改进,提高了算法的收敛速度和全局搜索能力,并以几个标准测试函数和BP神经网络为例进行了仿真实验,结果表明,该算法在收敛速度、全局搜索能力上优于基本鸡群算法、改进鸡群算法。
2 改进鸡群优化算法
2.1 基本鸡群优化算法
在基本鸡群优化算法中,鸡群被分为若干子群,每个子群由带头公鸡、若干母鸡和小鸡组成。鸡群中,适应度最好的若干个体作为带头公鸡,适应度最差的一些个体作为小鸡,剩余的个体作为母鸡。母鸡随机选择公鸡,母鸡与小鸡的母子关系也是随机建立的,且这种等级制度、支配关系和母子关系一旦建立就保持不变,直至数代以后才开始更新。每个子群中的个体都围绕这个子群中的公鸡寻找食物,而公鸡随机移动,迭代进行群体更新以获取目标。
在解决优化问题时,鸡群中的每个个体都对应优化问题的一个解。假设鸡群中所有个体数为N,公鸡、母鸡、小鸡和妈妈母鸡的个数分别为 NR、NH、NC和 NM。xti,j(i∈[1,N],j∈[1,D])表示个体i第t次迭代时在j维搜索空间的位置。
鸡群中鸡的类型有3种,不同类型的鸡的位置更新公式不同。公鸡是鸡群中适应度最好的一群个体,它们在更广泛的空间寻找食物,公鸡所对应的位置更新公式如下:其中,randn(0,σ2)是均值为0、标准差为σ2的一个高斯分布;ε是一个很小的常数。k(k∈[1,N],k≠i)为公鸡中不为i的任一个体,是从所有非鸡群子群的公鸡中随机选择的。f为个体x对应的适应度值。
母鸡所对应的位置更新公式如下:
其中,rand为[0,1]的随机数;r1为第i只母鸡自身所在子群中的公鸡;r2为随机选取的任意公鸡或者母鸡个体,且 r1≠r2。
小鸡所对应的位置更新公式如下:
其中,m为第i只小鸡对应的母鸡;FL(FL∈[0,2])为跟随系数,表示小鸡跟随其对应母鸡寻找食物。
2.2 改进鸡群优化算法
基本鸡群算法存在收敛速度较慢及易陷入局部最优等问题,本文从约束函数和进化机制两方面对基本鸡群算法进行了改进。
2.2.1 约束函数的改进
在基本鸡群算法中,如果个体超出搜索范围,个体将从最接近的边界重新开始搜索。数学描述如下:
其中,Lbj、Ubj分别表示第j维的下边界、上边界。
鸡群算法用相应的上下界替代约束值,收敛速度较慢。本文提出用当前种群中最优秀群体相应值的随机移动替换约束值,以提高算法的收敛速度。描述如下:
其中,w1为步长,randn(0,1)为标准正态分布,是从当前最优的Nwell(Nwell=NR)个个体中随机选择的,为从当前较优的 Ngood(Ngood=N -NC)个个体中随机选择的。
2.2.2 进化机制的改进
由基本鸡群算法3种类型的鸡的位置更新公式可知,每个子群中的个体都围绕这个子群中的公鸡寻找食物,而公鸡随机移动。如果公鸡陷入局部最优,则整个子群也可能陷入局部最优;而且公鸡间相互没有信息交流,收敛速度较慢。针对这些缺点,我们增加了整个鸡群最优个体对公鸡和母鸡的牵引作用,以提高算法的收敛速度和全局搜索能力。
改进后的公鸡所对应的位置更新公式如下:
其中
其中,w2为自适应调整因子,wmin、wmax分别为调整因子的最小值和最大值;M为迭代的最大次数。
改进后的母鸡所对应的位置更新公式如下:
改进后的算法步骤如下所示:
步骤1初始化。确定初始参数 N、NR、NH、NC、NM、M等,在解空间内随机生成鸡群各个个体的初始位置x,计算其适应度,初始化个体当前最好位置Pbest和鸡群全局最好位置Ibest。
步骤2如果满足更新鸡群关系条件,对鸡群的适应度值进行排序,建立鸡群的等级制度、支配关系和母子关系。
步骤3分别由公式(9)、公式(11)、公式(6)更新公鸡、母鸡和小鸡的位置并计算其适应度值。
步骤4更新鸡群的个体当前最好位置和鸡群全局最好位置。
步骤5步骤2~步骤4为一次迭代过程,完成后判断是否达到最大迭代次数,如果是,则终止循环,否则继续循环。
2.3 基于改进约束鸡群算法的BP神经网络优化
BP神经网络是按误差反向传播算法进行学习的多层前馈神经网络,BP神经网络结构一般为3层:输入层、隐含层和输出层(层内无连接、层间全连接)。BP神经网络通过误差函数梯度反方向下降调整权值和阈值,反复训练学习权值和阈值使误差函数达到最小。
结合鸡群算法优化BP神经网络[16-18]的基本原理是:神经网络中的权值和阈值作为鸡群个体,误差函数作为鸡群算法的适应函数,通过迭代更新找到整个鸡群最优个体,再将最优个体返还回神经网络进行误差结果测试。具体步骤如下:
步骤1根据实际要求初始化BP神经网络结构:每层神经网络的节点数、权值、阈值等;
步骤2将权值和阈值视为鸡群个体,初始化鸡群算法参数;
步骤3计算个体当前最好位置Pbest和鸡群全局最好位置Ibest,建立鸡群的等级制度、支配关系和母子关系;
步骤4更新公鸡、母鸡和小鸡的位置,计算其适应度值,并更新鸡群的个体当前最好位置和鸡群全局最好位置;
步骤5进行鸡群算法迭代更新:搜索鸡群最优个体;
步骤6将最优个体传回BP神经网络进行训练并用测试数据进行验证。
3 实验仿真和分析
3.1 鸡群算法仿真
本文采用表1所列出的5个标准测试函数来分析和验证ICCSO算法的实际性能效果,并将结果与ICSO[19]和CSO算法进行了对比。
Table 1 Standard test functions for testing algorithm performance表1 用于测试算法性能的标准测试函数
本实验中,ICCSO算法的种群大小N为100,维数D为10,最大迭代次数M 为1 000。NR、NH、NC、NM分别为0.2N、0.6N、0.1N、0.1NH,FL 为[0.4,1]的随机数,G=10,wmin=0.8,wmax=1.0。每个测试函数分别独立运行50次,以消除随机性,将计算出的最优值、最差值、平均值、标准差值与CSO和ICSO的计算结果相比较,如表2所示和图1所示。
(1)F1函数:由表2可以看出,ICCSO算法的平均值和最优值精度比ICSO算法和CSO算法的提高了40多个数量级,而ICSO算法的平均值和最优值精度只是比CSO算法的多一个数量级。图1a中ICCSO在迭代次数为24左右时就收敛,而ICSO和CSO算法曲线还未收敛,向最优值收敛靠拢,ICCSO算法的收敛曲线比 ICSO、CSO算法的收敛曲线更平滑陡峭,说明ICCSO算法能够更快速收敛,而CSO和ICSO算法出现了最优解停滞现象。在迭代次数相同时,ICCSO算法比ICSO、CSO算法的适应度值更优。
(2)F2函数:F2函数在高维情况下存在众多极值点,CSO算法和ICSO算法在运算过程中都没有避免这个问题,陷入了局部最优值;而ICCSO算法避免了陷入局部最优,并且取得了较高的收敛精度。从表2中看出,ICCSO算法的最优值和平均值精度都要比ICSO、CSO算法的更优。图1b显示ICCSO算法迭代15次左右时就收敛了,下降速度比ICSO算法、CSO算法更快,说明ICCSO算法能够快速收敛,并且相比较其他两个算法,每一次迭代ICCSO算法的适应度值更好。
Table 2 Comparison of test results among the algorithms表2 算法的测试结果对比
(3)F3函数:从表2可以看出,ICCSO算法的最优值和平均值精度要比ICSO算法、CSO算法的精度高40~50个数量级。图1c中ICCSO算法能在迭代15次以后达到收敛,比其他两个算法更快速找到最优值,并保持了较好的速度和精度。
(4)F4函数:从表2中可以看出,ICCSO算法的最优值精度和平均值精度都要比ICSO算法、CSO算法高出45个左右数量级。图1d中ICCSO算法的收敛曲线要更平滑陡峭,收敛速度比其他算法更快一些。
(5)F5函数:表2中ICCSO算法的最优值、平均值精度要达到e-170左右,而ICSO、CSO算法的精度却只有e-120左右。图1e中ICCSO算法收敛速度要更快一些,能快速找到最优值并进入收敛状态。
综上所述,对于这5个标准测试函数,尤其是对于存在众多极值点的问题,ICCSO算法都取得了比CSO算法和ICSO算法更令人满意的结果。仿真结果表明,ICCSO算法在全局搜索能力和收敛速度、收敛精度方面都优于CSO算法和ICSO算法。
3.2 BP神经网络测试结果和分析
本仿真实验是对某型齿轮箱故障[20,21]样本进行识别,分别从正常运行、点蚀、磨损、断齿、点蚀磨损混合、断齿磨损混合6种齿轮状态随机抽取80个样本作为训练集,再从6种状态中选取20个样本作为测试集。用测试样本的测试误差作为衡量网络的优劣,再通过误差计算个体的适应度值,个体的误差越小,适应度越好,则该个体越优[22]。将基本鸡群算法的BP神经网络、改进鸡群算法的BP神经网络以及改进约束鸡群算法的BP神经网络进行对比,其中BP神经网络的网络结构均为输入层9个节点、隐含层19个节点、输出层6个节点。3种算法的神经网络测试结果如表3所示。
从表3可以看出,ICCSO算法改进的BP神经网络的测试误差为4.133 3e-08,相比ICSO算法、CSO算法改进的BP神经网络的测试误差精度提高了2个数量级,也就是说,ICCSO算法能够比ICSO算法、CSO算法改进的BP神经网络更准确地识别齿轮箱的6种状态,表示ICCSO算法改进的BP神经网络具有更好的故障识别精度以及较强的适应能力,也从侧面反映出本文提出的ICCSO算法的收敛速度、全局搜索能力确实得到了改进,验证了其应用于齿轮箱故障诊断的可行性与正确性。
4 结束语
基本鸡群算法有收敛精度高和鲁棒性好等优点,但存在收敛速度较慢及易陷入局部最优等问题,通过改进基本鸡群算法,并结合BP神经网络,对齿轮箱故障进行识别,结果表明改进约束鸡群算法结合BP神经网络比改进鸡群算法、基本鸡群算法有着更好的识别效果。