【科研助手】第三期:BP神经网络的案例实现

您所在的位置:网站首页 bp神经网络应用举例 【科研助手】第三期:BP神经网络的案例实现

【科研助手】第三期:BP神经网络的案例实现

2022-06-05 11:15| 来源: 网络整理| 查看: 265

原标题:【科研助手】第三期: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