【机器学习300问】71、神经网络中前向传播和反向传播是什么?

        我之前写了一篇有关计算图如何帮助人们理解反向传播的文章,那为什么我还要写这篇文章呢?是因为我又学习了一个新的方法来可视化前向传播和反向传播,我想把两种方法总结在一起,方便我自己后续的复习。对了顺便附上往期文章的链接方便回顾:

【机器学习300问】59、计算图是如何帮助人们理解反向传播的?icon-default.png?t=N7T8http://t.csdnimg.cn/QMYZt

一、用计算图来理解

        再用小孩儿做数学题的例子来为大家介绍什么是前向传播(又叫正向传播),什么是反向传播。假设你在教一个小孩儿,计算 (a+b)\times c 。

(1)前向传播

        就像是小孩按照步骤一步步计算题目。比如说他要计算 (a+b) × c,他先算出 a+b 的结果,然后再把这个结果乘以 c 得到最后的答案。

        前向传播是神经网络中从输入层到输出层的计算过程。在神经网络中,输入层接收原始数据,然后通过隐藏层的处理,最终由输出层产生预测结果。每个神经元都会根据前一层神经元的输出和自身的权重进行计算,然后将结果传递给下一层。

(2)损失函数

        相当于你用来判断小孩答案对错的标准,本质是个衡量错误程度的“分数”。如果他的答案离正确答案差很多,那么这个分数就会很高,表示他错的很离谱。反之,若他的损失分数很小,说明他的答案很接近正确答案。

        损失函数是用来衡量神经网络预测结果与实际结果之间差距的指标。损失函数越小,说明神经网络的预测结果越接近实际结果。在训练过程中,我们的目标就是最小化损失函数。

(3)反向传播

        反向传播类似你指导小孩如何改正错误的过程。假设他最后的答案错了,你会告诉他:“你计算的最后一步有问题,你需要知道是因为 c 值没乘对还是前面 a+b 的结果就不对。”于是你从最后一个步骤开始,告诉小孩每一步对他最后答案的影响有多大(也就是计算梯度),这样他才能有针对性地调整自己的计算步骤,以便下次做得更好。

        反向传播是神经网络中根据损失函数的梯度信息调整权重的过程。在前向传播得到预测结果并计算损失函数后,我们需要知道每个权重对损失函数的影响程度,也就是梯度。通过反向传播算法,我们可以从输出层开始,逐层计算每个神经元的梯度,并根据梯度信息更新权重。

二、用神经网络块来理解

        让我们首先来画一个神经网络:

        我先用语言来描述一下这个神经网络,上图是一个四层神经网络,有三个隐藏层。我们用L来表示隐藏层总个数,显然L=4。输入层的索引为0,故三个隐藏层的神经元个数n^{[l]}分别表示为n^{[1]}=n^{[2]}=n^{[3]}=4。而输入层的特征数表示为n^{[0]}=n_x=4。而每层都用a^{[l]}来表示激活函数输出的结果。输入激活函数中权重和偏置表示为:

