深度学习模型组件之优化器--基础优化器(GD、SGD、Mini-batch SGD)
深度学习模型组件之优化器–基础优化器(GD、SGD、Mini-batch SGD)
文章目录
- 深度学习模型组件之优化器--基础优化器(GD、SGD、Mini-batch SGD)
- 1. 梯度下降(Gradient Descent, GD)
- 1.1 基本原理
- 1.2 优点与缺点
- 1.3 GD代码示例
- 2. 随机梯度下降(Stochastic Gradient Descent, SGD)
- 2.1 基本原理
- 2.2 优缺点分析
- 2.3 SGD代码示例
- 3. 小批量梯度下降(Mini-batch SGD)
- 3.1 基本原理
- 3.2 优缺点分析
- 3.3 Mini-batch SGD代码示例
- 4. 总结
在深度学习的训练过程中,优化器扮演着至关重要的角色。如何高效地寻找损失函数的最小值,直接影响模型的训练速度和最终性能。今天我们就来详细探讨三种基础优化方法:梯度下降(Gradient Descent, GD)、随机梯度下降(Stochastic Gradient Descent, SGD)以及小批量梯度下降(Mini-batch SGD)。
1. 梯度下降(Gradient Descent, GD)
1.1 基本原理
梯度下降是优化算法中最直观的方法,其核心思想是沿着当前参数梯度下降的方向,更新参数以减小损失函数。具体更新公式如下:

其中,
θ为模型参数,η是学习率,∇θJ(θ)表示损失函数关于参数的梯度。
1.2 优点与缺点
优点:
- 理论简单、易于理解。
- 在凸优化问题中能够保证收敛到全局最优解。
缺点:
- 每次更新都需要计算整个训练集的梯度,计算开销巨大,尤其在大规模数据集上效率低下。
- 对于非凸问题容易陷入局部最优,且对初始值比较敏感。
1.3 GD代码示例
下面是一个使用 Python 实现简单梯度下降算法的示例:
import numpy as np# 假设我们要最小化 f(x) = x^2
def f(x):return x ** 2def grad_f(x):return 2 * x# 初始化参数
x = 10.0
learning_rate = 0.1
num_iterations = 50for i in range(num_iterations):grad = grad_f(x)x = x - learning_rate * gradprint(f"Iteration {i+1}: x = {x}, f(x) = {f(x)}")
2. 随机梯度下降(Stochastic Gradient Descent, SGD)
2.1 基本原理
随机梯度下降与梯度下降的主要区别在于:SGD 每次只使用一个样本(或一小部分样本)来估计梯度,从而大大减少了每次更新所需的计算量。更新公式类似,但梯度 ∇θJ(θ) 只针对一个样本或一个样本对进行计算,即:

这里:
x(i)和y(i)分别表示第 i 个样本及其对应的标签;∇θJ(θ;x(i),y(i))为基于单个样本计算的梯度。
2.2 优缺点分析
优点:
- 单次更新速度快,计算量小,适合大数据量的训练;
- 更新参数更加频繁,有助于快速跳出局部最优解。
缺点:
- 由于每次更新只依赖单个样本,梯度的估计存在较大噪声,可能导致更新震荡;
- 收敛路径不够平滑,可能需要更多迭代才能达到稳定状态。
2.3 SGD代码示例
下面是一个使用 SGD 的简单实现示例:
import numpy as np# 假设我们有一个样本数据集 X 和对应标签 Y,用于线性回归
X = np.array([1, 2, 3, 4, 5])
Y = np.array([2, 4, 6, 8, 10]) # 真实关系为 y = 2x# 初始化参数
w = 0.0
learning_rate = 0.01
num_iterations = 100for i in range(num_iterations):# 随机选择一个样本idx = np.random.randint(0, len(X))x_i = X[idx]y_i = Y[idx]# 预测值与误差prediction = w * x_ierror = prediction - y_i# 梯度计算(以均方误差损失函数求导)grad = 2 * error * x_iw = w - learning_rate * gradif (i+1) % 10 == 0:print(f"Iteration {i+1}: w = {w}")
3. 小批量梯度下降(Mini-batch SGD)
3.1 基本原理
小批量梯度下降可以看作是 GD 与 SGD 的折中方案:在每次更新中,使用一小部分样本(称为 mini-batch)来估计梯度。这样既保留了梯度下降整体稳定的优势,也减少了计算量,并且在一定程度上降低了 SGD 的噪声。
更新公式仍然为:

