基础内容哦!!!吴恩达deeplearning.ai:利用计算图求导(反向传播)

news2025/2/23 11:47:07

以下内容有任何不理解可以翻看我之前的博客哦:吴恩达deeplearning.ai专栏

文章目录

  • 一个小型神经网络的例子
  • 利用计算图逐步计算价值函数J
  • 利用计算图求出价值函数的导数


计算图是深度学习中的一个关键概念,它也是Tensorflow等编程框架自动计算神经网络导数的方式。让我们举个例子。

一个小型神经网络的例子

在这里插入图片描述
这是一个很小型的神经网络,其中,激活值a满足:
a = w x + b a=wx+b a=wx+b
之后采用线性激活函数:
a = g ( z ) = z a=g(z)=z a=g(z)=z
其价值函数为:
J ( w , b ) = 1 2 ( a − y ) 2 J(w,b)=\frac{1}{2}(a-y)^2 J(w,b)=21(ay)2
对于这种小网络,我们只有一个训练样例:
x = − 2 , y = 2 x=-2,y=2 x=2,y=2
该网络的参数为:
w = 2 , b = 8 w=2,b=8 w=2,b=8
我们想要展示的是如何使用计算图来逐步计算价值函数J。

利用计算图逐步计算价值函数J

以下是这个例子的计算图,其实很简单:
在这里插入图片描述
这张图从左到右逐步展示了价值函数的计算过程,其中矩形之中描述的是计算步骤,而线段上面所写的是前一步计算出来的值。所以从左到右,依次计算量w*x的值,然后计算出了a的值,再计算出a-y的值,最后求得价值函数,为2。
计算图向我们展现了神经网络向前传播的步骤(图中还更进一步求了价值函数)。现在的问题是,如何利用计算图找到J关于w和b的导数 ∂ J ∂ w \frac{\partial J}{\partial w} wJ ∂ J ∂ b \frac{\partial J}{\partial b} bJ

利用计算图求出价值函数的导数

事实证明,神经网络的前向传播是从左到右计算,而计算导数是从右向左的计算。
在这里插入图片描述
反向传播的第一步是询问d的值,它是价值函数的输入,d改变,J就跟着改变。例如,如果d改变了一内内,比如0.001,那么j将如何变化嘞。结果是在这种情况下,如果d从2变为了2.01,j则从2变味了2.02,那么可以得出结论就是J这里的导数为2,数学公式就是: ∂ J ∂ d = 2 \frac{\partial J}{\partial d}=2 dJ=2,这样就求出最右边的导数了。
下一步当然是继续向左进行,求一下 ∂ J ∂ a \frac{\partial J}{\partial a} aJ等于多少。利用与上面同样的方法,可以求出 ∂ d ∂ a = 1 \frac{\partial d}{\partial a}=1 ad=1,再结合上 ∂ J ∂ d = 2 \frac{\partial J}{\partial d}=2 dJ=2,那么联立就可以得出 ∂ J ∂ a = 2 \frac{\partial J}{\partial a}=2 aJ=2。用数学化的方式来说,以上步骤其实是依靠链式法则进行微积分,高等数学应该学过。其实就是 ∂ J ∂ a = ∂ d ∂ a × ∂ J ∂ d \frac{\partial J}{\partial a}=\frac{\partial d}{\partial a}\times \frac{\partial J}{\partial d} aJ=ad×dJ
接下来就是一步步从右到左,最终可以得出:
∂ J ∂ w = − 4 \frac{\partial J}{\partial w}=-4 wJ=4

事实证明,反向传播是计算导数的一个不错的方法,避免了你直接计算导数时过于复杂的复合求导。如果一个图具有n个节点(就是图中的矩形)和p个参数(我们这个例子中有两个参数),我们可以在n+p步中求出J对于所有参数的导数,而非n*p,这就表明即使在大型神经网络中你仍然可以进行求导运算。
为了给读者你造成不必要的麻烦,博主的所有视频都没开仅粉丝可见,如果想要阅读我的其他博客,可以点个小小的关注哦。

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

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

相关文章

小而巧的数字压缩算法:zigzag

