了解反向传播算法

news2024/12/25 3:01:43

目录

一、说明

二、了解反向传播算法

三、定义神经网络模型

3.1 输入层

3.2 隐藏图层

3.3 输出层

四、前向传播和评估

五、反向传播和计算梯度

六、结束语


一、说明

梯度正向和反向传播,是神经网络的重要概念。其中包含的重要技巧是:1)复函数的导数,2)矩阵导数。3)梯度传播的意义。本文将叙述相关内容。

二、了解反向传播算法

反向传播算法可能是神经网络中最基本的构建模块。它最早是在 20 世纪 60 年代提出的,近 30 年后(1989 年),由 Rumelhart、Hinton 和 Williams 在一篇名为通过反向传播误差学习表示的论文中推广。

该算法通过一种称为链式法则的方法有效地训练神经网络。简单来说,在每次前向传递网络后,反向传播都会执行一次后向传递,同时调整模型的参数(权重和偏差)。

在本文中,我将介绍训练和优化一个简单的 4 层神经网络的数学过程。我相信这将有助于读者理解反向传播的工作原理以及它的重要性。

三、定义神经网络模型

该4层神经网络由输入4个神经元、隐藏层4个神经元和输出层1个神经元组成。

简单的4层神经网络图示

3.1 输入层

紫色的神经元代表输入数据。这些神经元可以像标量一样简单,也可以像向量或多维矩阵一样复杂。

输入 x_i 的方程

第一组激活 ( a ) 等于输入值。注意:“激活”是应用激活函数后神经元的值。见下文。

3.2 隐藏图层