其中,∇θJmini−batch(θ) 表示基于小批量样本计算出的梯度平均值。
3.2 优缺点分析
优点:
- 兼顾了计算效率和梯度估计的稳定性。
- 利用向量化运算可以大幅提高计算效率,适合 GPU 并行计算。
缺点:
- 小批量大小的选择对训练效果有较大影响;
- 若 mini-batch 太小,噪声可能依然较大;若太大,则可能失去 SGD 的随机性优势。
3.3 Mini-batch SGD代码示例
下面是一个使用 mini-batch SGD 实现线性回归的示例代码:
import numpy as np# 数据集
X = np.linspace(1, 5, 100)
Y = 2 * X + np.random.randn(100) # 加入一定噪声# 初始化参数
w = 0.0
learning_rate = 0.001
num_iterations = 200
batch_size = 10for i in range(num_iterations):# 随机抽取 mini-batchindices = np.random.choice(len(X), batch_size, replace=False)X_batch = X[indices]Y_batch = Y[indices]# 计算预测值与误差predictions = w * X_batcherrors = predictions - Y_batch# 梯度计算(均方误差损失函数求导)grad = 2 * np.dot(errors, X_batch) / batch_sizew = w - learning_rate * gradif (i+1) % 20 == 0:mse = np.mean(errors ** 2)print(f"Iteration {i+1}: w = {w:.4f}, MSE = {mse:.4f}")
4. 总结
本文介绍了三种基本优化方法:
- 梯度下降(GD):使用整个训练集计算梯度,更新稳定,但计算量大,适合小数据集和理论研究。
- 随机梯度下降(SGD):每次只用一个样本更新,速度快、更新频繁,但容易出现噪声和波动。
- 小批量梯度下降(Mini-batch SGD):使用一小批样本计算平均梯度,兼顾了计算效率和更新稳定性,但需要合理选择批次大小。
下面是三者的对比表格:
| 方法 | 原理 | 优点 | 缺点 |
|---|---|---|---|
| 梯度下降(GD) | 用整个训练集计算梯度 | 更新稳定,理论简单 | 计算量大,速度慢 |
| 随机梯度下降(SGD) | 每次用一个样本计算梯度 | 更新快,适合大数据 | 噪声大,收敛不平滑 |
| 小批量梯度下降(Mini-batch SGD) | 用一小批样本计算平均梯度 | 兼顾速度与稳定性,适合GPU加速 | 需精心调控批次大小 |
相关文章:
深度学习模型组件之优化器--基础优化器(GD、SGD、Mini-batch SGD)
深度学习模型组件之优化器–基础优化器(GD、SGD、Mini-batch SGD) 文章目录 深度学习模型组件之优化器--基础优化器(GD、SGD、Mini-batch SGD)1. 梯度下降(Gradient Descent, GD)1.1 基本原理1.2 优点与缺点…...
使用 AIStor、MLflow 和 KServe 将模型部署到 Kubernetes
在之前几篇关于 MLOps 工具的文章中,我展示了有多少流行的 MLOps 工具跟踪与模型训练实验相关的指标。我还展示了他们如何使用 MinIO 来存储作为模型训练管道一部分的非结构化数据。但是,一个好的 MLOps 工具应该做的不仅仅是管理您的实验、数据集和模型…...
宝塔 Linux 计划任务中添加运行项目网站PHP任务-定时任务
一、指定php版运行, cd /www/wwwroot/www.xxx.com/ && /www/server/php/56/bin/php think timedtasks start >> /tmp/timedtasks.log 2>&1 二、不指定php版 cd /www/wwwroot/www.xxx.com/ && php think timedtasks start >> …...
unity学习64,第3个小游戏:一个2D跑酷游戏
目录 学习参考 素材资源导入 1 创建项目 1.1 创建1个2D项目 1.2 导入素材 2 背景图bg 2.0 bg素材 2.1 创建背景 2.2 修改素材,且修改摄像机等 2.2.1 修改导入的原始prefab素材 2.2.2 对应调整摄像机 2.2.3 弄好背景 2.3 背景相关脚本实现 2.3.1 错误…...
rom定制系列------小米note3 原生安卓15 批量线刷 默认开启usb功能选项 插电自启等
小米Note 3搭载骁龙660处理器,1200万像素广角镜头、俗称大号版的小米6,官方最终版为12.0.1稳定版安卓9的固件。客户需要运行在安卓15的rom。根据原生官网的rom修改一些功能选项。以便客户操作需求。 定制资源说明 根据客户需求采用安卓15原生系统为底包…...
基于开源 AI 大模型、AI 智能名片及 S2B2C 商城小程序源码的个人 IP 用户运营策略研究
摘要:本文深入剖析了个人 IP 运营领域中用户运营的核心地位与关键作用,详细阐述了以拉新、留存和促活为主要方式的用户运营策略,旨在实现对用户的有效管理和用户价值的全面提升,进而延长用户生命周期,推动用户向消费者…...
什么是:马尔可夫博弈
什么是:马尔可夫博弈 马尔可夫博弈(Markov Game),也被称为随机博弈(Stochastic Game),是马尔可夫决策过程(MDP)在多智能体环境下的扩展。它描述了多个智能体在一个环境中相互作用的动态过程,每个智能体的决策不仅取决于当前环境状态,还会影响其他智能体的决策以及环…...
【探商宝】大数据企业销售线索平台:销售型公司的战略转型引擎
一、市场现状与销售型公司的核心痛点 在数字经济高速发展的2025年,全球企业获客成本较五年前增长超过300%,而B2B销售线索的平均转化率仍徘徊在15%-20%之间。这一矛盾背后,折射出传统销售模式的三重困境: 数据孤岛导致决策滞后…...
用Ruby的Faraday库来进行网络请求抓取数据
在 Ruby 中,Faraday 是一个非常强大的 HTTP 客户端库,它可以用于发送 HTTP 请求并处理响应。你可以使用 Faraday 来抓取网页数据,处理 API 请求等任务。下面我将向你展示如何使用 Faraday 库进行网络请求,抓取数据并处理响应。 1.…...
Ubuntu的软件源
百度搜索 ubuntu清华镜像源 根据下面的网页,选择对应Ubuntu操作系统的源,一定要对应!!! https://mirror.tuna.tsinghua.edu.cn/help/ubuntu/上图的系统是16.04 xenial,这时就一定要使用16.04 xenial的源 …...
笔记五:C语言编译链接
Faye:孤独让我们与我们所爱的人相处的每个瞬间都无比珍贵,让我们的回忆价值千金。它还驱使你去寻找那些你在我身边找不到的东西。 ---------《寻找天堂》 目录 一、编译和链接的介绍 1.1 程序的翻译环境和执行环境 1.1.1 翻译环境 1.1.2 运行环境 …...
GitCode 助力 vue3-element-admin:开启中后台管理前端开发新征程
源码仓库: https://gitcode.com/youlai/vue3-element-admin 后端仓库: https://gitcode.com/youlai/youlai-boot 开源助力,开启中后台快速开发之旅 vue3-element-admin 是一款精心打造的免费开源中后台管理前端模板,它紧密贴合…...
SyntaxError: Invalid regular expression flag “x“
🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》 🍚 蓝桥云课签约作者、…...
HiveServer2与Spark ThriftServer详细介绍对比
HiveServer2与Spark ThriftServer详细介绍对比 1、概述 1.1 HiveServer2 是 Apache Hive 提供的基于 Thrift 的服务进程,用于让远程客户端执行 Hive SQL 查询 ([一起了解一下HiveServer2 - zourui4271 - 博客园]。它是早期 HiveServer1 的改进版本,引入…...
ESP32S3N16R8驱动ST7701S屏幕(vscode+PlatfoemIO)
1.开发板配置 本人开发板使用ESP32S3-wroom1-n16r8最小系统板 由于基于vscode与PlatformIO框架开发,无espidf框架,因此无法直接烧录程序,配置开发板参数如下: 在platformio.ini文件中,配置使用esp32-s3-devkitc-1开发…...
软考初级程序员知识点汇总
以下是计算机技术与软件专业技术资格(水平)考试(简称“软考”)中 程序员(初级) 考试的核心知识点汇总,涵盖考试大纲的主要方向,帮助你系统复习: 一、计算机基础 计算机组…...
亲测解决笔记本触摸板使用不了Touchpad not working
这个问题可以通过FnFxx来解决,笔记本键盘上Fxx会有一个触摸板图标。如果不行应该玉藻设置中关了,打开即可。 解决办法 在蓝牙,触摸板里打开即可。 Turn it on in settings。...
13.数据结构(软考)
13.数据结构(软考) 13.1:线性表 13.1.1 顺序表 顺序存储方式:数组的内存是连续分配的并且是静态分配的,即在使用数组之前需要分配固定大小的空间。 时间复杂度: 读:O(1) 查询:1,(n1)/2&#x…...
开发环境搭建-完善登录功能
一.完善登录功能 我们修改密码为md5中的格式,那么就需要修改数据库中的密码和将从前端获取到的密码转化成md5格式,然后进行比对。比对成功则登录成功,失败则禁止登录。 二.md5格式 使用DigestUtils工具类进行md5加密,调用md4Dig…...
HAL库,配置adc基本流程
1. 初始化阶段---cubemx (1) GPIO初始化 函数:HAL_GPIO_Init() 作用:配置ADC引脚为模拟输入模式。 代码示例: // 使能GPIOA时钟 __HAL_RCC_GPIOA_CLK_ENABLE();// 配置PA1为模拟输入 GPIO_InitTypeDef GPIO_InitStruct {0}; GPIO_InitStr…...
多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度
一、引言:多云环境的技术复杂性本质 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时,基础设施的技术债呈现指数级积累。网络连接、身份认证、成本管理这三大核心挑战相互嵌套:跨云网络构建数据…...
日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻
在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...
(十)学生端搭建
本次旨在将之前的已完成的部分功能进行拼装到学生端,同时完善学生端的构建。本次工作主要包括: 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...
Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...
如何在看板中体现优先级变化
在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...
QT: `long long` 类型转换为 `QString` 2025.6.5
在 Qt 中,将 long long 类型转换为 QString 可以通过以下两种常用方法实现: 方法 1:使用 QString::number() 直接调用 QString 的静态方法 number(),将数值转换为字符串: long long value 1234567890123456789LL; …...
今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存
文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...
【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看
文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...
Elastic 获得 AWS 教育 ISV 合作伙伴资质,进一步增强教育解决方案产品组合
作者:来自 Elastic Udayasimha Theepireddy (Uday), Brian Bergholm, Marianna Jonsdottir 通过搜索 AI 和云创新推动教育领域的数字化转型。 我们非常高兴地宣布,Elastic 已获得 AWS 教育 ISV 合作伙伴资质。这一重要认证表明,Elastic 作为 …...
消防一体化安全管控平台:构建消防“一张图”和APP统一管理
在城市的某个角落,一场突如其来的火灾打破了平静。熊熊烈火迅速蔓延,滚滚浓烟弥漫开来,周围群众的生命财产安全受到严重威胁。就在这千钧一发之际,消防救援队伍迅速行动,而豪越科技消防一体化安全管控平台构建的消防“…...
