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

news2024/9/20 7:50:10

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

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


文章目录

  • 【梯度下降|链式法则】卷积神经网络中的参数是如何传输和更新的?
  • 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.coloradmin.cn/o/2143070.html

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

相关文章

【网络安全】分享4个高危业务逻辑漏洞

未经许可,不得转载。 文章目录 正文逻辑漏洞1逻辑漏洞2逻辑漏洞3逻辑漏洞4其它正文 该目标程序是一家提供浏览器服务的公司,其核心功能是网页抓取和多账户登录操作,类似于浏览器中的隐身模式,但更加强大和高效。通过该平台,用户可以轻松管理并同时运行数百个隐身浏览器实…

【Python123题库】#绘制温度曲线 #XRD谱图绘制 #态密度曲线绘制

禁止转载,原文:https://blog.csdn.net/qq_45801887/article/details/140087866 参考教程:B站视频讲解——https://space.bilibili.com/3546616042621301 有帮助麻烦点个赞 ~ ~ Python123题库 绘制温度曲线XRD谱图绘制态密度曲线绘制 绘制温度…

【LeetCode】每日一题 2024_9_16 公交站间的距离(模拟)

前言 每天和你一起刷 LeetCode 每日一题~ LeetCode 启动! 题目:公交站间的距离 代码与解题思路 func distanceBetweenBusStops(distance []int, start int, destination int) int {// 首先让 start > destination, 这两个谁大对结果没有影响&#…

监控易监测对象及指标之:全面监控DB2_linux数据库

在数字化时代,数据库作为企业核心数据资产的存储和管理中心,其稳定性和性能直接关系到业务的连续性和效率。DB2作为IBM推出的关系型数据库管理系统,广泛应用于各种业务场景。为了确保DB2_linux数据库的稳定运行和高效性能,全面而细…

【已解决】关于错误 UnicodeEncodeError: ‘gbk‘ codec can‘t encode character

某次爬取一个网站的时候UnicodeEncodeError: gbk codec cant encode character \xa9 in position 19417: illegal multibyte sequence 尝试了很多个办法, def get_page(self):headers {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)…

浏览器插件利器--allWebPluginV2.0.0.20-beta版发布

allWebPlugin简介 allWebPlugin中间件是一款为用户提供安全、可靠、便捷的浏览器插件服务的中间件产品,致力于将浏览器插件重新应用到所有浏览器。它将现有ActiveX控件直接嵌入浏览器,实现插件加载、界面显示、接口调用、事件回调等。支持Chrome、Firefo…

Jenkins基于tag的构建

文章目录 Jenkins参数化构建设置设置gitlab tag在工程中维护构建的版本按指定tag的版本启动服务 Jenkins参数化构建设置 选择参数化构建: 在gradle构建之前,增加执行shell的步骤: 把新增的shell框挪到gradle构建之前, 最后保存 …

【代码随想录训练营第42期 Day59打卡 - 图论Part9 - Bellman-Ford算法

目录 一、Bellman-Ford算法 定义 特性 伪代码实现 二、经典题目 题目:卡码网 94. 城市间货物运输 I 题目链接 题解: Bellman-Ford算法 三、小结 一、Bellman-Ford算法 定义 Bellman-Ford算法是一个迭代算法,它可以处理包含负权边的…

深入解析Transformer原理

在自然语言处理(NLP)领域,Transformer架构的出现无疑是一个里程碑式的进展。从Google的BERT到OpenAI的GPT系列,Transformer已经成为许多前沿AI模型的核心。今天,我们就来深入探讨Transformer的原理,帮助你更…

CleanMyMac 5 for Mac 最新中文破解版下载 系统优化垃圾清理工具

今天给大家带来的是CleanMyMac最新款CleanMyMac 5,它是一个全面的Mac清理和维护工具,通过提供多项强大的功能,帮助用户简化日常维护任务,提升系统性能,同时保护个人隐私和安全。无论是新手还是经验丰富的Mac用户&#…

Linux进程等待 | 程序替换

进程终止 一个进程退出了,无非只有三种情况: 代码跑完了,结果正确代码跑完了,结果不正确代码没跑完,程序异常退出了 代码跑完了,我们可以通过退出码获取其结果是否正确,(这个退出…

Qt 模型视图(四):代理类QAbstractItemDelegate

文章目录 Qt 模型视图(四):代理类QAbstractItemDelegate1.基本概念1.1.使用现有代理1.2.一个简单的代理 2.提供编辑器3.向模型提交数据4.更新编辑器的几何图形5.编辑提示 Qt 模型视图(四):代理类QAbstractItemDelegate ​ 模型/视图结构是一种将数据存储和界面展示分离的编程方…

手写流程图元素检测系统源码分享

手写流程图元素检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Comput…

安装WINDOWS微软商店已下架的WSL系统,以UBUNTU 16.04 为例

下载WSL系统 方法1:POWERSHELL 用powershell下载 PowerShell Invoke-WebRequest -Uri https://aka.ms/wsl-ubuntu-1604 -OutFile Ubuntu.appx -UseBasicParsing 1 如果下载时间很长,可以这样把进度条关闭: $ProgressPreference Silentl…

Vue特性

Vue概念 Soc原则:关注点分离原则 Vue 的核心库只关注视图层,方便与第三方库或既有项目整合 Model(模型):表示应用程序的核心数据和业务逻辑。模型通常包含数据和与数据相关的操作。它独立于视图和视图模型&#xff…

Rust表达一下中秋祝福,群发问候!

一、Rust表达一下中秋祝福 在Rust中,表达中秋佳节的祝福可以通过定义一个包含祝福语的字符串变量,并使用标准输出函数来打印这个字符串。以下是一个简单的Rust程序示例,用于展示如何用Rust编写并打印中秋佳节的祝福语: fn main()…

3谐振功率放大器的实际电路设计

1原理电路 下图是谐振功率放大器的原理电路,如果我们照着下图搭一个电路,会发现它可能实现不了功率放大?这是为什么? 2实际电路设计 2.1要注意直流馈电线路 馈电原则(馈电供电): 1)保证直流电流分量流过直流电源&…

wordpress源码资源站整站打包32GB数据,含6.7W条资源数据

源码太大了,足足32gb,先分享给大家。新手建立资源站,直接用这个代码部署一下,数据就够用了。辅助简单做下seo,一个新站就OK了。 温馨提示:必须按照顺序安装 代码下载

【Linux】理解和解释shell命令的工具

🐚作者简介:花神庙码农(专注于Linux、WLAN、TCP/IP、Python等技术方向)🐳博客主页:花神庙码农 ,地址:https://blog.csdn.net/qxhgd🌐系列专栏:C语言编程&…

阿德里安·欧拉博士Dr Adrian Euler

阿德里安欧拉博士 金融学副教授 https://apps.dur.ac.uk/biography/image/777 屬属 联系商学院金融学副教授 传 杜伦大学商学院金融学副教授(教学)阿德里安欧拉博士是一位金融理论家和实践家,在行业和高等教育实践方面拥有丰富的经验 - 教学、…