system: [SYSTEM]

user: 3. 模型建立与结果展示 3.1. 模型建立 随着数据种类和数量的增加，一般的人工处理数据，就变得不现实。人工智能算法的提出，可以为广大人民解决许多问题，能大大的缩短处理时间和减少人力。而BP神经网络是人工智能算法中被运用最多的神经网络模型之一。BP神经网络是1986年由Rumelhart和McCelland为首的科学家小组提出，是一种按误差逆传播算法训练的多层前馈网络。BP网络能学习和存储大量的输入到输出模式映射关系，而无需提前揭示这种映射关系的数学方程。它的学习规则是使用最速下降法，通过反向传播来不断调整网络的权重和阈值，使网络的误差平方和最小。数学理论已经证明，三层的BP神经网络可以拟合任意的非线性函数。 Table 1 Number of categorie 类别 3 4 5 6 7 8 数量 10 53 681 638 199 18 表1. 各类别数量 Table 2 Variable descripto 非挥发性酸含量(x1) Fixed acidity，g/L，连续变量 挥发性酸含量(x2) Volatile Acidity，g/L，连续变量 柠檬酸含量(x3) Citric Acid，g/L，连续变量 残余糖分含量(x4) Residual Sugar，g/L，连续变量 氯化钠含量(x5) Chlorides，g/L，连续变量 游离二氧化硫含量(x6) Free Sulfur Dioxide，mg/L，连续变量 总二氧化硫含量(x7) Total Sulfur Dioxide，mg/L，连续变量 密度(x8) Density，g/mL，连续变量 酸碱度(x9) pH，连续变量 硫酸钾含量(10) Sulphate，g/L，连续变量 酒精浓度(x11) Alcohol，%，连续变量 品质(y) Quality，离散变量 表2. 变量说明 BP神经网络虽然具有以上的优点，但是具有一个明显的缺点，容易陷入局部极小值。传统的BP神经网络为一种局部搜索的优化方法，它要解决的是一个复杂非线性化问题，网络的权值是通过沿局部改善的方向逐渐进行调整，这样会使算法陷入局部极值，权值收敛到局部极小点，从而导致网络训练失败。加上BP神经网络算法对初始网络权重非常敏感，以不同的权值初始化网络，其往往会收敛于不同的局部极小，这也是许多学者每次训练得到不同结果的根本原因。因此，针对BP神经网络的该缺点，提出用粒子群优化算法优化BP神经网络的权值与阈值。 粒子群优化(PSO)算法是近年来发展起来的一种新的进化算法。PSO算法属于进化算法的一种，和遗传算法相似，它是从随机解出发，通过迭代寻找最优解，它是通过适应度来评价解的品质。它通过追随当前搜索到的最优解来寻找全局最优值。将BP神经网络与PSO算法结合，通过把BP神经网络的权值与阈值看作PSO算法里的粒子，经过迭代更新，寻找出全局最优的适应值，最后将最优适应值返回到BP神经网络，作为BP网络的初始权值。 3.1.1. BP神经网络模型 BP神经网络，也叫误差反向传播算法的学习过程，由两个过程组成——信息的正向传播过程和误差的反向传播过程。外界将数据输入到输入层，然后网络通过隐层的处理，再映射到输出层，然后经过与期望值的对比判断，此为正向传播过程。当实际输出与期望值有差距时，将进入误差传播过程。误差通过输出层，按误差梯度下降的方式修正各层权值，向隐层、输入层逐层反传。此两个过程周而复始的进行，直至误差精度达到预先设置的值或者学习次数达到预先设置的次数为止。 BP神经网络的核心是BP算法，一种对于多基本子系统构成的大系统进行微商计算的严格而有效的方法，采用最小均方差学习方式。它的基本思想是梯度下降法，利用梯度搜索技术，以期使网络的实际输出值和期望输出值的误差均方差为最小。 BP网络中，隐层的节点数一直是研究的难点。实际上，隐层节点数的多少对网络的性能是有影响的，若隐层节点数少了，则网络的拟合度很难达到所要的精度，但节点数多了，训练网络的时间会增加，且有可能会出现过拟合的情况。经查阅相关文献资料知，有一个经验公式可以确定隐含层节点数目，其公式如下： h = m + n + a (1) 其中，h为隐含层节点数目，m为输入层节点数目，n为输出层节点数目，a为1~10之间的调节常数。 3.1.2. 改进后的PSO优化算法 粒子群优化算法是一种进化计算技术，在1995年由Eberhart博士和kennedy博士提出，源于对鸟群捕食的行为研究。该算法最初是根据鸟集群活动的规律性启发，进而利用群体智能建立的一个简化模型。其基本思想是：通过群体中个体间的协作和信息共享来寻找最优解。由于该算法简单容易实现且没有许多参数的调节。因此被广泛应用于函数优化、神经网络训练、模糊系统控制以及其他算法的应用领域。 PSO算法的更新规则是先随机产生一群粒子(随机解)，然后通过迭代找到最优解。在每一次的迭代过程中，粒子通过跟踪两个“极值”(pbest、gbest)来更新自己的速度和位置。在找到最优值(最优适应值)或到达设置的步长前，粒子将通过以下公式来更新自己的速度和位置： 速度更新： v i ( t + 1 ) = v i ( t ) + P + G (2) 位置更新 x i ( t + 1 ) = x i ( t ) + v i ( t + 1 ) (3) 其中 P = c 1 ∗ r 1 * ( p g e s t i − x i ( t ) ) (4) G = c 2 * r 2 * ( g b e s t − x i ( t ) ) (5) 公式(2)、(3)中， i = 1 ， 2 ， ⋯ ， n ，n为此群中粒子的总数， v i 为粒子的速度， v i 被限制在 v max 内，当速度超出 v max 时， v i 将被赋值为 v max 。 x i 为粒子当前位置，与速度同理，被限制在 x max 内。 r 1 ， r 2 为[0，1]内的随机数， c 1 ， c 2 为常数，称其为学习因子，t为当前迭代步数。公式(2)、(3)为PSO的标准形式。其中，公式(2)的第一部分称为记忆项，表示上一次粒子速度大小和方向的影响；第二部称为自身认知项，是从当前点指向粒子自身最好点的一个矢量，表示粒子的动作来源于自身经验的部分；第三部分则称为群体认知项，是一个从当前点指向种群最好点的矢量，反映了粒子间的协同合作和知识共享。 PSO算法经过多年的研究，许多学者对其进行继续优化。其中优化方法之一则是优化公式(2)，对公式(2)添加一个惯性因子w，优化后的公式(2)为以下公式： v i ( t + 1 ) = w × v i ( t ) + P + G (6) 惯性因子w的值为非负。若其值较大，全局寻优能力强，局部寻优能力弱；若其值较小，全局寻优能力弱，局部寻优能力强 [ 10 ] 。动态w能获得比固定值更好的寻优结果。因此将通过以下公式来动态改变w的值： w = w max − w e (7) w e = ( w max − w min ) * t t max (8) 其中， w max 为取最大惯性权值，通常取为0.85， w min 为取最小惯性权值，通常取为0.35。t为当前迭代步数， t max 为最大迭代步数。该模型用误差函数来做PSO算法的适应度函数，该误差函数为一个account函数，该函数即为若预测值 Y ^ i 与期望值 Y i 之间的差值小于1/6，则产生一个值1，否则为0，最后求1的个数，该个数值即为误差函数。产生适应度函数的过程如下： Step 1：预测值与期望值的作差； Step 2：判断该差值的绝对值是否小于1/6，若是，则取该差值为1，否则取为0； Step 3：对该差值进行求和，命名为account，并与此时网络训练样本数作商，命名为accuracy，接着用1对accuracy作差，结果为mse。以mse作为PSO算法的适应度函数。 通过将PSO优化算法应用到BP神经网络中，优化BP网络中权值与阈值。用PSO算法具有全局寻优能力的特点，来代替BP网络自行训练的过程。PSO算法替代BP网络训练的具体过程步骤如下： 步骤1：初始化粒子群。随机产生各粒子的位置与速度； 步骤2：构建好BP网络架构，将BP 网络的权值与阈值看作粒子的解。根据公式(7)，计算各个粒子的适应值； 步骤3：将各个粒子的适应值与遍历过的对应最好位置pbest的值进行比较，若此时的适应值较好，则将该值视作当前粒子最好的位置pbest； 步骤4：将各个粒子的最好位置pbest与群体遍历过的最好位置gbest作比较，若较好，则将对应的pbest当作全局最好值gbest； 步骤5：通过公式(2)与公式(3)，对粒子的位置和速度进行更新； 步骤6：判断是否达到目标精度或最高迭代次数； 步骤7：若步骤6判断为是或者程序达到最高迭代步数，则输出全局最优解；否则，则返回步骤步骤四。 具体流程如图1。 3.2. 结果展示 实证所用的计算软件是版本为2016b的MATLAB。BP模型的网络结构为三层网络。所用实证数据有11个指标变量，1个质量指标变量。由于变量x2的取值区间为[0.12，1.58]，而x7的取值区间为[6，289]，由此可知各变量间的量刚不同，进行网络训练前，先对各变量进行归一化。所用的归一化公式如下： x = x − x min x max − x min (9) 因此，根据数据特征，网络的架构为输入层节点数为11个，输出节点数为1个。隐层节点数按公式(1)，确定了隐层节点数在4~14间的整数，最后经过试验验证，隐层节点数为8时，效果最好。因此，神经网络整体架构为：输入是11个，输出是1个，隐层节点个数为8个。网络其余参数见表3。 两个模型的实证总样本为1599个，按1:4的原则将数据分为测试集与训练集，即测试集的样本数为399个，训练集样本数为1200个。 由于BP网络易陷入局部极小值，则用PSO算法来替代BP网络自身训练过程。PSO优化算法是将BP神经网络的权值与阈值当作粒子，然后通过适应度函数来更新迭代粒子的位置与速度，最终寻找到全局最优的粒子。粒子群算法的各个参数见下表4。 为了使结果有可比性，运用MATLAB软件，设置了每一次运行的训练集数据与测试集数据在两个模型中均一致，且BP网络的构架也一致。 为了降低随机带来的偏差，对两个模型进行了三十次的模拟，然后取其均值作为最终的结果。两个模型的运算结果见下表5。 实证结果表明，在各自训练三十次后，PSO优化BP网络模型得到的平均准确率均要比单纯的使用BP网络模型要高，两个极值均要优于单纯的BP网络模型，说明PSOBP模型的性能要优于单纯的使用BP网络模型。但是由方差来看，PSO优化BP网络模型比单纯的BP网络要高，说明PSOBP网络的稳定性要低。导致PSOBP网络的稳定性比单纯的BP网络差的原因，可能是个别粒子在寻优过程中，误入了陷阱点，此陷阱点并非是极小值点，进而影响BP算法在测试过程达不到最优。PSO算法优化BP网络除了在稳定性能上不能优于BP算法，但从其他方面与BP算法比较，在葡萄酒优化方面，均取得足够的优势，这也进一步说明该方法是可以代替BP网络自身的训练过程。所用的数据与文献 [ 9 ] 相同，且同样将葡萄酒等级分为三类。因此与该文献的结果做对比最合适。结果对比如下表6。 图1. PSO算法流程图 Table 3 BP’ paramete 输入层到隐层的传递函数 logsig 隐层到输出层的传递函数 logsig 网络训练函数 traingd net.trainParam.epochs 400 net.trainParam.goal 0.001 net.trainParam.lr 0.3 表3. BP网络结构参数一览表 Table 4 PSO’ paramete BP网络输入层到隐层的传递函数 logsig BP网络隐层到输出层的传递函数 logsig BP网络训练函数 traingd PSO的学习因子c1、c2 2 PSO的最大惯性系数 0.85 PSO的最小惯性系数 0.35 PSO最大迭代步数 200 PSO最大速度 1 PSO最大位置 3 PSO粒子数 30 PSO粒子长度 73 PSO目标精度 0.01 表4. 粒子群参数一览表 Table 5 Thirty operation 模型 均值 最大值 最小值 方差 BP网络 0.8312 0.9624 0.1203 0.0245 PSOBP网络 0.8874 0.9774 0.1504 0.0425 表5. 三十次结果展示表 Table 6 Comparison of result 模型 总体结果 文献 [ 9 ] 所用模型结果 多元回归 0.7931 主成分回归 0.8245 判别分析 0.8119 支持向量机 0.8276 分类回归树 0.8213 随机森林 0.8433 模型结果 PSO优化BP网络 0.8874 表6. 结果对比表 由表6可知，文献 [ 9 ] 所建立的众多模型中，其分类准确率最高的模型是随机森林模型，达到84.33%。但该模型的分类准确率略差于的PSO优化BP网络模型。因此，所建立的模型，在葡萄酒分类的应用中，是有参考意义的。