赞
踩
BPNN 的构成包含了三种结构:“分别是接收信息的输入层,计算信息的中间层和传出结果的输出层,其中中间层也叫隐含层,包含层数大于等于一。
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 网络对数据的处理从数学角度来看实际上是实现数据之间的映射关系,即将n 维的输入数据通过一定的函数关系映射到 k 维的输出向量,并通过算法对自身的连接权值进行迭代计算,直至网络输出 k 维向量逼近目标值。
核心
BP 网络能实现数据对预定目标的准确映射依赖于其核心的 BP(Back-Propagation)算法,它包含了数据和误差正反向传播的两个过程。
特点:
BPNN 具备很好的映射能力以及泛化能力等优点,在分类方面有很大的优势
网络的权值对任何一个输出都有影响,因此,对于每次输入,全局网络中的所有权值都要调整,从而导致学习速度很慢
%% 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)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。