【探讨】bp神经网络是前馈还是后馈

news2024/11/23 7:15:35

目录

一、BP神经网络简介

1.1 什么是BP神经网络

1.2 BP神经网络的结构

二、BP神经网络的前馈与后馈

2.1 什么是BP神经网络的前馈

2.2 什么是BP神经网络的后馈

三、BP神经网络前馈与后馈的关系

3.1 BP神经网络前馈与后馈的区别

3.2 BP神经网络前馈与后馈的意义

四、BP神经网络前馈与后馈-实例


 本文部分图文代码借鉴《老饼讲解-BP神经网络

一、BP神经网络简介

1.1 什么是BP神经网络

BP神经网络也称为误差反向传播神经网络,是1986年由Rumelhart和McClelland为首的科学家提出的概念,是一种按照误差逆向传播算法训练的多层前馈神经网络,是应用最广泛的神经网络模型之一。

BP算法的基本思想是通过将输入样本输入网络中,然后将网络的输出与目标输出进行比较,计算误差,并将误差进行反向传播,以更新网络的权重。反向传播过程中,误差被分配给前一层的神经元,以及与神经元之间的连接权重,然后根据误差大小调整权重值。这个过程不断重复,直到网络的输出与目标输出接近。

BP神经网络具有任意复杂的模式分类能力和优良的多维函数映射能力,解决了简单感知器不能解决的异或和一些其他问题。BP算法的优点是可以对复杂的非线性问题进行建模,并且可以通过调整网络结构和参数来改进模型的性能。但它也存在一些问题,比如容易陷入局部最小值,并且计算量较大。

总的来说,BP算法是人工神经网络中最常用的训练算法之一,可以用来解决各种问题,包括分类、回归和模式识别等。

1.2 BP神经网络的结构

BP神经网络由输入层、隐藏层和输出层组成,其中隐藏层可以包含多个神经元。它的训练过程可以分为前向传播和误差反向传播两个阶段。在前向传播阶段,输入数据经过权重和偏置的变换后,经过激活函数处理后传递到下一层,最终产生输出。在误差反向传播阶段,根据实际输出与目标输出的误差计算损失函数,并通过反向传播算法计算各层的误差,再利用梯度下降算法调整各层之间的权重和偏置,以使损失函数最小化。

二、BP神经网络的前馈与后馈

2.1 什么是BP神经网络的前馈

BP神经网络的前馈是指信息从网络的输入层传递到输出层的过程。在前馈过程中,每个神经元将它的输入与相应的权重进行加权求和,并通过激活函数进行非线性变换处理,然后将结果传递给下一层的神经元,直到信息传递到输出层。

具体步骤如下:
1. 输入层接收外部的输入数据,并将数据传递到下一层隐藏层的神经元。
2. 隐藏层的神经元将输入与相应的权重进行加权求和,并通过激活函数进行非线性变换处理,然后将结果传递到下一层隐藏层的神经元。
3. 重复步骤2,直到信息传递到输出层的神经元。
4. 输出层的神经元将输入与相应的权重进行加权求和,并通过激活函数进行非线性变换处理,得到网络的输出结果。

在前馈过程中,每个神经元的输入值和输出值都会经过计算和传递,直到达到输出层产生最终的输出结果。这个过程是单向的,信息只能从输入层向输出层传递,没有反向传递。

总的来说,计算BP神经网络的输出时,BP神经网络是以前馈的方式计算得出网络的输出值,前馈往往指的就是BP神经网络计算输出的过程或方式。

2.2 什么是BP神经网络的后馈

BP,全称为"Backpropagation",翻译为中文就是”向后传播“,也就是通常所说的”后馈“,那么,后馈指的是什么呢?这就涉及到BP神经网络的训练算法。通常训练BP神经网络使用的是梯度下降等等之类的算法,由于BP神经网络的特殊结果,这类型的训练算法在训练权重阈值时是以反向传播误差的方式来更新神经网络的权重,以使网络能够逼近目标输出。