阅读facebook开源的 RPC(Remote Procedure Call) 框架thrift源代码的时候,本来是在阅读框架,却不小心被 zigzag 这个钻石般闪耀的代码吸引。后来去百度搜索zigzag,却得到满屏图像相关的一个算法(看来起名字…

李沐动手学习深度学习——3.1练习

字写的有点丑不要介意 由于公式推导烦的要死,所以手写形式,欢迎进行讨论,因为我也不知道对错

HarmonyOS—端云一体化组件

概述 DevEco Studio还为您提供多种端云一体化组件。集成端云一体化组件后,您只需进行简单配置即可向应用用户提供登录、支付等众多功能。 登录组件 您可使用端云一体化登录组件向应用用户提供登录和登出功能,目前支持帐号密码登录、手机验证码登录、以…

在VMware中安装CentOS 7并配置Docker

VMware安装CentOS 7 一、介绍 该文章介绍如何使用启动U盘在虚拟机里面安装系统,虚拟机版本为VMware Workstation 16 pro,Linux版本为CentOS Linux release 7.9.2009 (Core)。 二、安装 1、创建虚拟机 点击创建新的虚拟机 选择典型就可以了&#xf…

【C#】忽略大小的替换字符串

结果 代码 string a"aAAAAAAaBBaaCC"; string b Strings.Replace(a, "a", "D", 1, -1, CompareMethod.Text);

【Python】Code2flow学习笔记

1 Code2flow介绍 Code2flow是一个代码可视化工具库,旨在帮助开发人员更好地理解和分析代码: 可以将Python代码转换为流程图,以直观的方式展示代码的执行流程和逻辑结构。具有简单易用、高度可定制化和美观的特点,适用于各种代码…

浅析扩散模型与图像生成【应用篇】(四)——Palette

4. Palette: Image-to-Image Diffusion Models 该文提出一种基于扩散模型的通用图像转换(Image-to-Image Translation)模型——Palette,可用于图像着色,图像修复,图像补全和JPEG图像恢复等多种转换任务。Palette是一种…

曲线的凹凸性与拐点【高数笔记】

1.什么是曲线的凹凸性 2.什么是曲线的拐点 3.拐点的特征 4.拐点与驻点有什么不同 5.拐点的表示方法与驻点有什么不一样 6.拐点与凹凸区间怎么求

Servlet 新手村引入-编写一个简单的servlet项目

Servlet 新手村引入-编写一个简单的servlet项目 文章目录 Servlet 新手村引入-编写一个简单的servlet项目一、编写一个 Hello world 项目1.创建项目2.引入依赖3.手动创建一些必要的目录/文件4.编写代码5.打包程序6.部署7.验证程序 二、更方便的处理方案(插件引入&am…

c++阶梯之内存管理

目录 1.c/c内存分布 2. C语言中的动态内存管理方式:malloc/calloc/realloc/free 3.c的内存管理方式 3.1 new/delete操作内置类型 3.2 new/delete操作自定义类型 3.3 实践中总结new与malloc的区别 1. new的用法比malloc更加的简单 2. new可以控制初始化&am…

C# OpenVINO Nail Seg 指甲分割 指甲检测

目录 效果 模型信息 项目 代码 数据集 下载 C# OpenVINO Nail Seg 指甲分割 指甲检测 效果 模型信息 Model Properties ------------------------- date:2024-02-29T16:41:28.273760 author:Ultralytics task:segment version&#…

遥感、航拍、影像等用于深度学习的数据集集合

遥感图像的纹理特征异常繁杂,地貌类型多变,人工提取往往存在特征提取困难和特征提取不准确的问题,同时,在这个过程中还会耗费海量的人力物力。随着计算力的突破、数据洪流的暴发和算法的不断创新,在具有鲜明“大数据”…

Python爬虫——Urllib库-上

这几天都在为了蓝桥杯做准备,一直在刷算法题,确实刷算法题的过程是及其的枯燥且枯燥的。于是我还是决定给自己找点成就感出来,那么Python的爬虫就这样开始学习了。 注:文章源于观看尚硅谷爬虫视频后笔记 目录 Urllib库 基本使…

Html零基础入门教程(非常详细)

文章目录 1.认识HTML2.html 框架3.HTML常见标签4.HTML语法特征5.列表 1.认识HTML html是超文本标记语言: 目前最新版本是html5,由w3c(万维网联盟)完成标准制定。 声明文档的类型是html5 超文本标记语言。 HTML ,全称“Hyper Text Markup Language(超文…

微信小程序图片展示淡入淡出纯WXSS实现,无需使用消耗性能的动画引擎

进入下面小程序可以体验效果: 以下代码的淡入淡出是切换图片的时候动画效果显示的。需要用其他方式,可以基于这个wxss修改即可 原理就是,图片默认样式的opacity 是 0,通过变量改变样式的opacity即可,然后需要有transi…

Vue纯前端实现链接生成二维码并支持下载

你好,我是小白Coding日志,一个热爱技术的程序员。在这里,我分享自己在编程和技术世界中的学习心得和体会。希望我的文章能够给你带来一些灵感和帮助。欢迎来到我的博客,一起在技术的世界里探索前行吧! 在现代 Web 应用…

(C语言)Sleep函数,system函数,数组练习,详解与运用

一维数组详解:http://t.csdnimg.cn/zahZF 二维数组详解:http://t.csdnimg.cn/h2mLe 我们看过可一维数组与二维数组,现在我们来进行简单的练习。 题目:编写代码,演⽰多个字符从两端移动,向中间汇聚 1. …

DFS之剪枝与优化

剪枝 1.优化搜索顺序:在大部分情况下,我们应该优先搜索分支较少的结点 2.排除等效冗余(在不考虑顺序的情况下,尽量用组合的方式来搜索) 3.可行性剪枝 4.最优性剪枝 5.记忆化搜索 165. 小猫爬山 - AcWing题库 import …

【快速上手QT】06-检测按键检测鼠标

今天聊聊事件,实际上我们在前两篇文章中就已经接触到了事件,分别是定时器事件和绘画事件,今天我们再来看看其他的事件。 我们打开QT助手,在QWidget的界面中找到下图中的地方。 我们可以看到很多函数的结尾都是Event,那…

日本极致产品力|200人的小型家族企业,如何年销7亿块巧克力?

蒂罗尔巧克力是日本经典的巧克力品牌。糖果业务是其早期的主营业务,在主营业务下滑的情况下,确立新的竞争方向、打造新产品、寻找新方法,成就巧克力极致产品力重回增长。 竞争环境变化:糖果主营业务持续下滑 始于1903年的松尾株式…