当前位置:   article > 正文

BP神经网络_bp神经网络结构

bp神经网络结构

BP 神经网络结构

BPNN 的构成包含了三种结构:“分别是接收信息的输入层,计算信息的中间层和传出结果的输出层,其中中间层也叫隐含层,包含层数大于等于一。

BP 网络的典型结构如下图所示:
在这里插入图片描述

  • 图中 x 1 , x 2 , . . . , x n x_1, x_2,...,x_n x1,x2,...,xn是网络的输入,对应着网络的输出 y 1 , y 2 , . . . , y k y_1,y_2,...,y_k y1,y2,...,yk
  • w i j w_{ij} wij w j k w_{jk} wjk代表相邻层之间的连接系数
  • BP 网络的相邻层之间彼此互连
  • 输入层作为数据的流入口,专门负责接收外界传来的样本数据并原封不动的把数据传传递给隐含层
  • 隐含层接收到数据后,先按一定的规则对数据进行计算,然后送给输出层输
  • 出层对得到的数据做计算后把结果传递到外界

神经元模型

  • 仿射函数

    假设第i层的输入值 x i x_i xi,第i层中第j个神经元的输入等于前面一层所有结点计算结果的加权和, w i j w_{ij} wij表示与i层j个神经元连接的权值,bias表示第i层的偏置(也叫阈值),得到仿射函数如下: a j = ∑ i = 1 i = n w i j x i + b i a s a_j=\sum_{i=1}^{i=n}w_{ij}x_i+bias aj=i=1i=nwijxi+bias

  • 激活函数
    假设j个神经元的激活函数为logistic: f ( x ) = 1 1 + exp ⁡ ( − x ) f(x)=\frac{1}{1+\exp(-x)} f(x)=1+exp(x)1,激活函数输出如下:
    f j = 1 1 + exp ⁡ ( − a j ) = 1 1 + exp ⁡ ( − ∑ i = 1 i = n w i j x i + b i a s ) f_j=\frac{1}{1+\exp(-a_j)}=\frac{1}{1+\exp(-\sum_{i=1}^{i=n}w_{ij}x_i+bias)} fj=1+exp(aj)1=1+exp(i=1i=nwijxi+bias)1

  • 人工神经元:将输入值加权求和再加偏置之后施加激活函数就构成了一个神经元
    在这里插入图片描述

BP算法

  • 数学角度看BP

    BP 网络对数据的处理从数学角度来看实际上是实现数据之间的映射关系,即将n 维的输入数据通过一定的函数关系映射到 k 维的输出向量,并通过算法对自身的连接权值进行迭代计算,直至网络输出 k 维向量逼近目标值。

  • 核心

    BP 网络能实现数据对预定目标的准确映射依赖于其核心的 BP(Back-Propagation)算法,它包含了数据和误差正反向传播的两个过程。

  • 特点:

    • BPNN 具备很好的映射能力以及泛化能力等优点,在分类方面有很大的优势

    • 网络的权值对任何一个输出都有影响,因此,对于每次输入,全局网络中的所有权值都要调整,从而导致学习速度很慢

BP神经网络MATLAB代码

%% I. 清空环境变量      BP神经网络实例
clear all
clc

%% II. 训练集/测试集产生
%%
% 1. 导入数据
load spectra;

%%
% 2. 随机产生训练集和测试集
temp = randperm(size(NIR,1));
% 训练集——50个样本
P_train = NIR(temp(1:50),:)';
T_train = octane(temp(1:50),:)';
% 测试集——10个样本
P_test = NIR(temp(51:end),:)';
T_test = octane(temp(51:end),:)';
N = size(P_test,2);     % 测试集样本个数

%% III. 数据归一化
[p_train, ps_input] = mapminmax(P_train,0,1);  % 训练集输入归一化,ps_input保存结构参数
p_test = mapminmax('apply',P_test,ps_input);   % 训练集输出归一化

[t_train, ps_output] = mapminmax(T_train,0,1); % 从测试集输入归一化

%% IV. BP神经网络创建、训练及仿真测试
%%
% 1. 创建网络
net = newff(p_train,t_train,9);%  9 隐含层神经元的个数

%%
% 2. 设置训练参数,
net.trainParam.epochs = 1000;   % 模型训练步长  
net.trainParam.goal = 1e-3;     % 训练目标
net.trainParam.lr = 0.01;       % 学习率

%%
% 3. 训练网络
net = train(net,p_train,t_train);

%%
% 4. 仿真测试
t_sim = sim(net,p_test);

%%
% 5. 数据反归一化
T_sim = mapminmax('reverse',t_sim,ps_output);

%% V. 性能评价
%%
% 1. 相对误差error
error = abs(T_sim - T_test)./T_test;

%%
% 2. 决定系数R^2
R2 = (N * sum(T_sim .* T_test) - sum(T_sim) * sum(T_test))^2 / ((N * sum((T_sim).^2) - (sum(T_sim))^2) * (N * sum((T_test).^2) - (sum(T_test))^2)); 

%%
% 3. 结果对比
result = [T_test' T_sim' error']

%% VI. 绘图
figure
plot(1:N,T_test,'b:*',1:N,T_sim,'r-o')
legend('真实值','预测值')
xlabel('预测样本')
ylabel('辛烷值')
string = {'测试集辛烷值含量预测结果对比';['R^2=' num2str(R2)]};
title(string)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/94604
推荐阅读
相关标签
  

闽ICP备14008679号