学号:北京工商大学人工神经网络实验报告实验一基于BP算法的XX及Matlab实现院(系)专业学生姓名成绩指导教师2011年10月一、实验目的:1、熟悉MATLAB中神经网络工具箱的使用方法;2、了解BP神经网络各种优化算法的原理;3、掌握BP神经网络各种优化算法的特点;4、掌握使用BP神经网络各种优化算法解决实际问题的方法。二、实验内容:1案例背景1.1BP神经网络概述BP神经网络是一种多层前馈神经网络,该网络的主要特点是信号前向传递,误差反向传播。在前向传递中,输入信号从输入层经隐含层逐层处理,直至输出层。每一层的神经元状态只影响下一层神经元状态。如果输出层得不到期望输出,则转入反向传播,根据预测误差调整网络权值和阈值,从而使BP神经网络预测输出不断逼近期望输出。BP神经网络的拓扑结构如图1.1所示。图1.1BP神经网络拓扑结构图图1.1中1x,2x,……nx是BP神经网络的输入值1y,2y,……ny是BP神经的预测值,ij和jk为BP神经网络权值。从图1.1可以看出,BP神经网络可以看成一个非线性函数,网络输入值和预测值分别为该函数的自变量和因变量。当输入节点数为n,输出节点数为m时,BP神经网络就表达了从n个自变量到m个因变量的函数映射关系。BP神经网络预测前首先要训练网络,通过训练使网络具有联想记忆和预测能力。BP神经网络的训练过程包括以下几个步骤。步骤1:网络初始化。根据系统输入输出序列yx,确定网络输入层节点数n、隐含层节点数l,输出层节点数m,初始化输入层、隐含层和输出层神经元之间的连接权值ij和jk,初始化隐含层阈值a,输出层阈值b,给定学习速率和神经元激励函数。步骤2:隐含层输出计算。根据输入向量x,输入层和隐含层间连接权值ij以及隐含层阈值a,计算隐含层输出H。式中,l为隐含层节点数;f为隐含层激励函数,该函数有多种表达形式,本章所选函数为:步骤3:输出层输出计算。根据隐含层输出H,连接权值jk和阈值b,计算BP神经网络预测输出O。步骤4:误差计算。根据网络预测输出O和期望输出y,计算网络预测误差e。步骤5:权值更新。根据网络预测误差e更新网络连接权值ij,jk。式中,为学习速率。步骤6:阈值更新。根据网络预测误差e更新网络节点阈值a,b。步骤7:判断算法迭代是否结束,若没有结束,返回步骤2。1.2基于BP算法的多层前馈网在催化剂配方建模中的应用随着化工技术的发展,各种新型催化剂不断问世,在产品的研制过程中,需要制定优化指标并设法找出使指标达到最佳值的优化因素组合,因此属于典型的非线性优化问题。目前常用的方法是采用正交设计法安排实验,利用实验数据建立指标与因素间的回归方程,然后采用某种寻优法,求出优化配方与优化指标。这种方法的缺陷是,数学模型粗糙,难以描述优化指标与各因素之间的非线性关系,以其为基础的寻优结果误差较大。理论上已经证明,三层前馈神经网络可以任意精度逼近任意连续函数。本例采用BP神经网络对脂肪醇催化剂配方的实验数据进行学习,以训练后的网络作为数学模型映射配方与优化指标之间的复杂非线性关系,获得了较高的精度。三、实现方法(设计):1模型建立基于BP神经网络的分类算法建模包括BP神经网络构建、BP神经网络训练和BP神经网络分类三步,算法流程如图1.2所示。图1.2算法流程本例网络设计方法与建模效果如下:首先利用正交表安排实验,得到18组准确的实验数据分别作为神经网络的训练样本(15组)及测试样本(3组),数据如表1.1所示。根据配方的因素个数和优化指标的个数设计神经网络的结构,然后用实验数据对神经网络进行训练。完成训练之后的多层前馈神经网络,其输入与输出之间形成了一种能够映射配方与优化指标内在联系的连接关系,可作为仿真实验的数学模型。图1.3三层前馈神经网络结构图图1.3给出了针对五因素、三指标配方的实验数据建立的三层前馈神经网络。5维输入向量与配方组成因素相对应,3维输出向量与三个待优化指标:脂肪酸甲脂转化率TR%、脂肪醇产率YOH%和脂肪醇选择性SOH%相对应。实验设定确定隐层结点数为4。表1.1催化剂配方的神经网络模型样本数据表NoA/CuZn/CuB/CuC/CuMn/CuTR1%YOH1%SOH1%1234567891011121314151617180.05000.06500.08000.09500.11000.12500.14000.1550.17000.05000.06500.08000.0950.1100.1250.1400.1550.1700.1300.0700.1900.1100.0500.1700.0900.0300.1500.0700.1900.1300.0500.1700.1100.0300.1500.0900.0800.1200.0800.0600.0200.0000.1600.1200.1000.0600.0400.0000.1600.1400.1000.0800.0400.0200.1400.1600.0600.1600.0600.1400.0400.1400.0400.1200.0200.1200.0200.1000.0000.1000.0000.0800.0400.0200.0000.0400.0200.0000.0400.0200.0000.0500.0300.0100.0500.0300.0100.0500.0300.01094.5088.0560.2593.0594.6596.0561.0070.4083.3084.5069.5094.5570.9587.2064.2086.1577.1596.0596.3075.5040.2197.3188.5595.5059.7237.5082.8590.9061.8097.6062.5491.0058.3075.6571.9094.6097.8086.596.2599.3095.2099.5067.3552.2599.2095.9088.20103.4060.10103.6058.9086.5091.8098.002MATLAB实现根据BP神经网络理论,在MATLAB软件中编程实现基于BP算法的多层前馈网在催化剂配方中的建模。2.1归一化方法及MATLAB函数数据归一化方法是神经网络预测前对数据常做的一种处理方法。数据归一化处理把所有数据都转化为绝对值为1,0之间的数,其目的是取消各维数据间数量级差别,避免因为输入输出数据数量级差别较大而造成网络预测误差较大。数据归一化的方法主要有以下两种。1)最大最小法。函数形式如下:式中,minX为数据序列中的最小数;maxX为序列中的最大数。2)平均数方差法,函数形式如下:式中,meanX为数据序列的均值;varX为数据的方差。本案例采用第二种数据归一化方法,归一化函数采用MATLAB自带函数premnmx,该函数有多种形式,常用的方法如下。input_train,output_train是训练输入、输出原始数据,input_train1,output_train1是归一化后的数据。minp,maxp,mint,maxt为数据归一化后得到的结构体,里面包含了数据最大值、最小值和平均值等信息,可用于测试数据归一化和反归一化。测试数据归一化和反归一化程序如下。input_test是测试输入原始数据,input_test1是归一化后的数据。minp,maxp表示根据input_train的值对input_test进行归一化。outputp1是训练输出数据的归一化值,output是反归一化之后的网络预测输出,mint,maxt表示根据output_train对数据进行反归一化。2.2数据选择首先利用正交表安排实验,得到18组准确的实验数据分别作为神经网络的训练样本(15组)及测试样本(3组),分别存储于input_train,output_train二维数组中。5维输入向量与配方组成因素相对应,3维输出向量与三个待优化指标:脂肪酸甲脂转化率TR%、脂肪醇产率YOH%和脂肪醇选择性SOH%相对应。input_train数组为5行15列,output_train数组为3行15列,并对训练数据进行归一化处理。2.3BP神经网络结构初始化根据数据特点确定BP神经网络的结构为5—4—3,随机初始化BP神经网络权值和阈值。2.4BP神经网络训练用训练数据训练BP神经网络,在训练过程中根据网络预测误差调整网络的权值和阈值。设定训练次数为10000,学习率为0.05,误差限为0.001。2.5结果分析用训练好的BP神经网络测试数据。BP神经网络误差如表1.2所示。从BP神经网络分类结果可以看出,基于BP神经网络的算法具有较高的准确性,能够较准确得到催化剂配方配比。表1.2BP神经网络训练结果误差TR1%实测值TR1%网络预测值相对误差YOH1%实测值YOH1%网络预测值相对误差SOH1%实测值SOH1%网络预测值相对误差186.1595.76090.111575.6567.93810.101986.5077.97770.0985277.1578.15350.013071.9067.55500.060491.80102.79180.1197396.0596.01750.000394.6067.65120.284898.00103.50100.0561四、实验拓展:1隐含层节点数BP神经网络的隐含层节点数对BP神经网络预测精度有较大的影响:节点数太少,网络不能很好地学习,需要增加训练次数,训练的精度也受影响;节点数太多,训练时间增加,网络容易过拟合。最佳隐含层节点数选择可参考如下公式:式中,n为输入层节点数;l为隐含层节点数;m为输出层节点数;a为0-10之间的常数。在实际问题中,隐含层节点数的选择首先是参考公式来确定节点数的大概范围,然后用试凑法确定最佳的节点数。对于本案例,均方误差同隐含层节点数的关系如表1.3所示。可以看出当隐层节点数为7时,均方误差最小,训练结果越精确。表1.3不同隐含层节点数训练结果均方误差l2345678910MSE158.5977110.3255107.1480101.9247156.671982.9736123.7240130.9331157.30952变学习率学习算法BP神经网络学习率的取值在[0,1]之间,学习率越大,对权值的修改越大,网络学习速度越快。但过大的学习速率将使权值学习过程中产生震荡,过小的学习概率使网络收敛过慢,权值难以趋于稳定。变学习率方法是指学习概率在BP神经网络进化初期较大,网络收敛迅速,随着学习过程的进行,学习率不断减小,网络趋于稳定。变学习率计算公式为式中,max为最大学习率;min为最小学习率;maxt为最大迭代次数;t为当前迭代次数。