【机器学习】033_反向传播

news2024/12/26 22:29:01

一、计算图、反向传播原理

1. 回顾前向传播

        例:假设现在有一个神经网络,其仅有一个输出层和一个神经单元

        · 定义 z = wx+b

        · 定义 a = g(z) = z = wx+b,即激活函数对激活值不再做具体处理

        · 定义平方损失函数 J(w,b) = \frac{1}{2}(a-y)^2,计算a的值与真实值的差距

        此时,通过计算图,我们可以看到前向传播的过程:

        ①输入 x,分别与权重 w 和 b 做运算得到 z,再经过激活函数得到 a 的值;

        ②拿 a 的值与真实值 y 做比较,从而得到损失函数的值。

        

        在这个过程中,我们通过计算图将得到损失函数 J(w,b) 的每一小步操作都呈现了出来,并用诸如 c 和 d 的变量名表示其中的某一部分,※这方便我们后续进行反向传播的求导操作。

        如果我们要实现梯度下降不断更新权重 w 和 b 的值从而减小损失函数,就需要知道损失函数对于 w 和 b 的导数值。这个过程我们称之为【反向传播】。

2. 反向传播

        损失函数对于 w 和 b 的导数值不能够直接求导呈现,由于 J(w,b) 是 w 和 b 经过了多个变换最终计算出来的,因此要对 J(w,b) 求 w 和 b 的导数,就应该使用链式法则来进行计算。

        如图所示,在计算图中进行反向传播的运算,最终可以通过链式法则得到 \frac{\partial J}{\partial w} 和 \frac{\partial J}{\partial b} 的值。

        · 利用这些值,我们就可以进一步执行梯度下降算法的相关操作,来不断更新 w 和 b 的值从而使 J(w,b) 最小。

        · 一般地,当导数为0时,证明达到了极小值点,此时即是梯度下降收敛的位置。

※有关梯度下降算法的相关知识,详见先前学习笔记※

        激活函数的选择:

        目前使用较多的是ReLU函数,它的求导表现是要么让某个参数通过,要么让某个参数消失,因此优化表现更好,且缓解了梯度消失问题(后续会进一步学习)

二、使用 Sympy 的库和包自行计算导数

import sympy
# 使用J和w作为求导计算的符号
J, w = sympy.symbols('J, w')
# 确定两者之间的函数表达式
J = w**2
# diff()函数表示求第一个数对第二个数的导数
dJ_dw = sympy.diff(J, w)
print(dJ_dw)
print(dJ_dw.subs([(w,2)]))  # subs表示将w的值实际代入进去求dJ_dw的值

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

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

相关文章

Ansys Lumerical|菲涅尔透镜设计

附件下载 联系工作人员获取附件 在这个例子中,我们研究一个球面菲涅尔透镜。透镜的曲率半径为100cm,直径为4.8cm。由于该结构的尺寸较大,我们必须使用该结构的二维近似。透镜的焦点可以用FDTD远场投影函数来研究。 镜头设计和设置 我们将考…

HarmonyOS第一课-对比Kotlin,快速入门TypeScript

编程语言简介 基础类型 1. 布尔值 TypeScript 和 Kotlin: 两者都有 boolean 类型,用于表示 true 或 false。 ts示例: let isDone:boolean falsekotlin示例: val isDone: Boolean false2. 数字 TypeScript: 有 number 类型&#xff0c…

二进制位(计算机存储数据最小单位)

二进制数据中的一个位(bit)简写为b,音译为比特,是计算机存储数据的最小单位。一个二进制位只能表示0或1两种状态,要表示更多的信息,就要把多个位组合成一个整体,一般以8位二进制组成一个基本单位。计算机内部数据以二进…

Camtasia2024喀秋莎软件注册机

真的要被录屏软件给搞疯了,本来公司说要给新人做个培训视频,想着把视频录屏一下,然后简单的剪辑一下就可以了。可谁知道录屏软件坑这么多,弄来弄去头都秃了,不过在头秃了几天之后,终于让我发现了一个值得“…

品尝葡萄酒要注意的重点事项有哪些?

给自己倒一杯葡萄酒,抿一口,这很容易就知道这是不是你喜欢的了。通过一些练习和微调可以加深你对葡萄酒特性的理解,并在品尝时挖掘出葡萄酒中所有的味道。任何品酒师在分析新酒时都会遵循一系列步骤和规则,从外观到香气、味道和特…

