何明慧,徐 怡,2,王 冉,胡善忠
1.安徽大学 计算机科学与技术学院,合肥 230601
2.安徽大学教育部智能计算与信号处理实验室,合肥 230039
酒类品质通常影响着市场商品的供应需求以及食品安全。现实生活中,酒类品质通常由内部因素与外部因素共同影响[1]。通常酒类品质均依靠人工检验或经验判定,当样本数目逐渐增大,人工方法则会变得效率极低。随着人工智能技术的发展,神经网络具有模拟人脑高效处理信息的特点,并且已经广泛应用于预测估计、模式识别、图像处理及函数优化等领域[2]。目前BP神经网络的应用最为广泛,其具有结构简单、训练快速及自学习等特点。BP神经网络的性能取决于网络拓扑结构、连接权值及学习函数等。如果上述条件设置不合理,网络则会出现收敛速度慢,易陷入局部极小值等问题。
神经网络中每两个神经元节点之间包含一个连接权值,通常权值的初始化范围在[-a,a]或[0,a]之间(其中0<a<1)。目前神经网络的权值初始化的方法共分为两类,一类为区间分析法,另一类为迭代初始化法。区间分析法主要包括,Nguyen与Widrow提出隐含层的权值区间为(其中H为隐含层节点数,N为隐含层节点的权值个数)[3]。Boers与Kuiper提出权值的初始化区间为(其中din为输入节点数)[4]。Kim与Ra提出神经网络的最大权值为(其中η为网络学习率,din为输入节点数)[5]。Sodhi与Chandra提出神经网络的权值区间为(其中H为隐含层节点数)[6]。Drago与Ridella提出隐含层的权值区间为(其中dh为隐含层节点数)[7]。迭代初始化法主要包括,Yang提出加速粒子群算法(ACPSO),并且此算法已经运用于多目标优化问题中[8]。Ren提出为了避免在训练中网络陷入局部极小值,使用粒子群优化算法动态选取权值[9]。Chouikhi与Ammar提出采用粒子群优化算法结合神经网络在训练过程中逐步修改参数,动态选取最优权值[10]。Gaxiola与Melin在神经网络训练中使用粒子群优化算法动态选取神经网络权值[11]。
综上所述,区间分析法是一类静态设定权值的方法,并不能保证神经网络每次训练时设定的权值最佳,并且随着网络训练上述方法易导致网络陷入局部极小值。迭代初始化法虽然采用粒子群优化算法动态选取权值,这样避免了人工设定的盲目性,但是上述方法会出现粒子早熟或粒子陷入局部最优的情况,导致选取权值不精确。
在本文中,针对神经网络权值选取不精确的问题,在粒子群优化算法中提出动态惯性权重与参数制约,同时粒子群优化算法结合差分进化(DE)算法,使粒子拥有变异与交叉操作,此为改进的粒子群优化算法(IPSO)。运用此改进的粒子群优化算法结合BP神经网络动态选取权值。综上所述,基于IPSO算法与BP神经网络,构建IPSONN神经网络模型并运用此模型进行酒类品质的预测。实验结果分别从训练精度、正确率及粒子多样三方面验证了IPSONN模型的有效性。
BP神经网络是采用误差逆向传播算法训练的前馈神经网络。其学习规则是遵循梯度下降法,通过逆向传播不断调整网络的权值与阈值,使网络的误差最小。在本文中,网络采用单隐含层如图1所示。隐含层的激励函数为Sigmoid激励函数,输出层的激励函数为线性激励函数。单隐含层BP神经网络的信息传递过程如下:
图1 单隐含层神经网络结构图
(1)隐含层节点 j的输出
其中,n为输入层节点数,xi为输入向量,wji为输入层节点i与隐含层节点 j之间的权值,bj为隐含层节点 j的阈值,yj为隐含层节点 j的输出,fh为隐含层的激励函数,本文为Sigmoid激励函数。
(2)输出层的输出
其中,H为隐含层节点数,woj为输出层节点o与隐含层节点 j之间的权值,bo为输出层节点o的阈值,fo为输出层的激励函数,本文为线性激励函数,输出层有且仅有一个输出节点。
(3)计算误差
其中,t为实际值,yo为网络输出,输出层有且仅有一个输出节点。
(4)反向修改
根据训练误差E,BP神经网络通过梯度下降法调整网络的权值与阈值,并逐步训练使网络的误差最小。
(5)评价标准
其中,N为样本总数,yn为预测值,tn为实际值。
粒子群优化算法(PSO)由Eberhart与Kennedy于1995年提出的一种基于多目标优化的启发式算法[12]。粒子群优化算法模拟鸟群或鱼群觅食,在觅食过程中群体之间存在着一种社会信息共享机制,不断迭代得到最优粒子。目前粒子群优化算法已经广泛运用于神经网络、函数优化、信息处理及其他多目标优化等领域[13]。
粒子群优化算法的每个粒子为解空间的一个解,所有粒子构成群体并随机分布在一个维度为D∈Rd的空间中。群体X由N个粒子构成,即为X=(X1,X2,…,XN)。在搜索过程中,第i个粒子在空间D中的位置为Xi=(Xi1,Xi2,…,Xid),速度为 Vi=(Vi1,Vi2,…,Vid)。粒子速度和粒子位置由局部最优Pi_best与全局最优Gbest共同决定。局部最优是当前粒子在搜索过程中自身最佳的位置,即可表示为全局最优是所有粒子在搜索过程中全局最佳的位置,即可表示为Gbest=(Gbest1,Gbest2,…,Gbestd)。粒子速度与粒子位置的更新公式如下:
其中,i=1,2,…,N,N为粒子总数,d为优化目标变量个数,Vi为粒子速度,Xi为粒子位置,c1为认知系数,c2为社会系数,r1与r2均为[0,1]之间的随机数,t为当前迭代次数,tmax为迭代总数。
粒子群优化算法中,随着粒子不断搜索与进化,所有粒子均趋向于最佳粒子的位置,这样易导致粒子早熟或陷入局部最优,甚至出现粒子多样性缺失的严重问题[14]。粒子多样性的定义如下:
其中,xij(t)为第t代,第i个粒子,第 j个部分的值;为第t代所有粒子的第 j个部分的均值。
差分进化算法(DE)是由Storn与Price于1995年提出的一种基于种群随机搜索的进化算法[15]。差分进化算法主要包括4个步骤,即初始化、变异、交叉与选择。差分进化算法的详细过程如下。
个体采用十进制编码,进化代数Nit,个体总数N,染色体长度L,变异率F,交叉率CR,基因编码值的范围为[Umin,Umax]。
其中,i=1,2,…,N ;j=1,2,…,L,rand为[0,1]之间的随机数。
随机选取当前迭代次数下三个不同的个体进行变异,个体变异的公式如下:
其中,t为当前进化代数,rd1、rd2、rd3为3个不同的随机整数,并且均小于tmax。
根据交叉率或随机位置,在当前进化代数下使粒子进行交叉操作,个体交叉的公式如下:
其中,rand为[0,1]之间的随机数,jrand为[1,L]的随机整数。
计算个体适应度值,若个体的适应度值小于等于原始个体的适应度值则选择变异与交叉后的个体,否则个体保持不变。选择公式如下:
其中,f为适应度函数。
粒子在搜索过程中,若不能保持局部最优与全局最优的平衡,则粒子易产生早熟或陷入局部最优,甚至出现粒子多样性降低的严重问题。在本文中,结合惯性权重线性递减与惯性权重非线性递减的方法[16],提出动态惯性权重,即惯性权重根据迭代次数动态减小,公式如下。
通常当惯性权重较大时算法具有全局搜索性能,当惯性权重较小时算法具有局部搜索性能,这有利于平衡算法的全局搜索与局部搜索。对于惯性权重线性递减的方法,即使迭代前期粒子已接近全局最优点由于其局部搜索能力较弱可能会被错过,迭代后期由于粒子全局搜索能力变弱,易陷入局部最优,并且惯性权重线性递减不能满足实际搜索过程非线性复杂的特点,从而影响算法性能。对于惯性权重非线性递减的方法,虽然其惯性权重非线性递减满足实际搜索过程非线性复杂的特点,但是随迭代次数增加其惯性权重减小极其迅速,算法性能过早由全局搜索转变为局部搜索,并且由于过度震荡,算法在迭代早期不能有效确定次优解,即使迭代后期惯性权重降低也难以找到最优解。在本文中,动态惯性权重采用泛化参数b,随机参数rand与S形函数控制惯性权重减小的幅度,使惯性权重大小交替变化并且总体呈现下降的趋势。如图2,在搜索早期惯性权重取较大值的概率增加,粒子以较大的飞行速度搜寻整个空间确定全局最优解的范围,保证种群全局“搜索”能力,在搜索后期惯性权重取较小值的概率增加,粒子获得较小飞行速度,进而可以更加精确地搜索最优解位置邻域,保证种群局部“开发”能力,这可以平衡算法的全局搜索与局部搜索。同时,在搜索过程中惯性权重随迭代次数动态调整,可以不断变化迭代前后粒子的速度与位置,增强粒子间的交互,有利于粒子快速找到最优解,避免惯性权重减小导致算法陷入局部最优,并且惯性权重动态变化满足实际搜索过程非线性复杂的特点。综上所述,动态惯性权重具备随迭代次数增加而减小平衡算法性能,以及大小交替变化满足实际搜索过程非线性复杂与寻优快速的优点。基于上述惯性权重调整方法,本文绘制粒子分布对比图。如图3,在惯性权重线性递减与惯性权重非线性递减的方法中,迭代结束时粒子分布松散,粒子距离全局最优点较远。例如,非线性递减方法中粒子分布区域第一维(-0.1,0.1),第二维(-0.7,0.1),线性递减方法中粒子分布区域第一维(0,0.2),第二维(0,0.2),粒子远离全局最优点则说明粒子陷入局部最优的可能性增加。相比之下,在动态惯性权重方法中,迭代结束时粒子分布区域第一维(0.2,0.3),第二维(0,0.2),粒子紧密分布于全局最优点的周围并且多数粒子已找到全局最优解,说明算法收敛到全局最优解的概率增加,具有较好的收敛性能,则体现出本文所提动态惯性权重具有优势。其中,LIW为线性惯性权重,NLIW为非线性惯性权重,DIW为动态惯性权重。
图2 惯性权重对比图
图3 粒子分布对比图
在粒子更新速度时,其也受限于认知参数与社会参数的取值。起初Eberhart指出认知系数与社会系数的取值均为2.0,此后在实际问题中Eberhart再次优化并设定上述两个参数取值为1.494 45[17]。根据以上论述,本文提出认知系数与社会系数在给定范围中相互制约,并且两个参数上界之和为定值,即c1+c2=4。若c1或c2超过上界,则按照限定区间1.494 45≤c1≤2.0,1.494 45≤c2≤2.0,设置c1=2.0或c2=2.0。其中,w为惯性权重,wmax为惯性权重最大值,wmin为惯性权重最小值,b为泛化参数,tmax为最大迭代次数,rand为[0,1]之间的随机数。
同时,粒子群优化算法结合差分进化算法,使粒子在搜索过程中拥有变异与交叉操作。粒子进行自我变异及相互交叉可以避免粒子陷入局部最优,并且有助于提高粒子多样性。粒子的变异与交叉操作贯穿整个粒子搜索过程,并优化粒子的搜索性能。综上所述,此改进的粒子群优化算法(IPSO)描述如下。
5.1.1 粒子初始化
粒子采用十进制编码,进化代数Nit,粒子总数N,粒子搜索空间的维度D∈Rd,变异率F,交叉率CR,粒子初始位置范围为[Umin,Umax],粒子初始速度为[0,1],粒子中封装权值矩阵,粒子结构如图4所示。
图4 粒子结构图
其中i=1,2,…,N,rand()为规模等同于权值矩阵的随机数矩阵,取值均在[-1,1]之间,W1为输入层与隐含层之间的权值矩阵,W2为隐含层与输出层之间的权值矩阵,维度d为2。
5.1.2粒子变异
随机选取当前进化代数下3个不同的粒子进行变异,得到当前迭代次数下变异后的粒子,变异公式如下:
其中,t为当前进化代数,rd1、rd2、rd3为3个不同的随机整数,并且均小于tmax。
5.1.3粒子交叉
根据交叉率或随机位置,在当前进化代数下使粒子进行交叉操作,粒子交叉的公式如下。
其中,rand为[0,1]之间的随机数,j为第i个粒子的第j部分,jrand为[1,d]之间的随机整数。
5.1.4粒子的位置与速度更新
本文采用动态惯性权重,并且认知系数与社会系数在限定区间内存在制约关系。算法每次迭代时,在上述限定区间内分别随机产生c1与c2的参数值。改进后粒子的速度更新与位置更新公式如下。
其中,PXi(t+1)为第(t+1)代,第i个粒子。
5.1.5 粒子选择
计算粒子的适应度值,若粒子的适应度值小于等于原始粒子的适应度值则选择变异与交叉后的粒子,否则粒子保持不变;并计算局部最优值,更新局部最优粒子
5.1.6更新全局最优
当所有粒子完成上述操作,计算全局最优值,并更新全局最优粒子Gbest。全局适应度更新公式如下:
其中,f为适应度函数。
算法1 IPSO算法
输入:初始化IPSO算法的所有参数与适应度函数。
输出:全局最优粒子。
步骤1初始化粒子速度与位置,根据公式(17)初始化粒子结构,初始化粒子总数N与迭代总数Nit,当前迭代次数为t=1。
步骤2运用BP神经网络的MSE函数作为适应度函数计算粒子的初始化适应度值,粒子的最小适应度值作为初始化局部最优值与初始化全局最优值,并记录局部最优粒子与全局最优粒子。
步骤3当t<Nit,根据公式(18)粒子进行变异操作;若t≥Nit,转至步骤8。
步骤4根据公式(19)粒子进行交叉操作。
步骤5 根据公式(20)、(21),更新粒子速度与位置。
步骤6根据公式(22)选取局部最优粒子,并更新局部最优值。
步骤7根据公式(23)选取全局最优粒子,并更新全局最优值,当迭代次数t=t+1。若t≥Nit,转至步骤8;否则,转至步骤3。
步骤8得到全局最优粒子,其中封装权值矩阵。
综上所述,基于IPSO算法结合BP神经网络动态选取权值,本文构建IPSONN神经网络模型,该模型的训练过程如下:
步骤1加载数据集并归一化其中的数据值在[-1,1]之间。
步骤2根据数据集属性数目确定网络的拓扑结构。
步骤3运用算法1结合BP神经网络构建IPSON神经网络模型。
步骤4训练IPSONN神经网络模型得到网络的训练结果。
步骤5反归一化训练结果,并记录MSE、MAE、MAPE及网络输出。
步骤6 IPSONN模型训练结束。
在本文中,实验环境为MATLAB R2010b,实验数据集来源于UCI的wine-quality[18]。首先,根据数据集属性数目,IPSONN模型的输入节点数目为11,输出节点数目为1。随机选择1 000个数据作为训练数据集,在剩余数据中,随机选择100个数据作为测试数据集。训练数据集与测试数据集的所有数据均归一化在[-1,1]之间。根据Master的理论设定隐含层节点数为6[19],根据拇指规则设定该模型的训练精度为0.05[20],学习率为0.05,动量因子为0.8,隐含层的激励函数为Sigmoid,输出层的激励函数为Purelin,学习函数为LM。其次,设定种群迭代总数为100,粒子总数为20,粒子速度范围为[-3,3],粒子位置范围为[-1,1],交叉率 CR 为0.4,变异率F为0.6,最大惯性权重wmax为0.9,最小惯性权重wmin为0.4。最终IPSONN模型的平均训练结果如表1所示。作为对比实验,运用训练数据集分别训练BPNN、DENN、PSONN、APSONN、ACPSONN共5个神经网络模型,并且这5个模型的参数设置同上,平均训练结果如表2至表6所示。
如表1至表6,IPSONN模型相比其他模型训练结果的平均 MSE、MAE、MAPE较小,并且 MSE、MAE、MAPE的走向曲线如图5至图7所示。如图,IPSONN的训练结果相比其他模型训练结果较好,并且随着训练代数的增加IPSONN的 MSE、MAPE、MAE一直较小并趋向于稳定。根据公式(9)、(10)计算PSONN、APSONN、ACPSONN、IPSONN模型粒子的多样性,多样性变化曲线,如图8所示。
表1 IPSONN
表2 BPNN
表3 DENN
表4 PSONN
表5 APSONN
表6 ACPSONN
图5 MSE对比图
图6 MAE对比图
图7 MAPE对比图
图8 粒子多样性对比图
如图8,随着迭代次数不断增加,ACPSONN快速失去多样性。加速粒子群优化算法(ACPSO)在粒子更新速度与位置时,仅采用全局最优而省略局部最优,粒子在搜索过程中缺少全局最优与局部最优的交互,并且粒子的搜索过程较为单一,易造成粒子早熟从而导致粒子多样性缺失严重[21]。APSONN与PSONN的多样性跨度区间较小均为(4,5),(5,6)。IPSONN的多样性跨度区间为(4,5),(5,6),(6,7),并且粒子多样性平稳增加。以上结果表明,IPSONN模型在训练过程中保持粒子多样性。
运用测试数据集验证上述模型的性能,不同模型的预测正确率如表7所示。IPSONN模型的预测结果如图9所示。
表7 正确率%
图9 IPSONN输出对比图
如表7与图9,IPSONN神经网络模型的正确率均要高于其他神经网络模型,并且随着训练次数的增加IPOSNN模型的正确率趋于平稳,平均正确率在82%至86%之间。在平均情况下,IPSONN神经网络模型最高正确率可达86%。综上所述,通过比较训练精度、粒子多样性及预测正确率,IPSONN神经网络模型展现出较好的性能。
针对神经网络权值选取不精确的问题,采用改进的粒子群优化算法结合BP神经网络动态选取权值,避免人工设定权值的盲目性。在改进的粒子群算法中,采用动态惯性权重,并且认知参数与社会参数相互制约。同时,改进的粒子群优化算法结合差分进化算法,使粒子拥有变异与交叉操作,这样可以平衡局部最优与全局最优,并保持粒子的多样性。基于IPSO算法与BP神经网络,构建IPSONN神经网络模型并用于酒类品质的预测,避免人工检验的低效率。实验分别从训练精度、粒子多样性及测试正确率三方面,验证了该模型的有效性。在今后的研究中,IPSONN模型可以运用于更多实际问题中,并且可以结合其他人工智能算法优化IPSO算法,从而进一步提升模型性能。