在BP神经网络中,首先使用随机初始化的权重参数进行前向传播,将输入样本通过网络的多层连接传递,经过激活函数的处理,得到输出结果。然后,将输出结果与标签进行比较,得到误差。接下来,将误差从输出层开始,按照权重的反向方向,通过链式法则将误差逐层传递回隐藏层和输入层。在传递过程中,根据误差值和梯度下降算法,更新连接权重和偏置,使得网络的输出逼近于目标输出。这个过程不断迭代,直到网络的输出与目标输出的误差达到预设的阈值或训练轮次达到预设的次数。

通过后馈过程,BP神经网络可以利用误差信号来调整网络参数,使网络能够自我学习和适应输入输出关系,从而提供更准确的预测和分类能力

三、BP神经网络前馈与后馈的关系

3.1 BP神经网络前馈与后馈的区别

BP神经网络的前馈与后馈的区别如下:
1.阶段不同:BP神经网络的前馈发生在网络输出的计算阶段,而BP神经网络的后馈过程发生在训练的阶段。

2.计算对象不同:BP神经网络的前馈计算的是BP神经网络神经元的值,而BP神经网络的后馈计算的是BP神经网络参数的梯度。

3.影响不同:BP神经网络的前馈影响的是网络的准确性,BP神经网络的后馈影响的是网络的训练。

3.2 BP神经网络前馈与后馈的意义

BP神经网络既有前馈,也有后馈,也即网络是前馈的,但训练是后馈的。

1.BP神经网络的前馈与后馈的意义

BP神经网络的前馈与后馈都给网络带来了极大的好处,它使得网络的计算和训练都不受层数的影响,只是类似套娃式一直向前或向后传播就可以。

2.BP神经网络训练中的前馈与后馈

比较需要注意的是,由于BP神经网络的梯度计算同时也依赖于神经元的值,所以往往在反馈之前 ,需要先前馈算出所有神经元的值,再进行后馈计算梯度,并更新权重阈值。

四、BP神经网络前馈与后馈-实例

在matlab中训练一个BP神经网络

x1 = [-3,-2.7,-2.4,-2.1,-1.8,-1.5,-1.2,-0.9,-0.6,-0.3,0,0.3,0.6,0.9,1.2,1.5,1.8];   % x1:x1 = -3:0.3:2;
x2 = [-2,-1.8,-1.6,-1.4,-1.2,-1,-0.8,-0.6,-0.4,-0.2,0,0.2,0.4,0.6,0.8,1,1.2];       % x2:x2 = -2:0.2:1.2;
y  = [0.6589,0.2206,-0.1635,-0.4712,-0.6858,-0.7975,-0.8040,...
          -0.7113,-0.5326,-0.2875 ,0,0.3035,0.5966,0.8553,1.0600,1.1975,1.2618];    % y: y = sin(x1)+0.2*x2.*x2;

inputData  = [x1;x2];                                                               % 将x1,x2作为输入数据
outputData = y;                                                                     % 将y作为输出数据
setdemorandstream(88888);                                                           % 指定随机种子,这样每次训练出来的网络都一样。

%使用用输入输出数据(inputData、outputData)建立网络,
%隐节点个数设为3.其中隐层、输出层的传递函数分别为tansig和purelin,使用trainlm方法训练。

net = newff(inputData,outputData,3,{'tansig','purelin'},'trainlm');

%设置一些常用参数
net.trainparam.goal = 0.0001;                                                        % 训练目标:均方误差低于0.0001
net.trainparam.show = 400;                                                           % 每训练400次展示一次结果
net.trainparam.epochs = 15000;                                                       % 最大训练次数:15000.
[net,tr] = train(net,inputData,outputData);                                          % 调用matlab神经网络工具箱自带的train函数训练网络
											                                         
