5种梯度下降法的公式

5种梯度下降法的公式推演:
在这里插入图片描述

1. 梯度下降 (Gradient Descent)

梯度下降法的更新公式为:

θ t + 1 = θ t − η ∇ θ J ( θ ) \theta_{t+1} = \theta_t - \eta \nabla_\theta J(\theta) θt+1=θtηθJ(θ)

其中, θ t \theta_t θt 是当前参数, η \eta η 是学习率, J ( θ ) J(\theta) J(θ) 是损失函数, ∇ θ J ( θ ) \nabla_\theta J(\theta) θJ(θ) 是损失函数关于参数的梯度。

通俗解释:这就像是一个人在下山,他每一步都选择最陡峭的方向(梯度的反方向)走一步,直到走到山脚(损失函数的最小值)。

2. Momentum

Momentum的更新公式为:

v t = γ v t − 1 + η ∇ θ J ( θ ) v_t = \gamma v_{t-1} + \eta \nabla_\theta J(\theta) vt=γvt1+ηθJ(θ)
θ t + 1 = θ t − v t \theta_{t+1} = \theta_t - v_t θt+1=θtvt

其中, v t v_t vt 是速度, γ \gamma γ 是动量因子。

通俗解释:这就像是一个人在滑冰,他每一步都会考虑上一步的速度和方向,然后再根据当前的梯度来调整自己的速度和方向。这样可以让他在下山的过程中更加平稳和快速。

3. AdaGrad

AdaGrad的更新公式为:

G t = G t − 1 + ∇ θ J ( θ ) ⊙ ∇ θ J ( θ ) G_t = G_{t-1} + \nabla_\theta J(\theta) \odot \nabla_\theta J(\theta) Gt=Gt1+θJ(θ)θJ(θ)
θ t + 1 = θ t − η G t + ϵ ⊙ ∇ θ J ( θ ) \theta_{t+1} = \theta_t - \frac{\eta}{\sqrt{G_t + \epsilon}} \odot \nabla_\theta J(\theta) θt+1=θtGt+ϵ ηθJ(θ)

其中, G t G_t Gt 是梯度平方的累积, ⊙ \odot 表示元素乘法, ϵ \epsilon ϵ 是一个很小的数,用来防止分母为0。

通俗解释:这就像是一个人在下山,他每一步都会根据之前走过的路的坡度(梯度的平方)来调整自己的步伐大小。如果之前走过的路很陡峭,他就会走得小心一些(步伐小一些)。

4. RMSProp

RMSProp的更新公式为:

E [ g 2 ] t = γ E [ g 2 ] t − 1 + ( 1 − γ ) ∇ θ J ( θ ) ⊙ ∇ θ J ( θ ) E[g^2]_t = \gamma E[g^2]_{t-1} + (1 - \gamma) \nabla_\theta J(\theta) \odot \nabla_\theta J(\theta) E[g2]t=γE[g2]t1+(1γ)θJ(θ)θJ(θ)
θ t + 1 = θ t − η E [ g 2 ] t + ϵ ⊙ ∇ θ J ( θ ) \theta_{t+1} = \theta_t - \frac{\eta}{\sqrt{E[g^2]_t + \epsilon}} \odot \nabla_\theta J(\theta) θt+1=θtE[g2]t+ϵ ηθJ(θ)

其中, E [ g 2 ] t E[g^2]_t E[g2]t 是梯度平方的指数移动平均。

通俗解释:这就像是一个人在下山,他每一步都会根据最近走过的路的坡度(梯度的平方)来调整自己的步伐大小,而不是像AdaGrad那样考虑整个历史。这样可以让他更加适应当前的地形。

5. Adam

Adam的更新公式为:

