【梯度下降|链式法则】卷积神经网络中的参数是如何传输和更新的?

【梯度下降|链式法则】卷积神经网络中的参数是如何传输和更新的?

【梯度下降|链式法则】卷积神经网络中的参数是如何传输和更新的?


文章目录

  • 【梯度下降|链式法则】卷积神经网络中的参数是如何传输和更新的?
  • 1. 什么是梯度?
  • 2.梯度下降法(Gradient Descent)
  • 3. 链式法则(Chain Rule)
  • 4. 梯度下降法的变种
    • 批量梯度下降(Batch Gradient Descent)
    • 随机梯度下降(Stochastic Gradient Descent, SGD)
    • 小批量梯度下降(Mini-batch Gradient Descent)
  • 总结


1. 什么是梯度?

在深度学习中,梯度是损失函数相对于模型参数的偏导数。梯度表示损失函数在参数空间中的变化率,指示出在参数值上的变化对损失函数值的影响。模型通过计算梯度来更新参数,从而最小化损失函数

  • 梯度的含义: 梯度是损失函数的局部导数,表明某个参数如何影响损失函数。若梯度为正,说明损失函数随着该参数的增大而增大,若为负,则表明损失函数随着该参数的增大而减小。
  • 数学公式:对于某个参数 θ θ θ,梯度 ∇ J ( θ ) ∇J(θ) J(θ) 是损失函数 J ( θ ) J(θ) J(θ) θ θ θ的偏导数:
    在这里插入图片描述

2.梯度下降法(Gradient Descent)

梯度下降法是一种通过迭代优化算法来寻找损失函数最小值的方法。模型通过计算损失函数相对于模型参数的梯度,沿着梯度的反方向更新参数,逐步逼近损失函数的最小值。

梯度下降法公式

梯度下降的核心公式是:
在这里插入图片描述

  • θ θ θ:模型参数(如权重和偏置)。
  • η η η:学习率(learning rate),控制更新步长的大小。
  • ∇ J ( θ ) ∇J(θ) J(θ):损失函数 J ( θ ) J(θ) J(θ) 对参数 θ θ θ 的梯度。

学习率控制每次更新的步长。如果学习率太大,可能导致错过最优解;如果学习率太小,训练过程将非常缓慢。

梯度下降的流程

  • (1)初始化模型参数。
  • (2)计算损失函数对参数的梯度。
  • (3)根据梯度的反方向更新参数。
  • (4)重复迭代,直到找到损失函数的局部或全局最小值。

代码示例:简单的梯度下降法

import torch# 定义参数并启用梯度计算
x = torch.tensor([2.0], requires_grad=True)  # 模型参数
y_true = torch.tensor([4.0])  # 目标值# 定义简单的损失函数 (MSE)
loss = (x - y_true) ** 2# 计算梯度
loss.backward()  # 反向传播计算梯度
print(f'梯度: {x.grad.item()}')# 使用梯度下降法更新参数
learning_rate = 0.1
x.data = x.data - learning_rate * x.grad.data  # 更新参数
print(f'更新后的参数: {x.item()}')

3. 链式法则(Chain Rule)

链式法则是微积分中的一种技术,它用于计算复合函数的导数。深度学习中的反向传播算法就是基于链式法则来计算梯度的。

如果一个函数由多个嵌套函数组成,比如:
在这里插入图片描述
根据链式法则,函数 f f f x x x 的导数为:
在这里插入图片描述
在神经网络中,链式法则用于从输出层到输入层逐层计算梯度,每一层的梯度依赖于其后层的梯度。

链式法则在神经网络中的应用

在神经网络中,假设有三层网络,损失函数为 L L L,每一层的激活函数为 a ( l ) a (l) a(l),权重为 W ( l ) W (l) W(l),则通过链式法则,我们可以逐层计算损失函数对每一层权重的梯度:

  • 从输出层开始:
    在这里插入图片描述
  • 逐层回传:
    在这里插入图片描述
    这种逐层计算梯度的过程就是反向传播(Backpropagation),它有效地使用了链式法则计算每个参数的梯度。

代码示例:链式法则在 PyTorch 中的实现

import torch# 假设一个简单的神经网络层:y = Wx + b
W = torch.tensor([2.0], requires_grad=True)  # 权重
b = torch.tensor([1.0], requires_grad=True)  # 偏置
x = torch.tensor([3.0])  # 输入# 前向传播
y = W * x + b# 定义损失函数 (比如平方误差)
loss = (y - 10) ** 2# 反向传播计算梯度
loss.backward()# 输出梯度
print(f'W 的梯度: {W.grad.item()}')
print(f'b 的梯度: {b.grad.item()}')