DAY59 503.下一个更大元素II + 42. 接雨水

503.下一个更大元素II 题目要求: 给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素),输出每个元素的下一个更大元素。数字 x 的下一个更大的元素是按数组遍历顺序,这个数字之后的第一个比它更大的数&am…

django ModelSerializer自定义显示字段

文章目录 前言一、问题二、解决 前言 最近在复习django的时候,发现了一个有趣的问题,解决了之后特意记录下来,以供以后参考。 一、问题 相信大家使用django的时候,被其DRF的强大功能所折服,因为它能通过简单的代码就…

生产环境_移动目标轨迹压缩应用和算法处理-Douglas-Peucker轨迹压缩算法

场景: 我目前设计到的场景是:即在地图应用中,对GPS轨迹数据进行压缩,减少数据传输和存储开销,因为轨迹点太频繁了,占用空间太大,运行节点太慢了,经过小组讨论需要上这个算法&#x…

Nosql的redis概述及基本操作

关系数据库与非关系型数据库概述 关系型数据库 关系型数据库是一个结构化的数据库,创建在关系模型(二维表格模型)基础上,一般面向于记录。SQL语句(标准数据查询语言)就是一种基于关系型数据库的语言,用于执行对关系型…

【Linux专题】退出bash后再运行jobs命令为什么不会显示后台任务

【Linux专题】firewalld 过滤出接口流量-CSDN博客文章浏览阅读214次。风和日丽,小微给你送福利~如果你是小微的老粉,这里有一份粉丝福利待领取...如果你是新粉关注到了小微,那恭喜你,你赚到了![欢迎关注微信公众号&…

技巧大揭秘!如何优雅地应对Redis读写超时问题

大家好,我是小米!今天我们要聊的话题是在Java中如何优雅地处理Redis读写超时问题。这可是个让人头疼的问题,但别担心,我会在这里和大家一起揭开它的神秘面纱,分享一些超实用的技巧和优雅的处理方法。 问题背景 在我们…

陶瓷行业废污水处理使用MES系统的作用

陶瓷行业属于高能耗、高污染行业,生产过程中消耗大量矿产资源和能源,产生的废气、废水、废渣、粉尘等对环境造成严重污染。在近年来,全社会环保意识增强,政府出台了一系列政策、措施加大节能、减排力度,整治行业污染。…

NX二次开发UF_CAM_ask_lower_limit_plane_usage 函数介绍

文章作者:里海 来源网站:里海NX二次开发3000例专栏 UF_CAM_ask_lower_limit_plane_usage Defined in: uf_cam_planes.h int UF_CAM_ask_lower_limit_plane_usage(tag_t object_tag, UF_PARAM_lwplane_usage_t * usage ) overview 概述 Query the usa…

Nginx解决跨域问题的一些想法

参考博客https://blog.csdn.net/agonie201218/article/details/112562252,https://blog.csdn.net/Zisson_no_error/article/details/119357629。都是写得非常很好的文章 重中之重:一定要长眼睛,带脑子 通过跨域访问的报错,看清楚…

H5生成二维码(HTML、CSS、QrCodeJs内含源码)

H5生成二维码 前言二维码实现过程页面实现关键点全部源码 前言 本文主要讲解如何通过原生HTML、CSS、Js中的qrcodejs二维码生成库,实现一个输入URL按下回车后输出URL。文章底部有全部源码,需要可以自取。 实现效果图: 上述实现效果为&#…

2023年11月中旬大模型新动向集锦

2023年11月中旬大模型新动向集锦 2023.11.21版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 1、谷歌生成式 AI 搜索生成体验(SGE)扩展到 120 多个新国家/地区 近日,Google 扩展了其由生成式人工智能驱…

无法打开 “XXXX“ ,因为Apple 无法检测其是否包含恶意软件

解决方案 设置 - > 隐私和安全性 这里会显示这个,点击仍要打开

高压放大器使用方法介绍

高压放大器是一种用于放大高压信号的电子设备,常用于科学研究、工业应用和医疗设备等领域。它可以将低电压信号放大到较高的电压水平,以满足特定应用的需求。 使用高压放大器需要注意以下几个方面: 1.了解设备规格:在使用高压放大…

Linux操作系统使用及C高级编程-D9D10Linux 服务搭建与使用

TFTP服务器 TFTP(Trivial File Transfer Protocol)即简单文件传输协议,是TCP/IP协议中一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。端口号为69 1、使用客户服务器方式和使用UDP数据…