【科研相关知识】梯度下降算法(Gradient Descent)

  • 梯度下降算法(Gradient Descent)
  • 梯度下降算法几种变体

梯度下降算法(Gradient Descent)

梯度下降算法是一种用于求解函数最小值的一阶优化算法。在机器学习和深度学习中,梯度下降算法被广泛用于模型训练,通过迭代的方式调整模型参数,以最小化损失函数。

在这里插入图片描述

梯度下降算法的基本思想是:在函数的梯度(或者说斜率)指向的方向上,函数值下降得最快。因此,如果我们想要找到函数的最小值,可以从函数的某个初始点出发,沿着梯度的反方向(因为我们要减小函数值)逐步迭代,最终达到函数的局部最小值点。

梯度下降算法的迭代公式通常表示为: x n e w = x o l d − α ∇ f ( x o l d ) x_{new} = x_{old} - \alpha \nabla f(x_{old}) xnew=xoldαf(xold)

其中:

  • x o l d x_{old} xold是当前迭代点的坐标。
  • α \alpha α 是学习率(步长),它决定了在梯度方向上每一步前进的距离。
  • ∇ f ( x o l d ) \nabla f(x_{old}) f(xold) 是函数 f ( x ) f(x) f(x) 在点 x o l d x_{old} xold的梯度,它是一个向量,指向函数增长最快的方向。
  • x n e w x_{new} xnew 是下一个迭代点的坐标。

梯度下降算法几种变体

假设有一个损失函数 J ( θ ) J(\theta) J(θ),其中 θ \theta θ 是模型参数,我们的目标是通过调整 θ \theta θ 来最小化损失函数。

  1. 批量梯度下降(Batch Gradient Descent)

批量梯度下降使用所有训练样本来计算梯度,然后更新参数。其更新规则可以表示为:

θ = θ − α ⋅ ∇ J ( θ ) \theta = \theta - \alpha \cdot \nabla J(\theta) θ=θαJ(θ)

其中, α \alpha α 是学习率, ∇ J ( θ ) \nabla J(\theta) J(θ) 是损失函数 J ( θ ) J(\theta) J(θ) 关于参数 θ \theta θ 的梯度。批量梯度下降的更新规则考虑了所有样本的梯度信息,因此可以保证每次更新的方向是最优的,但计算量较大。

  1. 随机梯度下降(Stochastic Gradient Descent)

随机梯度下降每次只使用一个随机样本来计算梯度,并根据该梯度更新参数。其更新规则可以表示为:

θ = θ − α ⋅ ∇ J ( θ ; x ( i ) , y ( i ) ) \theta = \theta - \alpha \cdot \nabla J(\theta; x^{(i)}, y^{(i)}) θ=θαJ(θ;x(i),y(i))

其中, ( x ( i ) , y ( i ) ) (x^{(i)}, y^{(i)}) (x(i),y(i)) 是随机选择的一个训练样本, ∇ J ( θ ; x ( i ) , y ( i ) ) \nabla J(\theta; x^{(i)}, y^{(i)}) J(θ;x(i),y(i)) 是损失函数 J ( θ ) J(\theta) J(θ) 关于参数 θ \theta θ 在样本 ( x ( i ) , y ( i ) ) (x^{(i)}, y^{(i)}) (x(i),y(i)) 处的梯度。随机梯度下降每次更新只考虑一个样本,因此更新的方向可能不是最优的,但计算量较小。

  1. 小批量梯度下降(Mini-batch Gradient Descent)