simout = sim(net,inputData);                                                         % 调用matlab神经网络工具箱自带的sim函数得到网络的预测值
figure;                                                                              % 新建画图窗口窗口
t=1:length(simout);                                                                  
plot(t,y,t,simout,'r')                                                               % 画图,对比原来的y和网络预测的y

1. 运行过程如下:

 

在这个训练过程中,就是通过BP神经网络的后馈进行训练的,当然,如上所述,在后馈之前也会先进行前馈来预计算各个神经元值。

2. 运行结果如下:

上图是网络的预测结果,可以看到,已经很好地拟合了原始数据点。

而BP神经网络的这个预测过程,就只涉及到BP神经网络的前馈。


如果觉得本文有帮助,点个赞吧!收个藏吧!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1305293.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

论文阅读三——端到端的帧到凝视估计

论文阅读三——端到端的帧到凝视估计 主要内容研究问题文章的解题思路文章的主要结构 论文实验关于端到端凝视估计的数据集3种基线模型与EFE模型的对比在三个数据集中与SOTA进行比较 问题分析重要架构U-Net 基础知识 主要内容 文章从端到端的方法出发,提出了根据he…

Linux---虚拟机软件

1. 虚拟机软件的介绍 它是能够虚拟出来计算机的一个软件。 常用虚拟机软件: VmwareVirtualBox 说明: 只有安装了虚拟机软件才可以创建虚拟机,当然通过虚拟机软件还可以创建多个虚拟机。 2. 虚拟机的介绍 就是模拟一个真实的计算机,好比一个虚拟的…

Mybatis映射接口的动态代理实现原理

Mybatis映射接口的动态代理实现原理 在上一节中,我们介绍了MyBatis的核心配置文件加载流程,Mybatis核心配置文件加载流程详解 在文中,我们介绍了MyBatis在加载配置文件的过程中会针对每个接口类都生成一个相应的MapperProxyFactory动态代理工…

【异常解决】SpringBoot + Maven 在 idea 下启动报错 Unable to start embedded Tomcat(已解决)

Unable to start embedded Tomcat(已解决) 一、背景介绍二、原因分析2.1 网络上整理2.2 其他原因 三、解决方案 一、背景介绍 spring boot(v2.5.14) maven idea 启动项目 之前项目一直启动的好好的,都能正常运行。重启的时候突然就不能启…

单元测试技术

文章目录 一、单元测试快速入门二、单元测试断言三、Junit框架的常用注解 一、单元测试快速入门 所谓单元测试,就是针对最小的功能单元,编写测试代码对其进行正确性测试。 常规的例如如果在main中测试,比如说我们写了一个学生管理系统&…

MSPM0L1306例程学习-ADC部分(1)

MSPM0L1306例程学习-ADC部分(1) MSPM0L1306例程学习 使用的TI的官方例程,即SDK里边包含的例程代码。 MCU使用的是MSPM0L1306, 对于ADC部分,有10个例程: 例程理解 ADC的转换有多种工作模式,从最简单的单通道单次转换开始入手…

C++共享和保护——(1)作用域

归纳编程学习的感悟, 记录奋斗路上的点滴, 希望能帮到一样刻苦的你! 如有不足欢迎指正! 共同学习交流! 🌎欢迎各位→点赞 👍 收藏⭐ 留言​📝 人生就像骑单车,要想平衡就…

Java - Spring中Bean的循环依赖问题

什么是Bean的循环依赖 A对象中有B属性。B对象中有A属性。这就是循环依赖。我依赖你,你也依赖我。 比如:丈夫类Husband,妻子类Wife。Husband中有Wife的引用。Wife中有Husband的引用。 Spring解决循环依赖的机理 Spring为什么可以解决set s…

ubuntu如何远程ssh登录Windows环境并执行测试命令