在这个例子中,通过链式法则,PyTorch 自动计算了损失函数相对于 W W W b b b 的梯度。

4. 梯度下降法的变种

在实际应用中,梯度下降法有多种变体,适用于不同类型的任务:

批量梯度下降(Batch Gradient Descent)

  • 使用全部数据来计算损失函数的梯度,然后更新参数。
  • 缺点是当数据量大时,计算开销非常大。

随机梯度下降(Stochastic Gradient Descent, SGD)

  • 每次只使用一个样本计算梯度并更新参数。
  • 优点是计算速度快,但收敛路径不稳定。

小批量梯度下降(Mini-batch Gradient Descent)

  • 每次使用一小部分样本(mini-batch)来计算梯度并更新参数,兼具批量和随机梯度下降的优点。

总结

  • 梯度是损失函数对模型参数的偏导数,用于指导模型参数的更新方向。
  • 梯度下降法是一种通过沿梯度反方向更新参数来最小化损失函数的优化方法。
  • 链式法则是神经网络中反向传播算法的基础,用于逐层计算梯度。
    通过梯度下降和链式法则,神经网络能够有效地学习复杂的非线性关系,从而优化模型的表现。

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

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

相关文章

华为eNSP使用详解

eNSP(Enterprise Network Simulation Platform)是华为提供的一款网络仿真平台,它允许用户在没有真实设备的情况下进行网络实验和学习网络技术。eNSP可以模拟各种网络设备,如交换机、路由器、防火墙等,并支持创建多种网…

Linux 环境打包 QT 程序

目录 前言 一、安装Qt库和编译器 二、编译生成可执行文件 三、准备脚本 四、添加程序依赖库 五、添加 Qt 相关依赖库 六、发布 deb 安装包 参考文章 前言 Qt是一个跨平台的GUI框架,可以在多种操作系统上运行,包括Linux、Windows和macOS。因此&am…

ASP.NET Core高效管理字符串集合

我们在开发 Web 项目时经常遇到需要管理各种来源的字符串集合(例如HTTP 标头、查询字符串、设置的值等)的情况。合理的管理这些字符串集合不仅可以减少出bug的几率,也能提高应用程序的性能。ASP.NET Core 为我们提供了一种特殊的只读结构体 S…

C/C++实现植物大战僵尸(PVZ)(打地鼠版)

🚀欢迎互三👉:程序猿方梓燚 💎💎 🚀关注博主,后期持续更新系列文章 🚀如果有错误感谢请大家批评指出,及时修改 🚀感谢大家点赞👍收藏⭐评论✍ 游戏…

【数据结构】字符串与JSON字符串、JSON字符串及相应数据结构(如对象与数组)之间的相互转换

前言&#xff1a; 下面打印日志用的是FastJSON依赖库中的 Log4j2。依赖&#xff1a; <!-- Alibaba Fastjson --> <dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.80</version> …

[Redis] Redis中的set和zset类型

&#x1f338;个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 &#x1f3f5;️热门专栏: &#x1f9ca; Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 &#x1f355; Collection与…

OpenCV运动分析和目标跟踪(1)累积操作函数accumulate()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 将一个图像添加到累积图像中。 该函数将 src 或其部分元素添加到 dst 中&#xff1a; dst ( x , y ) ← dst ( x , y ) src ( x , y ) if mask…

mysql笔记8(多表查询)

文章目录 1. union联合查询可能会用到去重操作 2. inner join 内连接3. left join 左连接4. right join 右连接5. cross join 交叉连接6. natural join 自然连接natural left join 自然左连接natural right join 自然右连接自然连接的两张表没有同名字段怎么办&#xff1f; 7. …

自定义EPICS在LabVIEW中的测试

继续上一篇&#xff1a;LabVIEW中EPICS客户端/服务端的测试 变量定义 You can use CaLabSoftIOC.vi to create new EPICS variables and start them. CA Lab - LabVIEW (Realtime) EPICS INPUT: PV set Cluster-array of names, data types and field definitions to crea…

VMware Fusion虚拟机Mac版 安装Ubuntu操作系统教程