m t = β 1 m t − 1 + ( 1 − β 1 ) ∇ θ J ( θ ) m_t = \beta_1 m_{t-1} + (1 - \beta_1) \nabla_\theta J(\theta) mt=β1mt1+(1β1)θJ(θ)
v t = β 2 v t − 1 + ( 1 − β 2 ) ∇ θ J ( θ ) ⊙ ∇ θ J ( θ ) v_t = \beta_2 v_{t-1} + (1 - \beta_2) \nabla_\theta J(\theta) \odot \nabla_\theta J(\theta) vt=β2vt1+(1β2)θJ(θ)θJ(θ)
m ^ t = m t 1 − β 1 t \hat{m}_t = \frac{m_t}{1 - \beta_1^t} m^t=1β1tmt
v ^ t = v t 1 − β 2 t \hat{v}_t = \frac{v_t}{1 - \beta_2^t} v^t=1β2tvt
θ t + 1 = θ t − η v ^ t + ϵ m ^ t \theta_{t+1} = \theta_t - \frac{\eta}{\sqrt{\hat{v}_t} + \epsilon} \hat{m}_t θt+1=θtv^t +ϵηm^t

其中, m t m_t mt v t v_t vt 分别是梯度和梯度平方的指数移动平均, β 1 \beta_1 β1 β 2 \beta_2 β2 是衰减率, m ^ t \hat{m}_t m^t v ^ t \hat{v}_t v^t 是对 m t m_t mt v t v_t vt 的偏差修正。

通俗解释:Adam就像是一个结合了Momentum和RMSProp优点的下山者。他既考虑了之前的速度和方向(Momentum),又根据最近走过的路的坡度来调整自己的步伐大小(RMSProp)。而且,他还会对自己的速度和坡度进行偏差修正,让自己更加准确地朝着山脚前进。

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

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

相关文章

Tomcat服务器

1.Tomcat定义以及作用 Web服务器是一个应用程序(软件),对HTTP协议的操作进行封装,使得程序员不必直接对协议进行操作。(不用程序员自己写代码去解析http协议规则,比如不用考虑响应码的问题,以及响应数据应该如何写),让…

ZK学习笔记

ZK 一.基本概念 Zookeeper是⼀个开源的分布式协调服务,其设计⽬标是将那些复杂的且容易出错的分布式⼀致性服务封装起来,构成⼀个⾼效可靠的原语集,并以⼀些简单的接⼝提供给⽤户使⽤。 zookeeper是⼀个典型的分布式数据⼀致性的解决⽅案&…

在 PostgreSQL 里如何实现数据的冷热数据分层存储的自动化策略调整?

🍅关注博主🎗️ 带你畅游技术世界,不错过每一次成长机会!📚领书:PostgreSQL 入门到精通.pdf 文章目录 在 PostgreSQL 里如何实现数据的冷热数据分层存储的自动化策略调整 在 PostgreSQL 里如何实现数据的冷…

ip地址是电脑还是网线决定的

在数字化时代的浪潮中,网络已经成为了我们日常生活和工作不可或缺的一部分。当我们谈论网络时,IP地址无疑是一个核心的概念。然而,关于IP地址的分配和决定因素,很多人可能存在误解。有些人认为IP地址是由电脑决定的,而…

mybatisPlus和mybatis的版本冲突问题、若依换成MP、解决git无法推送、使用若依框架的swagger、以后再遇到团队项目应该怎么做。

20240716 一. mybatisPlus和mybatis的版本冲突问题1. 使用前的准备2. 我遇到了一个很严重的问题。3. 解决问题,好吧也没解决,发现问题!! 二、该死的git!!!!1. 解决无法在idea中使用g…

CBSD bhyve Ubuntu 配置vnc登录管理

CBSD介绍 CBSD是为FreeBSD jail子系统、bhyve、QEMU/NVMM和Xen编写的管理层。该项目定位为一个综合解决方案的单一集成工具,用于使用预定义的软件集以最少的配置快速构建和部署计算机虚拟环境。 虽然CBSD没有提供额外的操作系统级功能,但它极大地简化了…

fatal: not a git repository (or any of the parent directories): .git

问题描述: 通过git pull 拉取代码提示: fatal: not a git repository (or any of the parent directories): .git 这个错误信息表明你当前所在的目录不是一个 Git 仓库,或者任何父目录中都没有 .git 目录。 问题解决: 确认当前目…

Windows 、Linux、MacOS 进程管理机制

本心、输入输出、结果 文章目录 Windows 、Linux、MacOS 进程管理机制前言Windows 进程管理机制Linux 进程管理macOS 进程管理内存不够了,几个操作系统如何处理Windows 、Linux、MacOS 进程管理机制 编辑 | 简简单单 Online zuozuo 地址 | https://blog.csdn.net/qq_15071263 …

