BP神经网络笔记

BP神经网络是一种通过反向传播调整权重以最小化误差的机器学习模型。信号从前向传播,误差从后向传播。算法包括正向传播计算输出和反向传播更新权重。sigmoid函数常作为激活函数。通过迭代优化,权值不断调整,直到误差达到期望值或达到最大迭代次数。
摘要由CSDN通过智能技术生成
  • BP神经网络

    • 概念
      • 首先从名称中可以看出,BP是 Back Propagation 的简写 ,意思是反向传播。

      • BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。它的学习规则是使用最速下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和最小。

      • 其主要的特点是:信号是正向传播的,而误差是反向传播的。

      • 例子

        • 某厂商生产一种产品(信号),投放到市场之后得到了(反向)消费者的反馈(误差),根据消费者的反馈,厂商对产品进一步升级,优化,一直循环往复,直到实现最终目的——生产出让消费者更满意的产品。产品投放就是“信号前向传播”,消费者的反馈就是“误差反向传播”。这就是BP神经网络的核心。
      • 正向传播
        输入层的神经元负责接受外界发来的各种信息,并将信息传递给中间层神经元,中间隐含层神经元负责将接收到的信息进行处理变换,根据需求处理信息,实际应用中可将中间隐含层设置为一层或者多层隐含层结构,并通过最后一层的隐含层将信息传递到输出层,这个过程就是BP神经网络的正向传播过程。

      • 反向传播(不能一次计算就让结果满足期望,需要迭代)

        • 当实际输出与理想输出之间的误差超过期望时,就需要进入误差的反向传播过程。它首先从输出层开始,误差按照梯度下降的方法对各层权值进行修正,并依次向隐含层、输入层传播。通过不断的信息正向传播和误差反向传播,各层权值会不断进行调整,这就是神经网络的学习训练。当输出的误差减小到期望程度或者预先设定的学习迭代次数时,训练结束,BP神经网络完成学习。
      • 算法流程在这里插入图片描述

      • 隐藏层

        • 设置
          • 如果隐含层中的神经元节点设置过少,结果可能造成神经网络的训练过程收敛变慢或者不收敛。如果隐层中节点过多,模型的预测精度会提高,但同时网络拓扑结构过大,收敛速度慢,普遍性会减弱。
          • 如果BP神经网络中输入层节点数为m个,输出层节点是为n个,则由下式式可推出隐藏层节点数为s 个。其中b一般为1-9的整数。(matlab工具箱可以算)
  • 推导(核心思想:反向传播思想)

    • 输入层有几个数据就有几个神经元
    • 列出加权和,通过加权求和后经过激活函数
    • 求偏导,用梯度下降计算更新权重
    • 设置最大迭代次数(常用),比如使用数据集迭代100次后停止训练 / 计算训练集在网络上的预测准确率,达到一定门限值后停止训练
  • 计算推导例子
    在这里插入图片描述

  • 第一层是输入层,包含两个神经元i1,i2,和截距项b1;第二层是隐含层,包含两个
    神经元h1,h2和截距项(偏置系数)b2,用于控制神经元被激活的容易程度,第三层
    是输出o1,o2,每条线上标的wi是层与层之间连接的权重,激活函数默认为sigmoid函数

  • sigmoid函数: 1 1 + e − x \frac {1}{1+e^{-x}} 1+ex1

  • 根据函数图像可知,sigmoid函数可以在保持数据大小关系不变的情况下使特别大或特别小的数变得普通,这一特性很适用于分类问题和bp网络数据的处理。

  • 在这里插入图片描述

  1. 前向传播
    1. 输入层–>隐含层
      1. 计算神经元h1的输入加权和: n e t h 1 = w 1 ∗ i 1 + w 2 ∗ i 2 + b 1 ∗ 1 neth1= w1* i1+ w2* i2+ b1* 1 neth1=w1i1+w2i2+b11
      2. 代入得 n e t h 1 = 0.15 ∗ 0.05 + 0.2 ∗ 0.1 + 0.35 ∗ 1 = 0.3775 net_{h1}=0.15* 0.05+0.2*0.1+0.35* 1 = 0.3775 neth1=0.150.050.20.10.351=0.3775
      3. 神经元h1的输出o1:(此处用到激活函数为sigmoid函数):
      4. o u t h 1 = 1 1 + e − n e t h 1 = 1 1 + e − 0.3775 = 0.593269992 out_{h1} = \frac {1}{1+e^{-net_{h1}}} =\frac {1}{1+e^{-0.3775}}=0.593269992 outh1=1+eneth11=1+e0.37751=0.593269992
      5. 同理,可计算出神经元h2的输出o2
      6. o u t h 2 = 0.596884378 out_{h2} = 0.596884378 outh2=0.596884378
    2. 隐含层–>输出层
      1. 计算输出层神经元o1和o2的值

      2. n e t o 1

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值