隐藏神经元的最终值(绿色 使用z^l (第l层的加权输入)和a^l (第l层的激活)计算得出的。对于第 2 层和第 3 层,方程式如下:

  • l = 2

z² 和 a² 的方程式

  • l = 3

z³ 和 a³ 的方程式

是第 2 层和第 3 层中的权重,而 b² 和 b³ 是这些层中的偏差。

激活函数是使用激活函数f计算的。通常,此函数f是非线性的(例如sigmoid、ReLU、tanh),允许网络学习数据中的复杂模式。我们不会详细讨论激活函数的工作原理,但如果感兴趣,我强烈建议您阅读这篇精彩的文章。

仔细观察,你会发现上面的 4 层网络图中x、z²、a²、z³、a³、W¹、W²、b¹b²都缺少下标。原因是我们将所有参数值组合成矩阵,并按层分组。这是使用神经网络的标准方法,人们应该对计算感到满意。不过,我将介绍这些方程式,以消除任何困惑。

我们以第 2 层及其参数为例。相同的操作可应用于网络中的任何层。

  • W¹是一个形状为(n, m) 的权重矩阵,其中n是输出神经元(下一层中的神经元)的数量,m是输入神经元(上一层中的神经元)的数量。对于我们来说,n = 2m = 4

W¹ 方程

注意:任何权重下标中的第一个数字与下一层的神经元的索引匹配(在我们的例子中,这是Hidden_​​2 层,第二个数字与前一层的神经元的索引匹配(在我们的例子中,这是输入层)。

  • x是形状为(m, 1)的输入向量,其中m是输入神经元的数量。对于我们来说,m = 4

x 方程

  • b¹是形状为(n, 1)的偏差向量,其中n是当前层中的神经元数量。对于我们来说,n = 2

b¹ 方程

按照 z² 方程我们可以使用上述W¹、x的定义来推导出“ z² 方程”

z² 方程

现在仔细观察上面的神经网络图示。

输入层和 Hidden_​​1 层

您将看到z²可以用 ( z_1)²和 ( z_2)²来表示,其中 ( z_1)²和 ( z_2)²是每个输入x_i与相应权重 ( W_ij)¹的乘积之和

这导致了相同的“ z²方程” ,并证明z²、a²、z³的矩阵表示是正确的。

3.3 输出层

神经网络的最后一部分是输出层,它产生预测值。在我们的简单示例中,它表示为单个神经元,以蓝色表示,并按 如下方式评估:

输出方程

再次,我们使用矩阵表示来简化方程。可以使用上述技术来理解底层逻辑。如果您发现自己对方程式感到困惑,请在下面留下任何评论——我很乐意提供帮助!

四、前向传播和评估

上面的方程构成了网络的前向传播。下面是一个简短的概述:

按层着色的前向传播方程概述

前向传递的最后一步是评估预测输出s与预期输出y 之间的关系。

输出y是训练数据集(x, y)的一部分,其中x是输入(如我们在上一节中看到的)。

sy之间的评估通过成本函数进行。这可以像MSE(均方误差)一样简单,也可以像交叉熵一样更复杂。

我们将该成本函数命名为C,并表示如下:

成本函数 C 的方程

成本可以等于 MSE、交叉熵或任何其他成本函数

根据C的值,模型“知道”需要调整多少参数才能更接近预期输出y。这是使用反向传播算法实现的。

五、反向传播和计算梯度

根据 1989 年的论文,反向传播:

反复调整网络中连接的权重,以最小化网络实际输出向量与期望输出向量之间的差异。

创建有用的新功能的能力将反向传播与早期的简单方法区分开来……

换句话说,反向传播旨在通过调整网络的权重和偏差来最小化成本函数。调整的程度由成本函数相对于这些参数的梯度决定。

可能会出现一个问题——为什么要计算梯度

为了回答这个问题,我们首先需要重新回顾一些微积分术语:

  • 函数 C(x_1, x_2, …, x_m) 在点 x 的梯度是C 关于 x 的偏导数的向量。

C 关于 x 的导数方程

  • 函数 C 的导数衡量函数值(输出值)随其自变量 x(输入值)变化而变化的敏感度。换句话说,导数告诉我们 C 的走向。
  • 梯度显示参数 x 需要改变多少(正向或负向)才能最小化 C。

计算这些梯度需要使用一种称为链式法则的技术。

对于单个权重(w_jk)^l,梯度为:

单一权重(w_jk)^l中 C 的导数方程

类似的方程组可以应用于(b_j)^l

单偏差(b_j)^l中 C 的导数方程

两个方程的共同部分通常称为“局部梯度”,表示如下:

局部梯度方程

使用链式法则可以轻松确定“局部梯度”。我现在不会详细介绍这个过程,但如果您有任何疑问,请在下面发表评论。

梯度使我们能够优化模型的参数:

优化权重和偏差的算法(也称为“梯度下降”)

  • wb的初始值是随机选择的。
  • Epsilon(e)是学习率。它决定了梯度的影响力。
  • wb是权重和偏差的矩阵表示。可以使用C在各个权重或偏差中的偏导数来计算Cwb中的导数。
  • 一旦成本函数最小化,终止条件就会得到满足。

我想将本节的最后一部分专门用于一个简单的例子,其中我们将计算C相对于单个权重(w_22)²的梯度。

让我们放大上述神经网络的底部:

神经网络中反向传播的可视化表示

权重(w_22)²连接(a_2)²(z_2)²,因此计算梯度需要通过(z_2)³(a_2)³ 应用链式法则:

(w_22)²中 C 的导数方程

计算(a_2)³C的导数的最终值需要了解函数C。由于C依赖于(a_2)³,因此计算导数应该相当简单。

我希望这个例子能够让你对计算梯度背后的数学原理有所了解。为了进一步提高你的技能,我强烈建议你观看斯坦福的 NLP 系列,其中 Richard Socher 对反向传播给出了 4 个很好的解释。

六、结束语

在本文中,我详细解释了反向传播的工作原理,其中使用了计算梯度、链式法则等数学技巧。了解该算法的具体细节将增强您的神经网络知识,让您能够轻松应对更复杂的模型。祝您深度学习之旅愉快!

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

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

相关文章

实力认可 | 通付盾入选《ISC.AI 2024创新能力全景图谱》五项领域

近日,ISC.AI 2024创新能力百强(以下简称“创新百强”)正式发布《ISC.AI 2024创新能力全景图谱》。该全景图谱是由政企、资本、高校、行业力量共同完成了领域划分、综合创新等标准的制定,整合梳理了参评的300余家数字安全厂商、120…

Web3.0安全开发实践:9个sCrypt智能合约开发的最佳实践

sCrypt是一种基于TypeScript的嵌入式领域特定语言(eDSL),专为在比特币链上编写智能合约而设计。sCrypt智能合约使用比特币支持的操作码,可以编译成Bitcoin Script。由此生成的类似汇编的脚本可用作交易中的锁定脚本。 本文将探讨…

新手SEO指南如何快速入门与提升网站排名

内容概要 搜索引擎优化(SEO)是提高网站可见度和排名的重要手段,尤其对新手来说,掌握其基本概念和实用技巧至关重要。本文将针对新手提供一系列的指导,帮助你快速入门并逐步提升网站排名。 首先,了解SEO的…

【EthIf-14】EthIfGeneral容器配置-02

1.实际EthIfGeneral的配置实例 关闭DET接口开启发送确认中断开启接收中断主周期接收timeout主周期 2. 代码实例参考 阅读此部分代码,搞清楚代码分为几个section,大概瞄一眼就好,不用深究其含义,只需有一个宏观的层次结构的映像即可。 //Appl/GenData/EthIf_Cfg.h #

‘pnpm’ 不是内部或外部命令,也不是可运行的程序或批处理文件。

‘pnpm’ 不是内部或外部命令,也不是可运行的程序或批处理文件。 1.情况: npm -v 和 node -v的都正常就是 pnpm-v 无效 检查环境变量也没看出问题 2.分析 没有正确添加环境变量 3.解决 找到npm的全局安装目录 npm list -g --depth 0这里出现了npm的全局安装…

Docker 部署 SpringBoot VUE项目

是一套基于若依的wms仓库管理系统 一、后端部署 后端地址:https://gitee.com/zccbbg/wms-ruoyi/tree/v1/ 1、用IDEA拉代码,并修改API统一后缀 2、复制一个配置文件 application-dev.yaml,并修改里面的mysql与redis配置 3、将打包的jar上传…

面试基础篇---迭代器,yield, tcp, 等

1.谈谈python的装饰器,迭代器,yield? 迭代器在内存中通常是一次性遍历的,也就是说,一旦遍历完所有元素,它就会停止工作,不可再用。 惰性计算:生成器按需生成数据,即只有在…

【文档搜索引擎】搜索模块的完整实现

调用索引模块,来完成搜索的核心过程 主要步骤 简化版本的逻辑: 分词:针对用户输入的查询词进行分词(用户输入的查询词,可能不是一个词,而是一句话)触发:拿着每个分词结果&#xf…

帝国cms灵动标签调用相关文章

帝国cms相关文章调用的方法很多,官方默认调用方法是使用标签 [!--other.link--] 那么内容页调用相关文章,什么时候用到灵动标签呢 答案是调用同类型的文章,比如有相同关键词或者相同tags标签的文章 使用灵动标签是如何调用的呢&#xff0…

低空经济的地理信息支撑:构建安全、高效的飞行管理体系

随着无人机等低空飞行器的广泛应用,低空空域管理的重要性日益凸显。地理信息技术作为低空空域管理的重要支撑,对于保障低空经济的健康发展具有不可替代的作用。 地理信息技术在低空空域管理中的作用 地理信息技术在低空空域管理中扮演着关键角色&#x…

一体式IO模块:打印机加工产线国产化降本增效的新利器

在当今全球化的市场竞争中,打印机制造行业面临着前所未有的挑战与机遇。为了提升生产效率、降低成本,并加速国产化进程,各大打印机制造商纷纷寻求技术创新与升级。明达技术自研推出的MR20一体式IO模块作为工业自动化领域的核心组件&#xff0…

「下载」智慧产业园区-数字孪生建设解决方案:重构产业全景图,打造虚实结合的园区数字化底座

数字孪生技术作为一种创新的管理工具,正逐步展现出其在智慧园区建设中的重要意义。以下将从几个方面详细阐述数字孪生在智慧园区建设中的关键作用。 一、提升园区运营管理的智能化水平 数字孪生技术通过构建园区的虚拟镜像,实现了对园区物理世界的全面…

ICASSP 2025 中了 ,不去印度参会就撤稿?

近日,ICASSP 2025正式放榜,身边很多同学都收到了好消息,虽然目前官方还没有给出正式的数据,但据知情人士透露,今年的投稿编号超过8000,可以说是创造了历史新高,预测整体录取率在46%左右。 根据…

深度学习之目标检测——RCNN

Selective Search 背景:事先不知道需要检测哪个类别,且候选目标存在层级关系与尺度关系 常规解决方法:穷举法,在原始图片上进行不同尺度不同大小的滑窗,获取每个可能的位置 弊端:计算量大,且尺度不能兼顾 Selective …

LOS/NLOS环境建模与三维TOA定位,MATLAB仿真程序,可自定义锚点数量和轨迹点长度

本代码的主要功能是建模 LOS(视距)和 NLOS(非视距)环境下的定位系统,估计目标的动态位置,三维空间 文章目录 运行结果源代码代码介绍 总结 运行结果 10个点的轨迹定位: 50个点的轨迹定位&#…

企业内训|高智能数据构建、Agent研发及AI测评技术内训-吉林省某汽车厂商

吉林省某汽车厂商为提升员工在AI大模型技术方面的知识和实践能力,举办本次为期8天的综合培训课程。本课程分为两大部分:面向全体团队成员的AI大模型技术结构与行业应用,以及针对技术团队的高智能数据构建与Agent研发。课程内容涵盖非结构化数…

专业的内外网数据交换方案 可解决安全、效率、便捷3大问题

内外网数据交换是很多企业和行业都会面临的场景,既然隔离了内外网,重中之重就是要确保数据的安全性,其次在数据流转交换过程中,不能太繁琐复杂,需要让用户快速、便捷的进行数据交换。首先我们来看看,在进行…

【linux】NFS实验

NFS服务 NFS是Network File System(网络文件系统)的缩写。它是一种用于在计算机网络中共享文件和目录的协议。NFS允许计算机上的用户访问和操作远程计算机上的文件,就像访问本地文件一样。它使用客户端-服务端模型,其中客户端机器…

2024年Python最新下载安装教程,附详细图文,持续更新

大家好,我是Python老安,今天为大家带来的是Windows Python3下载、安装教程,适用于 Python3 所有版本,包括 Python3.7,Python33.8,Python33.10 等版本。希望对大家有所帮助 Python目前已支持所有主流操作系统,在Linux,…

职业技能赛赛后心得

这是一位粉丝所要求的,也感谢这位粉丝对我的支持。 那么本篇文章我也是分成四个部分,来总结一下这次赛后心得。 赛中问题 那么这里的赛中问题不会只包含我所遇到的问题,也会包含赛中其他选手出现的问题。 那么首先我先说一下我在赛中遇到的…