小批量梯度下降是批量梯度下降和随机梯度下降的折中,每次更新使用一小部分(批量)样本来计算梯度,并根据平均梯度更新参数。其更新规则可以表示为:
θ = θ − α ⋅ 1 ∣ B ∣ ∑ ( x ( i ) , y ( i ) ) ∈ B ∇ J ( θ ; x ( i ) , y ( i ) ) \theta = \theta - \alpha \cdot \frac{1}{|\mathcal{B}|} \sum_{(x^{(i)}, y^{(i)}) \in \mathcal{B}} \nabla J(\theta; x^{(i)}, y^{(i)}) θ=θαB1(x(i),y(i))BJ(θ;x(i),y(i))
其中, B \mathcal{B} B 是随机选择的小批量样本集合, ∣ B ∣ |\mathcal{B}| B 是批量大小, ∇ J ( θ ; x ( i ) , y ( i ) ) \nabla J(\theta; x^{(i)}, y^{(i)}) J(θ;x(i),y(i)) 是损失函数 J ( θ ) J(\theta) J(θ) 关于参数 θ \theta θ 在批量样本 ( x ( i ) , y ( i ) ) (x^{(i)}, y^{(i)}) (x(i),y(i)) 处的梯度。小批量梯度下降综合了批量梯度下降和随机梯度下降的优点,既可以保证一定的更新稳定性,又可以减少计算量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/803255.shtml

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

相关文章

常见的mq产品和优点

常见的mq产品和优点 一、什么是mq? MQ全称 Message Queue(消息队列),是在消息的传输过程中保存消息的容器。多用于分布式系统之间进行通信,解耦。 二、常见的mq产品 RabbitMQ、RocketMQ、ActiveMQ、Kafka、ZeroMQ、MetaMq …

【学习】注意力机制(Attention)和 自注意力机制(self-Attention)

参考B站:09 Transformer 之什么是注意力机制(Attention) 1. 注意力机制(Attention) 红色的是科学家们发现,如果给你一张这个图,你眼睛的重点会聚焦在红色区域 人–》看脸 文章看标题 段落看…

弹幕功能1

今天看pure-admin的时候发现有个弹幕功能 GitHub - hellodigua/vue-danmaku: 基于 Vue 的弹幕交互组件 | A danmaku component for Vue

业主看完当场签约的神仙地产大屏,搞物业的你不来get同款么

各行各业都有可视化大屏的应用场景,不少同志曾私戳我:能不能给我XX行业的大屏示例哇,我展示的指标领导怎么都不满意哇! 于是俺在行业顾问大哥那苦苦哀求,终于给大家带来这个地产行业的“营销战图大屏”方案&#xff0…

《QT实用小工具·二十一》鼠标十字线

1、概述 源码放在文章末尾 该项目实现了界面绘制十字线并跟随鼠标移动的过程&#xff0c;下面是demo演示&#xff1a; 项目部分代码如下&#xff1a; #ifndef WIDGET_H #define WIDGET_H#include <QWidget>namespace Ui { class Widget; }class Widget : public QWidg…

C++类与对象中(个人笔记)

类与对象中 类的6个默认成员函数1.构造函数1.1特性 2.析构函数2.1特性 3.拷贝构造函数3.1特性 4.赋值运算符重载4.1特性 5.日期类的实现6.const成员6.1const成员的几个问题 7.取地址及const取地址操作符重载 类的6个默认成员函数 如果一个类中什么成员都没有&#xff0c;简称为…

嵌入式学习51-单片机4

知识零碎&#xff1a; nop空指令 CRC校验 为了保证51单片与温度传感18b20 之间的高电平 采用一个上拉电阻改变电平的高低 温度寄存器原理

Jackson 2.x 系列【15】序列化器 JsonSerializer

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Jackson 版本 2.17.0 源码地址&#xff1a;https://gitee.com/pearl-organization/study-jaskson-demo 文章目录 1. 概述2. 方法2.1 构造2.2 序列化2.3 其他 3. 实现类3.1 StdSerializer3.1.1 源…

因为使用ArrayList.removeAll(List list)导致的机器重启

背景 先说一下背景&#xff0c;博主所在的业务组有一个核心系统&#xff0c;需要同步两个不同数据源给过来的数据到redis中&#xff0c;但是每次同步之前需要过滤掉一部分数据&#xff0c;只存储剩下的数据。每次同步的数据与需要过滤掉的数据量级大概在0-100w的数据不等。 由…

tmux 替换 nohup

替换方案 tmux 训练PyTorch模型的时候一个基本步骤&#xff1a; [terminal]: tmux new -s model-ft # 创建一个会话&#xff0c;并设置会话名:model-ft [tmux]: conda activate your_env # 在tmux会话中&#xff0c;我们激活我们要使用的conda环境 [tmux]: pyth…

JVM_垃圾收集器

GC垃圾收集器 文章目录 GC垃圾收集器GC垃圾回收算法和垃圾收集器关系GC算法主要有以下几种四种主要的垃圾收集器SerialParallelCMSG1垃圾收集器总结查看默认垃圾收集器 默认垃圾收集器有哪些各垃圾收集器的使用范围部分参数说明 新生代下的垃圾收集器并行GC(ParNew)并行回收GC&…

【C++航海王:追寻罗杰的编程之路】探寻实用的调试技巧

目录 1 -> 什么是bug&#xff1f; 2 -> 调试是什么&#xff1f;有多重要&#xff1f; 2.1 -> 调试是什么&#xff1f; 2.2 -> 调试的基本步骤 2.3 -> Debug和Release的介绍 3 -> Windows环境调试介绍 3.1 -> 调试环境的准备 3.2 -> 学会快捷键…

:-1: error: Project ERROR: msvc-version.conf loaded but QMAKE_MSC_VER isn‘t set

qt报错 错误1 : error: Project ERROR: msvc-version.conf loaded but QMAKE_MSC_VER isnt set 错误1 : error: Project ERROR: msvc-version.conf loaded but QMAKE_MSC_VER isn’t set bug的现象:qtcreator无法通过点击pro文件来打开项目 方法:参考 根据上面的参考,我么找到…

【React】React hooks 清除定时器并验证效果

React hooks 清除定时器并验证效果 目录结构如下useTime hookClock.tsx使用useTime hookApp.tsx显示Clock组件显示时间&#xff08;开启定时器&#xff09;隐藏时间&#xff08;清除定时器&#xff09; 总结参考 目录结构如下 useTime hook // src/hooks/common.ts import { u…

三角测量法恢复深度

参考&#xff1a;单目vo中的深度确定方法--三角测量_单目相机三角测量-CSDN博客 方法一&#xff1a;直接法 由于我们已经通过本质矩阵分解或者单应矩阵分解获得了R与t&#xff0c;此时想求的是两个特征点的深度 bool depthFromTriangulation(const SE3& T_search_ref,co…

电脑开机提示“no bootable device”,无法进入系统

当您的Windows 10电脑开机时提示“no bootable device”,这意味着计算机无法找到一个可以启动操作系统的设备。这个问题通常与硬件连接、BIOS设置、硬盘问题、引导扇区故障或系统文件损坏等有关。以下是一系列详细的解决步骤: 检查硬件连接:关闭电脑,拔掉电源线,打开机箱检…

Flutter之TabBar篇

总结了一下项目中用到的几种TabBar&#xff0c;针对不同的样式&#xff0c;有采用系统提供的&#xff0c;也有三方插件提供的&#xff0c;也有自定义的&#xff0c;效果如下&#xff08;后续如果遇到新的样式&#xff0c;会不间断地记录更新&#xff0c;避免重复造轮子…&#…

性能分析-数据库与磁盘知识

数据库 数据库&#xff0c;其实是数据库管理系统dbms。 数据库管理系统&#xff0c; 常见&#xff1a; 关系型数据库&#xff1a; mysql、pg、 库的表&#xff0c;表与表之间有关联关系&#xff1b; 表二维表统一标准的SQL&#xff08;不局限于CRUD&#xff09;非关系型数据…

ssm034学生请假系统+jsp

学生请假系统设计与实现 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本学生请假系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处…

鸿蒙HarmonyOS开发实例:【简单时钟】

简单时钟 介绍 本示例通过使用[ohos.display]接口以及Canvas组件来实现一个简单的时钟应用。 效果预览 主页 使用说明 1.界面通过setInterval实现周期性实时刷新时间&#xff0c;使用Canvas绘制时钟&#xff0c;指针旋转角度通过计算得出。 例如&#xff1a;"2 * M…