Mac分享吧 文章目录 下载镜像地址&#xff1a;[www.macfxb.cn](http://www.macfxb.cn)一、Ubuntu安装完成&#xff0c;软件打开效果二、Mac中安装Ubuntu虚拟机1️⃣&#xff1a;下载镜像2️⃣&#xff1a;创建虚拟机3️⃣&#xff1a;虚拟机设置4️⃣&#xff1a;虚拟机安装5️…

3.信号量与互斥量

队列:用来传递数据 如果不想传递数据,只是"通知"呢? 这个时候,我们就可以使用"信号量","信号量"的本质:item_size等于 0 的队列 信号量里面有什么呢? 1.一个计数值 2.一个"队伍",就是一个链表:用来记录等待的对应信号量的任务 …

OpenGL笔记二十一之几何类设计

OpenGL笔记二十一之几何类设计 —— 2024-09-16 下午 bilibili赵新政老师的教程看后笔记 code review! 文章目录 OpenGL笔记二十一之几何类设计1.运行1.1.立方体运行1.2.球体运行 2.几何类搭建1.立方体分析2.球体分析3.图片资源文件4.关键实现4.1.geometry.h4.2.geometry.cpp…

PCL 曲线点云提取

文章目录 一、简介二、实现代码三、实现效果参考文献一、简介 提取曲线点云的方法主要分为两种:参数化与非参数化,其中参数化是指事先直线曲线的形状,反之,非参数化则是不依赖与曲线的参数,通常是一种聚类的行为。这里我们采用非参数方法(TriplClust),将点集划分为一个未…

Redis的配置与优化

目录 一、关系数据库与非关系型数据库 1.1、关系型数据库 1.2、非关系型数据库 1.3、关系型数据库和非关系型数据库区别 数据存储方式不同 扩展方式不同 对事务性的支持不同 1.4、非关系型数据库产生背景 二、Redis简介 2.1、Redis优点 2.2、Redis为什么这么快 三、…

如何编写智能合约——基于长安链的Go语言的合约开发

场景设计&#xff1a;文件存证系统 在数字化时代&#xff0c;文件存证和版本追踪变得越来越重要。设想一个场景&#xff1a;在一个法律事务管理系统中&#xff0c;用户需要提交和管理各种文件的版本记录&#xff0c;以确保每个文件在不同时间点的状态可以被准确追踪。文件可能经…

数据结构之栈(python)

栈&#xff08;顺序栈与链栈&#xff09; 1.栈存储结构1.1栈的基本介绍1.2进栈和出栈1.3栈的具体实现1.4栈的应用例一例二例三 2.顺序栈及基本操作&#xff08;包含入栈和出栈&#xff09;2.1顺序栈的基础介绍2.2顺序栈元素入栈2.3顺序栈元素出栈2.4顺序栈的表示和实现 3.链栈及…

【腾讯云】AI驱动TDSQL-C Serveress 数据库技术实战营-如何是从0到1体验电商可视化分析小助手得统计功能,一句话就能输出目标统计图

欢迎来到《小5讲堂》 这是《腾讯云》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解。 温馨提示&#xff1a;博主能力有限&#xff0c;理解水平有限&#xff0c;若有不对之处望指正&#xff01; 目录 背景效果图流程图创建数据库基本信息数据库配置设置密码控制台开启…

Java-数据结构-二叉树-习题(三)  ̄へ ̄

文本目录&#xff1a; ❄️一、习题一(前序遍历非递归)&#xff1a; ▶ 思路&#xff1a; ▶ 代码&#xff1a; ❄️二、习题二(中序遍历非递归)&#xff1a; ▶ 思路&#xff1a; ▶ 代码&#xff1a; ❄️三、习题三(后序遍历非递归)&#xff1a; ▶ 思路&#xff1a; …

一款源码阅读的插件

文章目录 进度汇报功能预览添加高亮标记高亮风格设置笔记颜色设置数据概览高亮数据详情 结尾 进度汇报 之前提到最近有在开发一个源码阅读的IDEA插件&#xff0c;第一版已经开发完上传插件市场了&#xff0c;等官方审批通过就可以尝鲜了。插件名称&#xff1a;Mark source cod…

算法之搜索--最长公共子序列LCS

最长公共子序列&#xff08;longest common sequence&#xff09;:可以不连续 最长公共子串&#xff08;longest common substring&#xff09;&#xff1a;连续 demo for (int i 1;i<lena;i){for (int j 1;j<lenb;j){if(a[i-1]b[j-1]){dp[i][j]dp[i-1][j-1]1;}el…