关于BP神经网络概念与实践

BP神经网络

BP神经网络的概念

BP(Back Propagation)算法,是一种有效的多层神经网络学习方法,能学习和存贮大量的 输入-输出模式映射关系。

学习规则 是使用最速下降法,通过反向传播来不断 调整网络的权值和阈值,使网络的误差平方和最小。而无需事前揭示描述这种映射关系的数学方程。

主要特点 是信号前向传递,而误差后向传播,通过不断调节网络权重值,使得网络的最终输出与期望输出尽可能接近,以达到训练的目的。

BP神经网络阶段

BP神经网络的过程主要分为两个阶段:

第一阶段是信号的前向传播,从输入层经过隐含层,最后到达输出层

第二阶段是误差的反向传播,从输出层到隐含层,最后到输入层,依次调节隐含层到输出层的权重和偏置,输入层到隐含层的权重和偏置。
三层BP网络

BP神经网络的学习流程

第一步,网络初始化
给各连接权值分别赋一个区间(-1,1)内的随机数,设定误差函数e,给定计算精度值β和最大学习次数M。

第二步,随机选取第k个输入样本及对应期望输出

第三步,计算隐含层各神经元的输入与输出

第四步,利用网络期望输出和实际输出,计算误差函数对输出层的各个神经元的偏导数

第五步,利用输出层的各神经元的β0
(k)和隐含层各神经元的输出来修正连接权值wh0(k)

第六步,利用隐含层各神经元的βh(k)和输入层各神经元的输入修正连接权

第七步,计算全局误差

第八步,判断网络误差是否满足要求当
误差达到预设精度或学习次数大于设定的最大次数,则结束算法。否则,选取下一个学习样本及对应的期望输出,返回到第三步,进入下一轮学习。

BP神经网络的优劣

优点:

(1)能够自适应、自主学习。BP算法根据预设的参数更新规则,不断地调整神经网络中的参数,以达到最符合期望的输出。

(2)拥有较强的非线性映射能力。

(3)采用的是已经非常成熟的链式法测,其推导过程严谨且科学。

(4)在BP算法训练结束之后,BP算法可以利用从原来知识中学到的知识解决新的问题。

缺点:

(1)由于BP神经网络中的参数众多,每次都需要更新数量较多的阈值和权值,故会导致收敛速度过慢。

(2)很容易陷入局部最小值的问题。当出现局部极小时,从表面上看,误差符合要求,但这时所得到的解并不一定是问题的真正解。

(3)利用输出后的误差来估计输出层的直接前导层的误差,再用这个误差估计更前一层的误差,如此一层一层的反传下去,就获得了所有其他各层的误差估计。

(4)当数据不充分的时候,神经网络就无法进行工作。

BP神经网络现实运用

BP神经网络其实是利用现有的数据,去找出输入与输出之间得权值关系(近似),之后再利用找出的各项权值关系进行仿真模拟。

例如:输入一组数据,仿真出输出结果。
例如:预报天气,温度 湿度 气压等作为输入。
同理,运用到自动化测试中,使用测试数据反映结果走向,bug数,质量问题等情况。

BP神网络代码实现

感知器与感知器神经网络
% 第一章  感知器
% 1. 感知器神经网络的构建
% 1.1  生成网络
net=newp([0 2],1);%单输入,输入值为[0,2]之间的数
inputweights=net.inputweights{
   1,1};%第一层的权重为1
biases=net.biases{
   1};%阈值为1
% 1.2  网络仿真

net=newp([-2 2;-2 2],1);%两个输入,一个神经元,默认二值激活
net.IW{
   1,1}=[-1 1];%权重,net.IW{
   i,j}表示第i层网络第j个神经元的权重向量
net.IW{
   1,1}
net.b{
   1}=1;
net.b{
   1}
p1=[1;1],a1=sim(net,p1)
p2=[1;-1],a2=sim(net,p2)
p3={
   [1;1] [1 ;-1]},a3=sim(net,p3) %两组数据放一起
p4=[1 1;1 -1],a4=sim(net,p4)%也可以放在矩阵里面
net.IW{
   1,1}=[3,4];
net.b{
   1}=[1];
a1=sim(net,p1)
% 1.3  网络初始化
net=init(net);
wts=net.IW{
   1,1}
bias=net.b{
   1}
% 改变权值和阈值为随机数
net.inputweights{
   1,1}.initFcn='rands';
net.biases{
   1}.initFcn='rands';
net=init(net);
bias=net.b{
   1}
wts=net.IW{
   1,1}
a1=sim(net,p1)

% 2. 感知器神经网络的学习和训练
% 1 网络学习
net=newp([-2 2;-2 2],1);
net.b{
   1}=[0];
w=[1 -0.8]
net.IW{
   1,1}=w;
p=[1;2];
t=[1];
a=sim(net,p)
e=t-a
help learnp
dw=learnp(w,p,[],[],[],[],e,[],[],[],[],[])
w=w+dw
net.IW{
   1,1}=w;
a=sim(net,p)


net = newp([0 1; -2 2],1
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值