【科研助手】第三期:BP神经网络的案例实现 |
您所在的位置:网站首页 › bp神经网络应用举例 › 【科研助手】第三期:BP神经网络的案例实现 |
原标题:【科研助手】第三期:BP神经网络的案例实现 BP神经网络 在上两期中,我们分别介绍了和,在本期推文中,我们主要介绍BP神经网络的具体应用。 BP(Back Propagation)神经网络是1986年由Rumelhart和McCelland为首的科研小组提出,参见他们发表在Nature上的论文 Learning representations by back-propagating errors 。 BP神经网络是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一。BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。它的学习规则是使用最速下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和最小。 具体的案例分析 假设已有了80组已知样本数据,每一组样本数据有7个自变量、1个标签结果,如下表1所示。 表1 具体的训练样本 Step1: 首先对样本数据进行归一化处理 归一化的目的是将单位不一样的输入数据进行统一。由于有些数据的范围可能特别大,比如自变量2范围是82~149,而有些数据的范围会偏小,如自变量5的范围为9~16。这种情况可能会导致神经网络训练中,收敛慢、训练时间长。并且数据范围大的自变量对整体的数据影响对偏大,而导致该部分的权重将偏大,从而对小范围的数据考虑不够全面。同时,神经网络输出层的函数的值域是有限制的,在运算过程中,需要将网络训练的数据映射到函数的值域(0~1)内。 为了修正mapminmax(x,YMIN,YMAX)的BUG Step2: 将归一化的数据进行训练 设置隐含层的神经元数量,(这里设置为9个神经元) net = newff(p_train,t_train,9); 设定参构建BP网络的各个参数: net.trainParam.epochs = 1000; net.trainParam.goal = 1e-3; net.trainParam.lr = 0.01; 开始训练 net = train(net,p_train,t_train); 得出结果: 图1 BP神经网络训练图 Step3: 代入需要预测的自变量数组 在这里我们将利用训练好的模型进行预测,代入了23组测试样本。 表2 具体的测试样本 将数据输入模型中 t_sim = sim(net,p_test); 由于神经元的计算结果是归一后的数值,即(0~1)。因此,我们需要对计算结果进行反归一化处理。 T_sim = mapminmax('reverse',t_sim,ps_output); 其中T-sim为预测结果。 表3 测试样本的标签结果与实际结果对比 为了检验该结果的准确性,我们通过用于预测的数据的实际结果与其进行误差计算。 R2 = corrcoef(T_sim,T_test); R2 = R2(1,2)^ 2; 结果如图2所示: 图2 测试样本的标签结果与实际结果对比图 如图2所示,测试样本的结果与实际结果基本相符,但是仍然存在偏差,有待进一步改进。 1 END 1 供稿 / 董亦鹏 编辑 / 尹 伟 审稿 / 李 斌 更 多 精 彩 公众号ID返回搜狐,查看更多 责任编辑: |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |