当前位置: 首页 > article >正文

图解深度学习 - 基于梯度的优化(梯度下降)

在模型优化过程中,我们曾尝试通过手动调整单个标量系数来观察其对损失值的影响。具体来说,当初始系数为0.3时,损失值为0.5。随后,我们尝试增加系数至0.35,发现损失值上升至0.6;相反,当系数减小至0.25时,损失值下降至0.4。这一实验结果表明,在该特定情境下,减小系数值有助于降低模型的损失值。

然而,这种方法在实际应用中非常低效,因为模型通常包含大量的系数(可能达到上千个甚至上百万个),对每个系数进行两次前向传播来计算不同取值下的损失值,计算成本极高。

为了解决这个问题,引入了梯度下降法作为一种更高效的优化方法。梯度下降法通过计算损失函数对每个系数的梯度(即损失值对系数的导数),能够指导我们如何调整每个系数以最小化损失值,而无需对每个系数进行多次前向传播试验。

图片


资料分享

为了方便大家学习,我整理了一份深度学习资料+80G人工智能资料包(如下图)

不仅有入门级教程,配套课件,还有进阶实战,源码数据集,更有面试题帮你提升~

需要的兄弟可以按照这个图的方式免费获取


一、梯度下降

梯度下降(Gradient Descent是什么梯度下降是一种通过迭代计算损失函数梯度并沿其反方向更新参数以最小化损失值的优化算法。

梯度下降法基于这样一个观察:如果一个函数在某点处可微且有定义,那么函数在该点沿着梯度的反方向下降最快。因此,算法从初始估计的参数点开始,通过计算损失函数的梯度,并沿着梯度的反方向进行迭代搜索,逐步接近函数的局部极小值。

  1. 初始化参数:选择一个起始点作为初始参数,这些参数可以是任意值或随机选择的值。

  2. 计算梯度:计算当前参数点处的损失函数的梯度。梯度是一个向量,表示损失函数在每个参数维度上的变化率。

  3. 更新参数:使用梯度信息来更新参数,以使损失函数的值减小。这通常是通过沿着梯度的反方向进行调整来实现的,调整的大小由学习率决定

  4. 迭代更新:重复计算梯度和更新参数的步骤,直到满足停止准则,如达到预设的最大迭代次数或损失函数值减小到足够小的值。

图片

“一图 + 一句话”彻底搞懂梯度下降。

“梯度下降是一种通过迭代计算损失函数梯度并沿其反方向调整参数,以最小化损失值的优化算法,它避免了手动调整每个参数的繁琐和高昂计算成本

图片


二、BGD、SGD、MBGD

梯度下降算法有哪些批量梯度下降(BGD)利用全部数据计算梯度,收敛快但计算量大;随机梯度下降(SGD)每次仅使用一个样本,计算量小但收敛慢且可能震荡;小批量梯度下降(MBGD)则是两者的折中,选择部分样本计算梯度,既降低了计算量又保持了较快的收敛速度。

图片

1. 批量梯度下降(Batch Gradient Descent,BGD):在每次迭代中使用全部的训练数据来计算梯度,然后更新模型参数。

  • 优点:收敛速度相对较快,可以利用矩阵运算加速计算,且在凸优化问题中能保证收敛到全局最优解。

  • 缺点:在处理大规模数据集时,计算梯度的时间和空间复杂度较高,内存使用量可能过大。

2. 随机梯度下降(Stochastic Gradient Descent,SGD):在每次迭代中随机选择一个样本来计算梯度,然后更新模型参数。

  • 优点:计算梯度的时间和空间复杂度较低,适用于处理大规模数据集,且能跳出局部最优解(因为每次更新参数的方向不一定是相同的)。

  • 缺点:收敛速度较慢,且可能会出现震荡现象,对于稠密数据集的计算速度可能较慢。

3. 小批量梯度下降(Mini-Batch Gradient Descent):在每次迭代中选择一小部分样本来计算梯度,然后更新模型参数,是批量梯度下降和随机梯度下降的折中方案。

  • 优点:计算梯度的时间和空间复杂度较低,收敛速度较快,且可以利用矩阵运算的并行性加速计算,同时能跳出局部最优解。

  • 缺点:需要手动设置小批量大小,如果选择不当可能会影响收敛速度和精度。对于大规模、稀疏或实时数据流问题,其计算效率可能不如SGD,但比BGD要好。

图片

“一图 + 一句话”彻底搞懂BGD、SGD、MBGD。

“ 梯度下降算法主要包括批量梯度下降(BGD,利用全部数据,收敛快但计算量大)随机梯度下降(SGD,每次仅用一个样本,计算量小但收敛慢且可能震荡)小批量梯度下降(MBGD,部分样本折中方案,既降低计算量又保持较快收敛速度)

图片

相关文章:

图解深度学习 - 基于梯度的优化(梯度下降)

在模型优化过程中,我们曾尝试通过手动调整单个标量系数来观察其对损失值的影响。具体来说,当初始系数为0.3时,损失值为0.5。随后,我们尝试增加系数至0.35,发现损失值上升至0.6;相反,当系数减小至…...

MySql--定义表存储引擎、字符集和排序规则

示例: CREATE TABLE users (id INT PRIMARY KEY,name VARCHAR(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci,email VARCHAR(100) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COLLATEutf8mb4_0900_ai_ci;注意事项: 字符集和排序规则可以按列覆盖表…...

【部署】在离线服务器的docker容器下升级dify-import程序

回到目录 在离线服务器的docker容器下升级dify-import程序 dify 0.1.0-release 变化很大,重构整个项目代码并且增加制度类txt文件知识库父子分段支持,详见 读取制度类txt文件导入dify的父子分段知识库(20250526发布). 。下面是kylin Linux环境下&#…...

优化版本,增加3D 视觉 查看前面的记录

上图先 运来的超出发表上限,重新发。。。 #11:06:57Current_POS_is: X:77Y:471Z:0U:-2 C:\Log\V55.txt import time import tkinter as tk from tkinter import messagebox from PIL import Image, ImageTk import socket import threading from date…...

写作-- 复合句练习

文章目录 练习 11. 家庭的支持和老师的指导对学生的学术成功有积极影响。2. 缺乏准备和未能适应通常会导致在挑战性情境中的糟糕表现。3. 吃垃圾食品和忽视锻炼可能导致严重的健康问题,因此人们应注重保持均衡的生活方式。4. 昨天的大雨导致街道洪水泛滥,因此居民们迁往高地以…...

WWW22-可解释推荐|用于推荐的神经符号描述性规则学习

论文来源:WWW 2022 论文链接:https://web.archive.org/web/20220504023001id_/https://dl.acm.org/doi/pdf/10.1145/3485447.3512042 最近读到一篇神经符号集成的论文24年底TOIS的,神经符号集成是人工智能领域中,将符号推理与深…...

Linux:shell脚本常用命令

一、设置主机名称 1、查看主机名称 2、用文件的方式更改主机名称 重启后: 3、 通过命令修改主机名 重启后: 二、网络管理命令 1、查看网卡 2、设置网卡 (1)网卡未被设置过时 (2)当网卡被设定&#xff0c…...

专业课复习笔记 11

从今天开始每天下午复习专业课。慢慢复习专业课。目标至少考一个一百分吧。毕竟专业课还是比较难的。要是考不到一百分,我感觉自己就废掉了呢。下面稍微复习一下计组。 复习指令格式和数据通路设计。完全看不懂,真是可恶啊。计组感觉就是死记硬背&#…...

OpenTelemetry × Elastic Observability 系列(一):整体架构介绍

本文是 OpenTelemetry Elastic Observability 系列的第一篇,将介绍 OpenTelemetry Demo 的整体架构,以及如何集成 Elastic 来采集和可视化可观测性数据。后续文章将分别针对不同编程语言,深入讲解 OpenTelemetry 的集成实践。 程序架构 Op…...

STM32高级物联网通信之以太网通讯

目录 以太网通讯基础知识 什么是以太网 互联网和以太网的区别 1)概念与范围 (1)互联网 (2)以太网 2)技术特点 (1)互联网 (2)以太网 3)应…...

从Java的Jvm的角度解释一下为什么String不可变?

从Java的Jvm的角度解释一下为什么String不可变? 从 JVM 的角度看,Java 中 String 的不可变性是由多层次的机制共同保障的,这些设计涉及内存管理、性能优化和安全保障: 1. JVM 内存模型与字符串常量池 字符串常量池(St…...

从零开始的数据结构教程(四) ​​图论基础与算法实战​​

🌐 标题一:图的表示——六度空间理论如何用代码实现? 核心需求 图(Graph)是用于表达实体间关系的强大数据结构,比如社交网络中的好友关系,或者城市路网的交叉路口连接。关键在于如何高效存储和…...

历年西安交通大学计算机保研上机真题

2025西安交通大学计算机保研上机真题 2024西安交通大学计算机保研上机真题 2023西安交通大学计算机保研上机真题 在线测评链接:https://pgcode.cn/school 计算圆周率近似值 题目描述 根据公式 π / 4 1 − 1 / 3 1 / 5 − 1 / 7 … \pi / 4 1 - 1/3 1/5 - …...

可视化与动画:构建沉浸式Vue应用的进阶实践

在现代Web应用中&#xff0c;高性能可视化和流畅动画已成为提升用户体验的核心要素。本节将深入探索Vue生态中的可视化与动画技术&#xff0c;分享专业级解决方案与最佳实践。 一、 Canvas高性能渲染体系 01、Konva.js流程图引擎深度优化 <template><div class"…...

Python |GIF 解析与构建(3):简单哈希压缩256色算法

Python &#xff5c;GIF 解析与构建&#xff08;3&#xff09;&#xff1a;简单哈希压缩256色算法 目录 Python &#xff5c;GIF 解析与构建&#xff08;3&#xff09;&#xff1a;简单哈希压缩256色算法 一、算法性能表现 二、算法核心原理与实现 &#xff08;一&#xf…...

蓝桥杯2114 李白打酒加强版

问题描述 话说大诗人李白, 一生好饮。幸好他从不开车。 一天, 他提着酒显, 从家里出来, 酒显中有酒 2 斗。他边走边唱: 无事街上走&#xff0c;提显去打酒。 逢店加一倍, 遇花喝一斗。 这一路上, 他一共遇到店 N 次, 遇到花 M 次。已知最后一次遇到的是花, 他正好把酒喝光了。…...

基本数据指针的解读-C++

1、引言 笔者认为对于学习指针要弄清楚如下问题基本可以应付大部分的场景&#xff1a; ① 指针是什么&#xff1f; ② 指针的类型是什么&#xff1f; ③ 指针指向的类型是什么&#xff1f; ④ 指针指向了哪里&#xff1f; 2、如何使用指针 使用时的步骤如下&#xff1a; ① …...

Android Studio里的BLE数据接收策略

#本人是初次接触Android蓝牙开发&#xff0c;若有不对地方&#xff0c;欢迎指出。 #由于是讲接收数据策略(其中还包含数据发送的部分策略)&#xff0c;因此其他问题部分不会讲述&#xff0c;只描述数据接收。 简介(对于客户端---手机端) 博主在处理数据接收的时候&#xff0…...

【Office】Excel两列数据比较方法总结

在Excel中&#xff0c;比较两列数据是否相等有多种方法&#xff0c;以下是常用的几种方式&#xff1a; 方法1&#xff1a;使用公式&#xff08;返回TRUE/FALSE&#xff09; 在空白列&#xff08;如C列&#xff09;输入公式&#xff0c;向下填充即可逐行比较两列&#xff08;如…...

基于多模态脑电、音频与视觉信号的情感识别算法【Nature核心期刊,EAV:EEG-音频-视频数据集】

简述 理解情感状态对于开发下一代人机交互界面至关重要。社交互动中的人类行为会引发受感知输入影响的心理生理过程。因此&#xff0c;探索大脑功能与人类行为的努力或将推动具有类人特质人工智能模型的发展。这里原作者推出一个多模态情感数据集&#xff0c;包含42名参与者的3…...

【QueryServer】dbeaver使用phoenix连接Hbase(轻客户端方式)

一、轻客户端连接方式 (推荐) 演示无认证配置方式, 有认证填入下方有认证参数即可 1, 新建连接 → Hadoop/大数据 → Apache Phoenix 2, 手动配置QueryServer驱动: 填入: “类名”, “URL模版”(注意区分有无认证), “端口号”, (勾选无认证) 类名: org.apache.phoenix…...

数据湖 (特点+与数据仓库和数据沼泽的对比讲解)

数据湖就像一个“数据水库”&#xff0c;把企业所有原始数据&#xff08;结构化的表格、半结构化的日志、非结构化的图片/视频&#xff09;原样存储&#xff0c;供后续按需分析。 对比传统数据仓库&#xff1a; 数据仓库数据湖数据清洗后的结构化数据&#xff08;如Excel表格&…...

深入链表剖析:从原理到 C 语言实现,涵盖单向、双向及循环链表全解析

1 引言 在数据结构的学习中&#xff0c;链表是一种基础且极为重要的线性数据结构。与数组不同&#xff0c;链表通过指针将一系列节点连接起来&#xff0c;每个节点包含数据域和指向下一个节点的指针域。这种动态的存储方式使得链表在插入、删除等操作上具有独特的优势。本文将深…...

编码总结如下

VS2019一般的编码是UTF-8编码&#xff0c; win11操作系统的编码可能为GB2312&#xff0c;VS整个工程中使用的都是UTF-8编码&#xff0c;但是在系统内生成的其他文件夹的名字则是系统的编码 如何选择&#xff1f; Qt 项目&#xff1a;优先用 QString 和 QByteArray&#xff08;…...

《算力觉醒!ONNX Runtime + DirectML如何点燃Windows ARM设备的AI引擎》

ONNX Runtime是一个跨平台的高性能推理引擎&#xff0c;它就像是一位精通多种语言的翻译官&#xff0c;能够无缝运行来自不同深度学习框架转化为ONNX格式的模型。这种兼容性打破了框架之间的隔阂&#xff0c;让开发者可以将更多的精力投入到模型的优化和应用中。 从内部机制来…...

[9-1] USART串口协议 江协科技学习笔记(13个知识点)

1 2 3 4全双工就是两个数据线&#xff0c;半双工就是一个数据线 5 6 7 8 9 10 TTL&#xff08;Transistor-Transistor Logic&#xff09;电平是一种数字电路中常用的电平标准&#xff0c;它使用晶体管来表示逻辑状态。TTL电平通常指的是5V逻辑电平&#xff0c;其中&#xff1a;…...

Oracle基础知识(五)——ROWID ROWNUM

目录 一、ROWID 伪列 二、ROWNUM——限制查询结果集行数 1.ROWNUM使用介绍 2.使用ROWNUM进行分页查询 3.使用ROWNUM查看薪资前五位的员工 4.查询指定条数直接的数据 三、ROWNUM与ROWID不同 一、ROWID 伪列 表中的每一行在数据文件中都有一个物理地址&#xff0c;ROWID…...

简述synchronized和java.util.concurrent.locks.Lock的异同 ?

主要相同点&#xff1a; Lock能完成synchronized所实现的所有功能。 主要不同点&#xff1a; Lock有比synchronized更精确的线程语义和更好的性能。synchronized会自动释放锁&#xff0c;而Lock一定要求程序员手工释放&#xff0c;并且必须在finally从句中释放Lock还有更强大…...

OpenCV CUDA模块直方图计算------在 GPU 上计算图像直方图的函数calcHist()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 OpenCV 的 CUDA 模块 中用于在 GPU 上计算图像直方图的一个函数。 计算单通道 8-bit 图像的灰度直方图&#xff08;Histogram&#xff09;。 该函…...

EMS只是快递那个EMS吗?它跟能源有什么关系?

在刚刚落幕的深圳人工智能终端展上&#xff0c;不少企业展示了与数字能源相关的技术和服务&#xff0c;其中一项关键系统——EMS&#xff08;Energy Management System&#xff0c;能量管理系统&#xff09;频频亮相。这个看似低调的名字&#xff0c;实际上正悄然成为未来能源管…...