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

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

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


文章目录

  • 【梯度下降|链式法则】卷积神经网络中的参数是如何传输和更新的?
  • [1. 什么是梯度?](#1. 什么是梯度?)
  • [2.梯度下降法(Gradient Descent)](#2.梯度下降法(Gradient Descent))
  • [3. 链式法则(Chain Rule)](#3. 链式法则(Chain Rule))
  • [4. 梯度下降法的变种](#4. 梯度下降法的变种)
    • [批量梯度下降(Batch Gradient Descent)](#批量梯度下降(Batch Gradient Descent))
    • [随机梯度下降(Stochastic Gradient Descent, SGD)](#随机梯度下降(Stochastic Gradient Descent, SGD))
    • [小批量梯度下降(Mini-batch Gradient Descent)](#小批量梯度下降(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)来计算梯度并更新参数,兼具批量和随机梯度下降的优点。

总结

  • 梯度是损失函数对模型参数的偏导数,用于指导模型参数的更新方向。
  • 梯度下降法是一种通过沿梯度反方向更新参数来最小化损失函数的优化方法。
  • 链式法则 是神经网络中反向传播算法的基础,用于逐层计算梯度。
    通过梯度下降和链式法则,神经网络能够有效地学习复杂的非线性关系,从而优化模型的表现。
相关推荐
维核科技12 小时前
本地优先的 AI:不联网也能跑的模型和智能体
人工智能
七夜zippoe12 小时前
Function Calling 深度解析:从参数定义到错误处理的完整实践
人工智能·ai·agent·function·calling
郝学胜-神的一滴13 小时前
Effective Python 条款 10 :海象运算符_=
开发语言·python·程序人生·开源
wuyk55513 小时前
Python零基础入门第十四章:异常处理(try-except)
开发语言·python
2601_9620781913 小时前
Appium+Python+pytest自动化测试框架详解
自动化测试·python·appium·pytest·移动应用
卷无止境16 小时前
智能体开发环境ADE浅析,编程工具的下一次范式跃迁
后端·python
m0_7345717618 小时前
深入理解人工智能 chatGPT的软件架构
人工智能
飞塔老梅子18 小时前
09. Codex 节省Token ❀ 老梅子学AI
人工智能·ai·token·模型·codex
HyperAI超神经18 小时前
扰动实验+迁移学习,MIT团队推出IRIS,用「指纹」重建单细胞信号传导历史
人工智能·深度学习·机器学习·迁移学习
前沿在线18 小时前
启元机器人亮相外滩大会,探索个人机器人健康服务新场景
人工智能·ai·大模型