<数据集>混凝土缺陷检测数据集<目标检测>

数据集格式:VOCYOLO格式 图片数量:7353张 标注数量(xml文件个数):7353 标注数量(txt文件个数):7353 标注类别数:6 标注类别名称:[exposed reinforcement, rust stain, Crack, Spalling, Efflorescence…

JavaSE从零开始到精通

1.前置知识 JVM:java virtrual machine, java虚拟机, 专门用于执行java代码的一款软件。可以将class文件,转换为机器认识的机器码,因为我们的计算机只认识010101的二进制语言。JRE:java runtime enviroment, java运行时环境, jav…

CMake生成Debug和Release目标程序时的一些配置

文章介绍 本文章将介绍在Windows和Linux平台,生成可执行程序时,如何设置Debug和Release的一些属性。主要介绍如何设置目标程序的生成路径,以及运行时库的设置和目标程序版本号的设置。 Debug和Release模式 -O,-O1: 这两个命令的效果是一样…

C++学习笔记-C++11中的智能指针

1.智能指针介绍 智能指针是C的特性用法,是一个类似指针功能的类对象,其目的是为了更好的管理动态分配的内存,避免出现内存泄漏、悬空指针等问题。C11的标准库里提供了三种智能指针模板类,分别是std::unique_ptr、std::shared_ptr…

深入解析HNSW:Faiss中的层次化可导航小世界图

层次化可导航小世界(HNSW)图是向量相似性搜索中表现最佳的索引之一。HNSW 技术以其超级快速的搜索速度和出色的召回率,在近似最近邻(ANN)搜索中表现卓越。尽管 HNSW 是近似最近邻搜索中强大且受欢迎的算法,…

Flutter动画详解第二篇之显式动画(Explicit Animations)

目录 前言 一、定义 1.AnimationController 1.常用属性 1. value 2. status 3. duration 2.常用方法 1.forward 2.reverse 3.repeat 4.stop 5. reset 6. animateTo(double target, {Duration? duration, Curve curve Curves.linear}) 7.animateBack(double ta…

大数据之写入Doris数据问题

1. 解决Key columns should be a ordered prefix of the schema. KeyColumns[1] (starts from zero) is xxx, but 背景 create table if not exists XXX ( fathercorp varchar(50), id decimalv3(38,0) ) ENGINEOLAP UNIQUE KEY(id) COMMENT xxxx DISTRIBUTED BY HASH(id) BUC…

C#实现数据采集系统-实现功能介绍

系统介绍 我们这里主要使用C#( .Net 6)来实现一个数据采集系统,从0到1搭建数据采集系统,从系统分析,功能拆解,到一一实现 数据采集 数据采集是企业信息化和数字化转型过程中的关键环节,它涉及到从生产设备、传感器…

数据结构之细说链表

1.1顺序表的问题以及思考 经过上一篇顺序表的学习,我们知道顺序表还是有很多缺点 顺序表的缺点: 1.中间/头部的插入删除,实际复杂度为O(N) 2.增容需要申请新空间,拷贝数据,释放旧空间。会有不小的消耗 3.扩容一般…

实战打靶集锦-31-monitoring

文章目录 1. 主机发现2. 端口扫描3. 服务枚举4. 服务探查4.1 ssh服务4.2 smtp服务4.3 http/https服务 5. 系统提权5.1 枚举系统信息5.2 枚举passwd文件5.3 枚举定时任务5.4 linpeas提权 6. 获取flag 靶机地址:https://download.vulnhub.com/monitoring/Monitoring.o…

【BUG】已解决:python setup.py bdist_wheel did not run successfully.

已解决:python setup.py bdist_wheel did not run successfully. 目录 已解决:python setup.py bdist_wheel did not run successfully. 【常见模块错误】 解决办法: 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主…

(二)原生js案例之数码时钟计时

原生js实现的数字时间上下切换显示时间的效果&#xff0c;有参考相关设计&#xff0c;思路比较难&#xff0c;代码其实很简单 效果 代码实现 必要的样式 <style>* {padding: 0;margin: 0;}.content{/* text-align: center; */display: flex;align-items: center;justif…