\left\{\begin{matrix} z^{[l]}=W^{[l]}a^{[l-1]}+b^{[l]} \\ a^{[l]}=g^{[l]}(z^{[l]}) \end{matrix}\right.

(1)神经网络块

 

        在第l层你有参数W^{[l]}b^{[l]},正向传播里有输入的激活函数,输入是前一层a^{[l-1]},输出是a^{[l]},我们之前讲过z^{[l]}=W^{[l]}a^{[l-1]}+b^{[l]},a^{[l]}=g^{[l]}(z^{[l]}),,那么上图就是可视化展示出如何从输入a^{[l-1]}走到输出a^{[l]}的。之后你就可以把z^{[l]}的值缓存起来,因为缓存的z^{[l]}对以后的正向反向传播的步骤非常有用。

        然后是反向步骤或者说反向传播步骤,同样也是第l层的计算,你需要实现一个函数输入为da^{[l]},输出da^{[l-1]}的函数。一个小细节需要注意,输入在这里其实是da^{[l]}以及所缓存的z^{[l]}值,之前计算好的z^{[l]}值,除了输出的da^{[l-1]}值以外,还需要输出你需要的梯度dW^{[l]}db^{[l]},这是为了实现梯度下降。

(2)前向传播

        在正向传播过程中,“传播”的是信号数据(就是你通过节点式子算出来的值)。 

(3)反向传播

        通过完整的神经网络计算块,可以清晰直观的感受前向传播和反向传播参数和参数的梯度是如何在各层中传递的。 反向传播,“传播”的是误差信号在神经网络中的梯度(梯度就是指导参数该怎么变的变化率)。

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

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

相关文章

Java工程师常见面试题:Java基础(一)

1、JDK 和 JRE 有什么区别? JDK是Java开发工具包,它包含了JRE和开发工具(如javac编译器和java程序运行工具等),主要用于Java程序的开发。而JRE是Java运行环境,它只包含了运行Java程序所必须的环境&#xf…

MySQL与Redis缓存一致性的实现与挑战

缓存是提高应用性能的重要手段之一,而 MySQL 和 Redis 是两种常用的数据存储和缓存技术。在许多应用中,常常将 Redis 用作缓存层,以加速对数据的访问。然而,在使用 MySQL 和 Redis 组合时,保持缓存与数据库之间的一致性…

淘宝京东1688API接口系列:商品属性丨价格丨sku丨详情图等,请求文档说明示例

电商平台的API接口系列为商家、开发者及数据分析师等提供了丰富的商品数据,帮助他们更深入地了解商品详情、市场动态以及消费者行为。以下是淘宝、京东等电商平台API接口系列中关于商品属性、价格、SKU和详情图等相关信息的介绍: 1.请求方式&#xff1a…

数字化浪潮下的企业转型:机遇与挑战并存

一、数字化转型的时代背景 科技进步推动数字化转型随着云计算、大数据、人工智能等技术的迅猛发展,数字化转型成为必然趋势。这些技术不仅改变了我们的生活方式,也深刻影响着企业的运营模式和商业模式。经济全球化加速数字化转型在经济全球化的背景下&a…

no_good_file(训练题)

[题目信息]: 题目名称题目难度no_good_file(训练题)2 [题目考点]: 远程命令执行漏洞,用户通过浏览器提交执行命令,由于服务器端没有针对执行函数做过滤,导致在没有指定绝对路径的情况下就执行…

读《SQL基础教程 第二版 上》的一些总结

1. 数据库语言 DDL: Data Definition Language,数据定义语言(库、表的操作) DML: Data Manipulation Language, 数据操控语言(对表中数据的增删改) DQL: Data Query Language,数据库查询语言…

Proxyman Premium for Mac v5.1.1激活版:卓越的网络调试与分析工具

Proxyman Premium for Mac是一款功能强大的网络调试与分析工具,专为开发人员和测试人员精心打造。它集多种功能于一身,为用户提供了全面、高效的网络开发体验。 Proxyman Premium for Mac v5.1.1激活版下载 作为一款跨平台代理工具,Proxyman …

cesium primitive 移动 缩放 旋转 矩阵

旋转参考:cesium 指定点旋转rectangle Primitive方式 矩阵篇-CSDN博客 平移参考:cesium 调整3dtiles的位置 世界坐标下 相对坐标下 平移矩阵-CSDN博客 一、primitive方式添加polygon let polygonInstance new Cesium.GeometryInstance({geometry: Ce…

逻辑回归模型-逻辑回归算法原理-逻辑回归代码与实现-笔记整合

通过一段时间的学习,总算把逻辑回归模型弄清楚了 《老饼讲解-机器学习》www.bbbdata.com中是讲得最清晰的,结合其它资料,整理一个完整的笔记如下,希望能帮助像我这样入门的新人,快速理解逻辑回归算法原理和逻辑回归实…

Adobe AE(After Effects)2023下载地址及安装教程

Adobe After Effects是一款专业级别的视觉效果和动态图形处理软件,由Adobe Systems开发。它被广泛用于电影、电视节目、广告和其他多媒体项目的制作。 After Effects提供了强大的合成和特效功能,可以让用户创建出令人惊艳的动态图形和视觉效果。用户可以…

06节-51单片机-LCD1602调试工具

欢迎订阅专栏,持续为您更新! 1.LCD1602调试工具 使用LCD1602液晶屏作为调试窗口,提供类似printf函数的功能,可实时观察单片机内部数据的变换情况,便于调试和演示。 本文提供的LCD1602代码属于模块化的代码&#xff…

java创建线程池的方法

简介 线程池是一种用于管理和重用线程的机制,它可以有效地管理线程的创建和销毁,减少线程创建和销毁的开销,并且能够控制并发线程数量,避免资源耗尽和系统过载。Java 提供了java.util.concurrent 包来支持线程池的实现。 1.Threa…

【学习】jemter中如何高效使用正则表达式

在Jemter的世界里,正则表达式无疑是一把锐利的剑,它可以帮助我们轻松地解决许多问题。在Jemter的性能测试过程中,我们常常需要提取响应中的某些数据,以便在后续的请求中使用。这时,正则表达式就派上用场了。通过学习如…

【web开发网页制作】html+css家乡长沙旅游网页制作(4页面附源码)

家乡长沙网页制作 涉及知识写在前面一、网页主题二、网页效果Page1、主页Page2、历史长沙Page3、著名人物Page4、留言区 三、网页架构与技术3.1 脑海构思3.2 整体布局3.3 技术说明书 四、网页源码HtmlCSS 五、源码获取5.1 获取方式 作者寄语 涉及知识 家乡长沙网页制作&#x…

Linux下的IP地址与主机名

IP和主机名 IP地址和主机名 什么是IP地址 IP地址 每一台联网的电脑都会有一个地址,用于和其它计算机进行通讯 IP地址主要有2个版本,V4版本和V6版本(V6很少用,课程暂不涉及) IPv4版本的地址格式是:a.b…

【AIGC】AIGC在虚拟数字人中的应用:塑造未来互动体验的革新力量

🚀 🚀 🚀随着科技的快速发展,AIGC已经成为引领未来的重要力量。其中,AIGC在虚拟数字人领域的应用更是引起了广泛关注。虚拟数字人作为一种先进的数字化表达形式,结合了3D建模、动画技术、人工智能等多种先进…

如何提取音频中的封面

大家在播放MP3音乐的时候经常可以在播放器上看到这个音乐的封面,那么我们要如何提取MP3的音乐里面的封面呢? 打开智游剪辑(官网: zyjj.cc),搜索音乐封面提取 然后就只需要拖入MP3文件点击提交就可以了 下面这里简单展示…

Python100个库分享第20个—xlrd(办公库篇)

目录 专栏导读库的介绍库的功能库的安装测试数据准备基础用法1:读取xlsx表格基础用法2:读取指定单元格的数据基础用法3:工作表的一些基本信息总结专栏导读 🌸 欢迎来到Python办公自动化专栏—Python处理办公问题,解放您的双手 🏳️‍🌈 博客主页:请点击——> 一晌…

预分频器×重装载值)/LSI频率 为什么等于总时间

1. 第一种算法理解:分频系数 64 ,外部低速时钟40khz, 则一次计数周期1.6ms ,计数625个数,则有625个周期 ,1.6ms*625 等于1s 如果分频系数是64,外部低速时钟(LSI)频率是…

Linux硬件管理

文章目录 Linux硬件管理1.查看磁盘空间 df -h2.查看文件的磁盘占用空间 du -ah3.查看系统内存占用情况 htop Linux硬件管理 1.查看磁盘空间 df -h 语法 df [选项][参数]选项 -a或–all&#xff1a;包含全部的文件系统&#xff1b; –block-size<区块大小>&#xff1a;…