您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > BP神经网络实验报告
作业8编程题实验报告(一)实验内容:实现多层前馈神经网络的反向传播学习算法。使用3.2节上机生成的数据集对神经网络进行训练和测试,观察层数增加和隐层数增加是否会造成过拟合。(二)实验原理:1)前向传播:以单隐层神经网络为例(三层神经网络),则对于第k个输出节点,输出结果为:在实验中采用的激励函数为logisticsigmoidfunction。考虑每一层节点中的偏差项,所以,在上式中:)()(00,1lljbwx在实验中,就相应的需要注意矢量形式表达式中,矢量大小的调整。2)BP算法:a)根据问题,合理选择输入节点,输出节点数,确定隐层数以及各隐层节点数;b)给每层加权系数,随机赋值;c)由给定的各层加权系数,应用前向传播算法,计算得到每层节点输出值,并计算对于所有训练样本的均方误差;d)更新每层加权系数:其中,jijililiiiliahwahdy其它层,最后一层)('(),(')()1()()(e)重复c),d)迭代过程,直至迭代步数大于预设值,或者每次迭代误差变化值小于预设值时,迭代结束,得到神经网络的各层加权系数。(三)实验数据及程序:1)实验数据处理:a)训练样本输入节点数据:在实验中,所用数据中自变量x的取值,为0—1的25个随机值,为了后续实验结果的分析,将其从小到大排序,并加上偏差项,神经网络的输出节点最终训练结果,即为训练得到的回归结果;b)训练样本标签值:在实验中,采用的激励函数为logisticsigmoidfunction,其值域为[0,1],所以,在神经网络训练前,需要对训练样本标签值进行归一化处理;c)神经网络输出节点值:对训练样本标签值进行了归一化处理,相应的,对于输出节点,需要反归一化处理。2)实验程序:实现函数:[Theta]=BP(input_layer_size,hidden_layer_size,hidden_layer_num,num_labels,Niter,leta,X,Y)输入参数:input_layer_size:输入节点数;hidden_layer_size:隐层节点数(对于单隐层,输入值为一数值,对于多隐层,为一矢量);hidden_layer_num:隐层数;num_labels:输出节点数;Niter:为预设的迭代步数;leta:学习速率,即更新步长;X,Y:分别为训练样本输入特征值以及标签值。输出参数:Theta:各层加权系数,在程序中,以一个细胞数组的形式保存。(四)实验结果分析和讨论:a)隐层数对回归的性能影响:在实验中,对于单隐层的神经网络,实现前馈神经网络的反向传播学习算法后,分别采用不同的隐层节点数,并对一个不同于任何一个训练样本的测试样本,进行测试,得到图1:图1隐层节点数对神经网络性能的影响图中,‘*’表示测试样本的标签值。分析:由图中可以明显的看出:(1)当隐层节点数较小时,类似于降维,损失了信息,对于神经网络,回归出现欠拟合;(2)当隐层节点数较大时,训练出的模型更加复杂,回归出现过拟合;b)隐层数对回归的性能影响:在实验中,对于每层隐层节点数均取N=10,实现前馈神经网络的反向传播学习算法后,分别采用不同的隐层数,并对一个不同于任何一个训练样本的测试样本,进行测试,得到图2:图2隐层数对神经网络性能的影响分析:由图中可以看出:当隐层数为4时,训练出的模型更加复杂,回归出现过拟合。图3隐层数为4时,对于训练样本的回归结果图3中,画出了隐层数为4时,对于100个训练样本的训练结果平均,易看出出现了过拟合。
本文标题:BP神经网络实验报告
链接地址:https://www.777doc.com/doc-2900947 .html