1. 引言
近年来,我国经济水平得到了飞跃的发展,人们的生活水平也随之提高。进而对养生的需求也越来越高。研究表明,适量的饮酒对人体机能起到很好的作用,能调节人体新陈代谢。而葡萄酒则是养生品之一,人们进而喜欢喝葡萄酒,市场对葡萄酒的需求量也随之越来越大。然而市场上葡萄酒的品质参差不齐,如何区分葡萄酒的质量,是现今许多消费者和生产厂家都急切盼望解决的问题,因此鉴别葡萄酒的品质就显得尤为重要。现今的鉴别方法常常是通过理化指标、感官指标来确定。而感官指标主要是通过聘请一批有资质的评酒员进行品评,用感官分析法来对葡萄酒进行等级分类。但这种方法易受到评酒人员嗜好、心理、经验等因素的影响,通常使得评定存在一定主观性和不确定性。因此对葡萄酒质量的评定更多的通过理化指标来确定。通过对葡萄酒的部分理化指标进行分析,建立相应的模型,进而区分出葡萄酒的品质。参考国内外的文献,有许多学者对葡萄酒等级的分类进行研究。
2017年,杨云等人通过构建AdaBoost-SVM集成学习方法将多个基分类器集成,建立以多分类器优化集成为核心的品质分类模型,进而对葡萄酒质量进行分类 [1] ;2017年,屈玉涛等人基于SVM实现了对意大利葡萄酒的分类和预测 [2] ;2016年,霍双红等人先用主成分分析,提取了主要的影响因素,再利用k均值和自组织神经网络算法分别对葡萄酒进行分类和比较 [3] ;2012年,张浩彬在其硕士论文中,基于数据挖掘方法,建立了许多模型,对葡萄酒品质进行鉴定 [4] 。2009年,Cortez等人提出运用支持向量机对超过上千个葡萄酒样本进行质量评定 [5] 。
BP神经网络作为一种模式识别方法,具有强大的自学习、自适应、自组织等能力,从而使其能拟合任意的非线性映射。因此,我们将其应用在模式识别、信号处理、优化计算,图像处理,分类、自动目标识别、机器人等领域。而在分类领域,许多学者用BP网络方法进行分类,均取得不错效果,如张喜红运用改进后的BP神经网络,对西洋参进行等级分类 [6] ;王利平将BP神经网络运用到了生物医学上,其用BP网络对红细胞进行识别分类 [7] 。但由于BP算法是基于梯度的最速下降法,以误差平方为目标函数,因此,不可避免的存在一个缺点——易陷入局部极小值。而粒子群算法作为一种新兴的群智能方法,该算法具有很好的优化能力。将其与BP神经网络结合,可以很好的解决BP网络易陷入局部极小值的情况 [8] 。
因此,本文通过葡萄酒的一些理化指标建立了BP神经网络模型和PSO优化BP神经网络模型。通过模型的对比,能客观的反映葡萄酒质量的评定效果。
2. 数据来源
实证所用数据来自UCI数据库(http://archive.ics.uci.edu/ml/datasets/Wine+Quality),此处采用的数据是红葡萄酒的数据,该数据由Paulo Cortez教授提供。数据包含1599个样本,其中有11种主要理化指标成分以及一个关于葡萄酒等级的变量指标,该等级指标有6个级别,分别是从级别3到级别8。由表1可知,该原始数据的红酒,在类别为3的样本数量有10个,类别为8的样本数量有18,均少于其他类别的样本数。为了研究方便,将这六个级别重新划分,分为低等,中等,高等三类,并分别用1/6、1/2、5/6来表示这三类,其对应的数据量分别有63、1319、217 [5] [9] 。该数据样本的变量说明如表2。
3. 模型建立与结果展示
3.1. 模型建立
随着数据种类和数量的增加,一般的人工处理数据,就变得不现实。人工智能算法的提出,可以为广大人民解决许多问题,能大大的缩短处理时间和减少人力。而BP神经网络是人工智能算法中被运用最多的神经网络模型之一。BP神经网络是1986年由Rumelhart和McCelland为首的科学家小组提出,是一种按误差逆传播算法训练的多层前馈网络。BP网络能学习和存储大量的输入到输出模式映射关系,而无需提前揭示这种映射关系的数学方程。它的学习规则是使用最速下降法,通过反向传播来不断调整网络的权重和阈值,使网络的误差平方和最小。数学理论已经证明,三层的BP神经网络可以拟合任意的非线性函数。
BP神经网络虽然具有以上的优点,但是具有一个明显的缺点,容易陷入局部极小值。传统的BP神经网络为一种局部搜索的优化方法,它要解决的是一个复杂非线性化问题,网络的权值是通过沿局部改善的方向逐渐进行调整,这样会使算法陷入局部极值,权值收敛到局部极小点,从而导致网络训练失败。加上BP神经网络算法对初始网络权重非常敏感,以不同的权值初始化网络,其往往会收敛于不同的局部极小,这也是许多学者每次训练得到不同结果的根本原因。因此,针对BP神经网络的该缺点,提出用粒子群优化算法优化BP神经网络的权值与阈值。
粒子群优化(PSO)算法是近年来发展起来的一种新的进化算法。PSO算法属于进化算法的一种,和遗传算法相似,它是从随机解出发,通过迭代寻找最优解,它是通过适应度来评价解的品质。它通过追随当前搜索到的最优解来寻找全局最优值。将BP神经网络与PSO算法结合,通过把BP神经网络的权值与阈值看作PSO算法里的粒子,经过迭代更新,寻找出全局最优的适应值,最后将最优适应值返回到BP神经网络,作为BP网络的初始权值。
3.1.1. BP神经网络模型
BP神经网络,也叫误差反向传播算法的学习过程,由两个过程组成——信息的正向传播过程和误差的反向传播过程。外界将数据输入到输入层,然后网络通过隐层的处理,再映射到输出层,然后经过与期望值的对比判断,此为正向传播过程。当实际输出与期望值有差距时,将进入误差传播过程。误差通过输出层,按误差梯度下降的方式修正各层权值,向隐层、输入层逐层反传。此两个过程周而复始的进行,直至误差精度达到预先设置的值或者学习次数达到预先设置的次数为止。
BP神经网络的核心是BP算法,一种对于多基本子系统构成的大系统进行微商计算的严格而有效的方法,采用最小均方差学习方式。它的基本思想是梯度下降法,利用梯度搜索技术,以期使网络的实际输出值和期望输出值的误差均方差为最小。
BP网络中,隐层的节点数一直是研究的难点。实际上,隐层节点数的多少对网络的性能是有影响的,若隐层节点数少了,则网络的拟合度很难达到所要的精度,但节点数多了,训练网络的时间会增加,且有可能会出现过拟合的情况。经查阅相关文献资料知,有一个经验公式可以确定隐含层节点数目,其公式如下:
(1)
其中,h为隐含层节点数目,m为输入层节点数目,n为输出层节点数目,a为1~10之间的调节常数。
3.1.2. 改进后的PSO优化算法
粒子群优化算法是一种进化计算技术,在1995年由Eberhart博士和kennedy博士提出,源于对鸟群捕食的行为研究。该算法最初是根据鸟集群活动的规律性启发,进而利用群体智能建立的一个简化模型。其基本思想是:通过群体中个体间的协作和信息共享来寻找最优解。由于该算法简单容易实现且没有许多参数的调节。因此被广泛应用于函数优化、神经网络训练、模糊系统控制以及其他算法的应用领域。
PSO算法的更新规则是先随机产生一群粒子(随机解),然后通过迭代找到最优解。在每一次的迭代过程中,粒子通过跟踪两个“极值”(pbest、gbest)来更新自己的速度和位置。在找到最优值(最优适应值)或到达设置的步长前,粒子将通过以下公式来更新自己的速度和位置:
速度更新:
(2)
位置更新
(3)
其中
(4)
(5)
公式(2)、(3)中,
,n为此群中粒子的总数,
为粒子的速度,
被限制在
内,当速度超出
时,
将被赋值为
。
为粒子当前位置,与速度同理,被限制在
内。
为[0,1]内的随机数,
为常数,称其为学习因子,t为当前迭代步数。公式(2)、(3)为PSO的标准形式。其中,公式(2)的第一部分称为记忆项,表示上一次粒子速度大小和方向的影响;第二部称为自身认知项,是从当前点指向粒子自身最好点的一个矢量,表示粒子的动作来源于自身经验的部分;第三部分则称为群体认知项,是一个从当前点指向种群最好点的矢量,反映了粒子间的协同合作和知识共享。
PSO算法经过多年的研究,许多学者对其进行继续优化。其中优化方法之一则是优化公式(2),对公式(2)添加一个惯性因子w,优化后的公式(2)为以下公式:
(6)
惯性因子w的值为非负。若其值较大,全局寻优能力强,局部寻优能力弱;若其值较小,全局寻优能力弱,局部寻优能力强 [10] 。动态w能获得比固定值更好的寻优结果。因此将通过以下公式来动态改变w的值:
(7)
(8)
其中,
为取最大惯性权值,通常取为0.85,
为取最小惯性权值,通常取为0.35。t为当前迭代步数,
为最大迭代步数。该模型用误差函数来做PSO算法的适应度函数,该误差函数为一个account函数,该函数即为若预测值
与期望值
之间的差值小于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],由此可知各变量间的量刚不同,进行网络训练前,先对各变量进行归一化。所用的归一化公式如下:
(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。
由表6可知,文献 [9] 所建立的众多模型中,其分类准确率最高的模型是随机森林模型,达到84.33%。但该模型的分类准确率略差于的PSO优化BP网络模型。因此,所建立的模型,在葡萄酒分类的应用中,是有参考意义的。
4. 结论
随着时代的发展,大数据成为了当今热门话题。而大数据的应用也越来越被社会所接受。现今,无论是硬件上对葡萄酒物理化学属性检测工具的出现,还是软件上对葡萄酒品质分类的数据挖掘算法的普及,均为用大数据方法鉴定葡萄酒质量提供了前提条件。目前,如何对智能算法进行优化的问题,是许多研究智能算法的学者在大数据领域关注的较多的方向之一。正是在大数据的背景下,我们运用PSO优化算法改进BP神经网络的自身易陷入局部极值的不足。结果表明PSO优化算法改进BP网络是可行的,且是可信的。该模型的不足之处是理论支撑不是很成熟,这也是未来需要继续往下深究的努力方向。
参考文献