【实验报告概述】
本次实验是基于BP神经网络的加法运算学习,旨在通过构建神经网络模型,让网络学会两个输入a、b(10以内的数)相加得到输出c。实验采用江南大学物联网工程学院的人工智能实验课程,由学生游思睿完成,主要涉及神经网络的结构、训练过程和权重更新等核心概念。
【实验内容】
实验中,Data表示训练样本数量,In表示每个样本的输入变量数量,Out表示每个样本的输出变量数量,Neuron表示神经元总数,TrainC表示训练次数。实验数据类型为double,包括输入样本d_in,输出样本d_out,权重w和v,以及修正量dw和dv。其中,o记录神经元的激活函数输出,OutputData存储神经网络的最终输出。
【归一化处理】
在实验开始时,对训练样本进行归一化处理,将数据范围转化为0到1之间,以优化训练效率。归一化公式为y=(x-MinValue+A)/(MaxValue-MinValue+A),其中A是为了防止除以零的风险。同时,权重初始化为(-1,1)区间内的随机数,修正量初始化为0。
【权重更新】
BP神经网络的核心在于反向传播算法,backUpdate(i)函数负责比较预测输出与实际样本结果,计算误差并更新权重。误差修正量的计算涉及到梯度下降法,具体到实验中的网络结构,需要计算dw和dv,存储在相应的修正量数组中。
【实验环境】
实验使用Visual Studio 2010作为开发环境,编写C语言代码实现神经网络模型。
【实验步骤】
1. 初始化:设置实验参数,如Data、In、Out、Neuron、TrainC等,并分配内存给各个变量。
2. 数据预处理:读取训练样本,进行归一化处理。
3. 初始化权重:随机生成权重w和v,修正量初始化为0。
4. 训练循环:执行TrainC次迭代,每次迭代包括前向传播和反向传播两个阶段。
- 前向传播:根据输入和当前权重计算神经元的输出。
- 反向传播:计算误差,根据误差修正量更新权重w和v。
5. 结果输出:训练结束后,用训练集测试神经网络,输出结果并与实际值比较。
【总结】
该实验通过BP神经网络实现了简单的加法运算任务,展示了神经网络的学习能力。通过反复训练调整权重,网络可以逐步逼近理想输出,体现了神经网络的非线性映射能力。归一化处理和权重初始化对于提高训练效率至关重要,而反向传播算法则是调整网络权重以减小误差的关键技术。