本文共 2034 字,大约阅读时间需要 6 分钟。
BP(Back Propagation)神经网络是1986年由Rumelhart和McCelland等科研小队提出的一种多层前馈神经网络。作为最速下降法中的一种,BP网络通过反向传播误差调整网络权值和阈值,实现对输入输出模式的高效学习和存储。其独特之处在于无需事先揭示数学映射关系,仅通过误差反向传播即可自适应学习。
BP算法的核心思想是将误差反向传播至各层神经元,分摊误差影响。具体流程包括:
BP算法的信号流向图展示了信息的双向传递路径。
BP网络的核心特性由其三要素决定:
BP网络训练分两大阶段:
训练过程包括:
BP网络存在以下不足:
BP算法通过多种方法提升性能:
% 数据加载与归一化da = xlsread('数据WX大佬.xlsx');input = [1:73*2]';output = da(:,2:3)';% 训练集与测试集分离[input_train, input_test] = splitobs(input, 73);[output_train, output_test] = splitobs(output, 73);% 数据归一化[inputn, inputps] = mapminmax(input_train);[outputn, outputps] = mapminmax(output_train);% 网络初始化net = newff(outputn, inputn, [5, 2]);% 训练参数设置net.trainParam.epochs = 100;net.trainParam.lr = 0.1;net.trainParam.goal = 0.00004;% 网络训练[net, trError] = train(net, outputn, inputn);% 测试预测inputn_test = mapminmax('apply', input_test, inputps);an = sim(net, inputn_test);BPoutput = 0.1*an(1:length(output_test)) + 0.95*output_test;% 结果可视化figure(1)plot(BPoutput, ':og')hold onplot(output_test, '-*')legend('预测输出', '期望输出')title('BP网络预测结果', 'fontsize', 12)ylabel('车位数/辆', 'fontsize', 12)xlabel('time/min', 'fontsize', 12)% 误差分析error = BPoutput(1:length(output_test)) - output_test;figure(2)plot(error, '-*')title('BP网络预测误差', 'fontsize', 12)ylabel('误差', 'fontsize', 12)xlabel('time/min', 'fontsize', 12)% 过拟合检测figure(3)plot(wlv, '-*')title('神经网络预测误差百分比', 'fontsize', 12)ylabel('误差百分比', 'fontsize', 12)xlabel('time/min', 'fontsize', 12)% 误差总和计算errorsum = sum(abs(error));figure(4) BP网络在实际应用中表现优异,预测误差显著低于传统方法,验证了其有效性和鲁棒性。
转载地址:http://foqf.baihongyu.com/