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

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

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


文章目录

  • 【梯度下降|链式法则】卷积神经网络中的参数是如何传输和更新的?
  • [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)来计算梯度并更新参数,兼具批量和随机梯度下降的优点。

总结

  • 梯度是损失函数对模型参数的偏导数,用于指导模型参数的更新方向。
  • 梯度下降法是一种通过沿梯度反方向更新参数来最小化损失函数的优化方法。
  • 链式法则 是神经网络中反向传播算法的基础,用于逐层计算梯度。
    通过梯度下降和链式法则,神经网络能够有效地学习复杂的非线性关系,从而优化模型的表现。
相关推荐
Jeremy_lf2 分钟前
【生成模型之三】ControlNet & Latent Diffusion Models论文详解
人工智能·深度学习·stable diffusion·aigc·扩散模型
桃花键神40 分钟前
AI可信论坛亮点:合合信息分享视觉内容安全技术前沿
人工智能
野蛮的大西瓜1 小时前
开源呼叫中心中,如何将ASR与IVR菜单结合,实现动态的IVR交互
人工智能·机器人·自动化·音视频·信息与通信
CountingStars6191 小时前
目标检测常用评估指标(metrics)
人工智能·目标检测·目标跟踪
tangjunjun-owen2 小时前
第四节:GLM-4v-9b模型的tokenizer源码解读
人工智能·glm-4v-9b·多模态大模型教程
冰蓝蓝2 小时前
深度学习中的注意力机制:解锁智能模型的新视角
人工智能·深度学习
橙子小哥的代码世界2 小时前
【计算机视觉基础CV-图像分类】01- 从历史源头到深度时代:一文读懂计算机视觉的进化脉络、核心任务与产业蓝图
人工智能·计算机视觉
黄公子学安全2 小时前
Java的基础概念(一)
java·开发语言·python
新加坡内哥谈技术2 小时前
苏黎世联邦理工学院与加州大学伯克利分校推出MaxInfoRL:平衡内在与外在探索的全新强化学习框架
大数据·人工智能·语言模型
程序员一诺2 小时前
【Python使用】嘿马python高级进阶全体系教程第10篇:静态Web服务器-返回固定页面数据,1. 开发自己的静态Web服务器【附代码文档】
后端·python