BP神经网络实验报告

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

作业8

编程题实验报告

(一)实验内容:

实现多层前馈神经网络的反向传播学习算法。使用3.2节上机生成的数据集对神经网络进行训练和测试,观察层数增加和隐层数增加是否会造成过拟合。

(二)实验原理:

1)前向传播:

以单隐层神经网络为例(三层神经网络),则对于第k 个输出节点,输出结果为:

在实验中采用的激励函数为logistic sigmoid function 。

考虑每一层节点中的偏差项,所以,在上式中:

)()

(00,1l l j b w x ==

在实验中,就相应的需要注意矢量形式表达式中,矢量大小的调整。

2)BP 算法:

a) 根据问题,合理选择输入节点,输出节点数,确定隐层数以及各隐层节点数;

b) 给每层加权系数,随机赋值;

c) 由给定的各层加权系数,应用前向传播算法,计算得到每层节点输出值,并计算对于所有训练样本的均方误差;

d) 更新每层加权系数:

其中,⎪⎩⎪⎨⎧⋅⋅⋅-=∑+j i ji l i l i i i l i a h w a h d y 其它层,最后一层)('(),(')()1()()(δδ

e) 重复c),d )迭代过程,直至迭代步数大于预设值,或者每次迭代误差变化值小于预设值时,迭代结束,得到神经网络的各层加权系数。

(三)实验数据及程序:

1)实验数据处理:

a) 训练样本输入节点数据:在实验中,所用数据中自变量x 的取值,为0—1的25个随机值,为了后续实验结果的分析,将其从小到大排序,并加上偏差项,神经网络的输出节点最终训练结果,即为训练得到的回归结果;

b) 训练样本标签值:在实验中,采用的激励函数为logistic sigmoid function ,其值域为[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时,训练出的模型更加复杂,回归出现过拟合。

相关文档
最新文档