.电气工程学院神经网络实验报告院系:电气工程学院专业:电气工程及其自动化班级:电 sdfasdf 姓名: adsdf 学号: 20df . 实验二基于 BP 网络的多层感知器一实验目的: 1. 理解基于 BP 网络的多层感知器的工作原理 2. 通过调节算法参数的了解参数的变化对 BP 多层感知器训练的影响 3 .了解 BP 多层感知器的局限性二实验内容: 1 .根据实验内容推导出输出的计算公式以及误差的计算公式 2 .使用 Matlab 编程实现 BP 多层感知器 3 .调节学习率η及隐结点的个数,观察对于不同的学习率、不同的隐结点个数时算法的收敛速度 4 .改用批处理的方法实验权值的收敛,并加入动量项来观察批处理以及改进的的算法对结果和收敛速度的影响。 1. 基本 BP 算法的多层感知器模型下面所示是一个单输入单输出的 BP 多层感知器的模型, 它含有一个隐层。. 输出 O 输出层 W =(w 1 ,w 2, ……….w j) …………. Y=(y 1 ,y 2, …….y j) 隐层 y0V =(v 1 ,v 2, …….v j) 输入层 X0X 下面对误差和权值的调整过程进行推导对于单样本的输入 X i 则隐层的输出: y i =f 1 (net j) ; net j= (x i *v i) 输出层的输出: O=f 2 (net) ; net= (w i *y i) 变换函数: f 1= xe ??1 1 . f 2 =x; 当网络输出与期望输出不等时,存在输出误差 E E=2 1 (d-o) 2; 计算各层的误差: 把误差分配到各层以调整各层的权值, 所以, 各层权值的调整量等于误差 E 对各权值的负偏导与学习率的乘积,计算得到对权值 W 和权值 V 的调整量如下: 将上面的式子展开到隐层得: E=2 1 (d-o) 2=2 1 [ d-f 2 (net)]= 2 1[ d-f 2( i jii iyw???1) ] 将上式展开到输入层得: E=2 1 (d-o) 2=2 1 [ d-f 2 (net)]= 2 1[ d-f 2( i jii iw???1f 1( i jii ixv???1)) ] 调整权值的原则是使误差不断地减小, 因此应使权值的调整量与误差的梯度下降成正比,即Δw j =- jW E??Δv j =- jV E??计算得到对各权值的调整为: Δw j=η*(d(1,p)-o(1,p))*y(1, i) Δ v j= *(d(1,p)-o(1,p))*w(1, i )*y(1, i )*(1-y(1, i ))*x(1,p) 其中 P 为第 P 个样本: 四实验步骤 Step 1 初始化. 对权值矩阵 W、 V 赋随机数, 将样本模式计数器 p 和训练次数计数器 q 置于 1 ,误差 E置 0 ,学习率η设为 0~1 内的小数,网络训练后的精度 Emin 设为一个正的小数; Step 2 输入训练样本对, 计算各层输出用当前样本 Xp、 dp 对向量数组 X、 d 赋值,用下式计算 Y和 O 中各分量 y i =f 1 (net j) ; net j =(x i *v i) O=f 2 (net j) ; net=(w i *y i) Step 3 计算网络输出误差设共有 P 对训练样本,网络对于不同的样本具有不同的误差 2 Step 4 计算各层误差信号:各层的误差信号为误差 E 对各层权值的偏导 Step 5 调整各层权值Δ w=η*(d(1,p)-o(1,p))*y(1, i) Δ v= *(d(1,p)-o(1,p))*w(1, i )*y(1, i )*(1-y(1, i ))*x(1,p) Step 6 检查是否对所有样本完成一次轮训若 p<P ,计算器 p=p +1 , q=q +1 ,返回 Step 2, 否则转到 Step 7 Step 7 检查网络总误差是否达到精度要求当用 E RME 作为网络的总误差时, 若满足 E RME <E min, 训练结束, 否则 E 置 0, p置 1 ,返回 Step 2。单样本训练: 每输入一个样本, 都要回传误差并调整权值, 会导致收. 敛速度过慢批处理( Batch )训练:根据总误差,计算各层的误差信号并调整权值,在样本数较多时,批训练比单样本训练时的收敛速度快五实验结果对于单本输入的网络程序如下: function limoyan;% 建立以 limoyan 为文件名的 m 文件 clc; clear; x=[-4::4];% 产生样本 j=input('j=');% 输入隐结点的个数 n=input('n=');% 输入学习率 w=rand(1,j);% 对权值 w 赋较小的初值 w0=;% 对
神经网络实验报告 吐血推荐 来自淘豆网m.daumloan.com转载请标明出处.