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

目录

一、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.mzph.cn/news/216720.shtml

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

相关文章

php实现个性化域名(短网址)和个性化登录模版的解决方案

在PHP中,个性化域名通常指的是根据用户或业务需求动态生成具有特定规律的子域名。实现个性化域名的方法主要依赖于服务器配置和路由规则。下面是一些基本的步骤和考虑因素,以帮助你了解如何个性化域名,并了解这样做的好处。 如何实现个性化域…

注意力机制和自注意力机制

有很多自己的理解,仅供参考 Attention注意力机制 对于一张图片,我们第一眼看上去,眼睛会首先注意到一些重点的区域,因为这些区域可能包含更多或更重要的信息,这就是注意力机制,我们会把我们的焦点聚焦在比…

开源治理典型案例分享(汇编转)

当前,越来越多的企业申请通过信通院的开源治理成熟度评估和认证,获得增强级或先进级评估。这些企业包括中国工商银行股份有限公司、中国农业银行、上海浦东发展银行股份有限公司、中信银行股份有限公司、中国太平洋保险(集团)股份…

练练手之“四环”“磁铁”(svg)

文本是闲暇之余练习svg的运用的产物&#xff0c;记录以备有需。 <svg xmlns"http://www.w3.org/2000/svg" viewBox"0 0 500 500" width"500px" height"500px"><path d"M150,100 A50,50 0 1,1 150,99.999" stroke&q…

MySQL笔记-第07章_单行函数

视频链接&#xff1a;【MySQL数据库入门到大牛&#xff0c;mysql安装到优化&#xff0c;百科全书级&#xff0c;全网天花板】 文章目录 第07章_单行函数1. 函数的理解1.1 什么是函数1.2 不同DBMS函数的差异1.3 MySQL的内置函数及分类 2. 数值函数2.1 基本函数2.2 角度与弧度互换…

孩子还是有一颗网安梦——Bandit通关教程:Level 8 → Level 9

&#x1f575;️‍♂️ 专栏《解密游戏-Bandit》 &#x1f310; 游戏官网&#xff1a; Bandit游戏 &#x1f3ae; 游戏简介&#xff1a; Bandit游戏专为网络安全初学者设计&#xff0c;通过一系列级别挑战玩家&#xff0c;从Level0开始&#xff0c;逐步学习基础命令行和安全概念…

docker- 部署Jenkins集成Gitlab

目录 一、部署环境 二、获取镜像 三、配置maven 四、创建挂载目录 五、启动容器 六、Jenkins 初始化 七、相关插件安装与环境配置 八、Jenkins结合Gitlab进行构建及使用Gitlab钩子 一、部署环境 工具版本Docker20.10.14Jenkins2.396Gitlab14.8.2-eeJDK8、11Maven3.6…

Echarts小问题汇总

文章目录 Echarts小问题汇总1.柱状图第一条柱子遮挡Y轴解决方法2.在大屏渲染后 拖到小屏变模糊3.相邻柱状图中间不要有空隙4.实现echarts图表自适应5.单个柱状图最大宽度 Echarts小问题汇总 记录工作中使用Echarts的遇见的一些小问题&#xff0c;后续会不断进行补充 1.柱状图…

区块链实验室(31) - 交叉编译Ethereum的客户端Geth

编译Geth到X86架构平台 下载Geth源码&#xff0c;直接编译Geth源码&#xff0c;见下图。用file命令观察编译后的文件&#xff0c;架构是x86-64。 编译Geth到Arm64架构平台 直接用命令行编译&#xff0c;同时指定期望的架构为Arm64。编译脚本如下所示。 CGO_ENABLED0 GOOSlin…

vxe-table 右键菜单+权限控制(v3)

1.menu-config 是用于配置右键菜单的属性。通过 menu-config 属性&#xff0c;定义右键菜单的内容、显示方式和样式。 通过 menu-config 属性配置了右键菜单&#xff0c;其中的 options 属性定义了右键菜单的选项。用户在表格中右键点击时&#xff0c;将会弹出包含这些选项的自…

嵌入式实习难找怎么办?

今日话题&#xff0c;嵌入式实习难找怎么办&#xff1f;个人建议如果找不到实习机会&#xff0c;可以回归学习嵌入式所需的知识&#xff0c;积累项目经验或者回顾之前参与过的项目&#xff0c;将它们整理复盘。如果还有时间&#xff0c;可以再尝试找实习&#xff0c;如果找不到…

anolisos8.8安装显卡+CUDA工具+容器运行时支持(containerd/docker)+k8s部署GPU插件

anolisos8.8安装显卡及cuda工具 一、目录 1、测试环境 2、安装显卡驱动 3、安装cuda工具 4、配置容器运行时 5、K8S集群安装nvidia插件 二、测试环境 操作系统&#xff1a;Anolis OS 8.8 内核版本&#xff1a;5.10.134-13.an8.x86_64 显卡安装版本&#xff1a;525.147.05 c…

java学生选课系统 数据库版

首先让我们创建一个数据库让我们向表中插入数据然后查询它

ubuntu 20.04.6 server 服务器 下载与安装(配置静态IP)

下载地址&#xff1a;https://releases.ubuntu.com/20.04.6/ubuntu-20.04.6-live-server-amd64.iso 第一步&#xff1a; 准备U盘&#xff0c;使用软碟通将下载好的镜像写入到U盘中 软碟通网址&#xff1a;https://www.cn.ultraiso.net/xiazai.html 点击&#xff1a;文件 ->…

odoo16 全局搜索菜单

实现效果: 主要思路: 参考原生的many2one字段的相关源码&#xff0c;添加 systray 组件

HNU计算机视觉作业三

前言 选修的是蔡mj老师的计算机视觉&#xff0c;上课还是不错的&#xff0c;但是OpenCV可能需要自己学才能完整把作业写出来。由于没有认真学&#xff0c;这门课最后混了80多分&#xff0c;所以下面作业解题过程均为自己写的&#xff0c;并不是标准答案&#xff0c;仅供参考 …

鸿蒙开发之状态管理@State

1、视图数据双向绑定 鸿蒙开发采用的声明式UI&#xff0c;利用状态驱动UI的更新。其中State被称作装饰器&#xff0c;是一种状态管理的方式。 状态&#xff1a;指的是被装饰器装饰的驱动视图更新的数据。 视图&#xff1a;是指用户看到的UI渲染出来的界面。 之所以成为双向…

Go性能分析工具

前言 作为后端研发&#xff0c;性能分析是我们在研发过程中必然会会遇到的环节&#xff0c;接口耗时、堆栈溢出、内存泄露等等。所谓工欲善其事必先利其器&#xff0c;之前在java中我们是使用arthas这一大神器&#xff0c;不得不说确实好用&#xff0c;想了解arthas的可以看下…

Stm32-使用TB6612驱动电机及编码器测速

这里写目录标题 起因一、电机及编码器的参数二、硬件三、接线四、驱动电机1、TB6612电机驱动2、定时器的PWM模式驱动电机 五、编码器测速1、定时器的编码器接口模式2、定时器编码器模式测速的原理3、编码器模式的配置4、编码器模式相关代码5、测速方法 六、相关问题以及解答1、…

Python自动化测试工具selenium使用指南

概述 selenium是网页应用中最流行的自动化测试工具&#xff0c;可以用来做自动化测试或者浏览器爬虫等。官网地址为&#xff1a;相对于另外一款web自动化测试工具QTP来说有如下优点&#xff1a; 免费开源轻量级&#xff0c;不同语言只需要一个体积很小的依赖包支持多种系统&a…