ubuntu如何远程ssh登录Windows环境并执行测试命令 1 paramiko模块简介1.1 安装paramiko1.2 paramiko基本用法1.2.1 创建SSHClient实例1.2.2 设置主机密钥策略1.2.3 连接SSH服务器1.2.4 执行命令1.2.5 关闭SSH连接1.2.6 异常处理 2 windows的配置2.1 启动OpenSSH服务2.2 配置防火…

【Qt开发流程】之2D绘图1:概述及基本绘制与填充和渐变填充

概述 Qt的绘图系统可以使用相同的API在屏幕和打印设备上进行绘图,并且主要基于QPainter, QPaintDevice和QPaintEngine类。 QPainter用于执行绘图操作,QPaintDevice是一个二维空间的抽象,可以使用QPainter在其上绘制,QPaintEngine…

Android : XUI- SimpleImageBanner+BannerItem带标题的轮播图-简单应用

示例图: 1.导入XUI http://t.csdnimg.cn/qgGaN 2.MainActivity.java package com.example.viewpagerbanne;import android.os.Bundle; import android.view.View; import android.widget.Toast; import androidx.appcompat.app.AppCompatActivity; import com.xu…

vue项目中 CDN 是vue本身的依赖可以按需加载还是项目中所有的第三方库都可以按需加载?

这是我看到CDN简介时产生的问题 相信很多小伙伴会有 和我一样的疑问 在这里 我也统一回答一下 CDN(内容分发网络)是一种通过将数据分发到全球各个节点,以提供快速、可靠的内容传输的技术。在Vue项目中,CDN可以用于按需加载Vue本…

Linux--操作系统

1. 常见的操作系统 Windowsmac OSLinuxiOSAndroid 2. 操作系统的定义 操作系统直接运行在计算机上的系统软件, 它是控制硬件和支持软件运行的计算机程序。 3. 操作系统的作用 向下控制硬件向上支持软件的运行,具有承上启下的作用。 4.总结 操作系统…

Server check fail, please check server xxx.xxx.xxx.xxx,port 9848 is available

记录一次服务调用中的错误 背景:我使用了nacos2.x的版本,同时在同一台服务器的三个docker容器中部署了nacos1、2、3,并将它们连接到了同一个docker网络 错误:Server check fail, please check server xxx.xxx.xxx.xxx,port 9848 …

事件驱动架构 vs. RESTful架构:通信模式对比与选择

1. 通信风格 事件驱动架构(EDA) 是一种异步通信风格,组件之间通过产生和消费事件进行通信。 事件是表示系统中重大变化或事件的消息,并分发给感兴趣的组件。这种通信模型允许系统的不同部分之间进行解耦和动态交互。 组件充当事件…

MTK Android P Sensor架构(一)

需求场景: 本来如果只是给传感器写个驱动并提供能读取温湿度数据的节点,是一件比较轻松的事情,但是最近上层应用的同事要求我们按照安卓标准的流程来,这样他们就能通过注册一个服务直接读取传感器事件数据了。这样做的好处就是第…

从手工测试进阶中高级测试?如何突破职业瓶颈...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、手工测试如何进…

【教3妹学编程-算法题】需要添加的硬币的最小数量

3妹:2哥2哥,你有没有看到新闻, 有人中了2.2亿彩票大奖! 2哥 : 看到了,2.2亿啊, 一生一世也花不完。 3妹:为啥我就中不了呢,不开心呀不开心。 2哥 : 得了吧,你又不买彩票&…

Vue 双向绑定:让数据与视图互动的魔法!(上)

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

人体关键点检测3:Android实现人体关键点检测(人体姿势估计)含源码 可实时检测

目录 1. 前言 2.人体关键点检测方法 (1)Top-Down(自上而下)方法 (2)Bottom-Up(自下而上)方法: 3.人体关键点检测模型训练 4.人体关键点检测模型Android部署 (1) 将Pytorch模型转换ONNX模型 (2) 将ONNX模型转换…