优化器| SGD/Adam/

news2024/12/30 2:51:56

前言:最近准备复习一下深度学习的基础知识,开个专栏记录自己的学习笔记

各种SGD和Adam优化器整理

基本概念

优化:最大化或最小化目标函数,具体指最小化代价函数或损失函数

损失函数 J(θ)=f(hθ(x),y),hθ(x)是由参数θ构成的网络输出

梯度下降:为了使得损失函数达到最小所采取的方法或策略
具体步骤:

  • 计算梯度,这里的梯度只损失函数在参数θ的梯度
  • 更新参数:根据计算的损失函数梯度,求更新后的参数(θ=θ-α * g)学习率 * 梯度

SGD(stochastic gradient descent)随机梯度下降

每次更新时用1个样本
优点:
缺点:

  • 缺点在于收敛速度慢,
  • 可能在鞍点处震荡
  • 学习率难以选择

BGD(Batch Gradient Descent)批量梯度下降

每一次迭代时使用所有样本来进行梯度的更新
优点:

  • 全数据集确定的方向能够更好地代表样本总体,从而更准确地朝向极值所在的方向

缺点:

  • 需要遍历全部样本才更新一次,耗费时间长
  • 由于是由全部的样本求的平均损失函数的梯度进行计算,有些sample可能对参数更新不起作用

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

每次迭代我们从所有样本的训练集中依次按固定批量样本进行梯度更新,直到遍历所有样本

MBSGD(Mini-batch Gradient Descent) 小批量随机梯度下降

每次迭代我们从所有样本的训练集(已经打乱样本的顺序)中随机抽出一小批量(mini-batch)样本进行梯度更新

SGD with momentum 带动量的随机梯度更新

公式
在这里插入图片描述
即按照动量来更新参数(而不是梯度)
动量为两部分构成,其中一部分由上一时刻的动量决定,另一部分由当前梯度决定,β一般取0.9
因此动量可以看成有了惯性的梯度

优点:
在相同学习率和相同更新时间内,Momentum加速能行驶更多路程,为越过不那么好的极小值点提供可能性

SGD with NAG(Nesterov accelerated gradient)

在这里插入图片描述
在这里插入图片描述
这里的γ是衰减率=β,η是学习率=α
原理:根据动量进一步推导而来,带动量的参数更新另一部分由当前梯度决定,这里不是由当前梯度决定,而是下一步梯度决定,即假设第一部分动量作用后更新梯度决定

AdaGrad 自适应学习率梯度下降法

SGD 、SGD-M、SGD-NAG都是固定学习率去学习参数
但是对于更新不频繁的参数,我们希望学习率大以学到更多知识,对于更新频繁的参数,我们希望学习率小以保持稳定
二阶动量的表示:
在这里插入图片描述
Vt是个对角矩阵,代表不同维度上迄今为止所有梯度的平方和
AdaGrad用全局学习率除以这个数,作为学习率的动态更新。

更新频繁的参数,二阶动量的对应分量大

AdaDelta

Adam

AdamW

RMSProp

Nadam

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

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

相关文章

RK3568平台开发系列讲解(项目篇)TensorFlow图像分类

🚀返回专栏总目录 文章目录 一、安装tensorflow环境二、图像分类2.1、准备数据集2.2、构建和训练模型2.3、测试模型2.4、TensorFlow Lite模型2.5、模型转换和模拟测试三、部署推理测试沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 TensorFlow 是一个基于数据流编程…

Python机器学习入门 - - 贝叶斯算法学习笔记

文章目录 前言一、贝叶斯算法简介二、贝叶斯算法的数学原理1. 条件概率2. 全概率公式3. 贝叶斯公式4. 朴素贝叶斯分类器5. 高斯朴素贝叶斯分类器和伯努利朴素贝叶斯分类器 三、Python实现朴素贝叶斯分类总结 前言 贝叶斯公式是我们高中就耳熟能详的统计概率定理,贝…

UnityVR--ResourceManager--资源管理

目录 简介 加载资源的几种方式 资源加载的管理器Resload.cs ResLoad类的应用举例 简介 这里记录一个资源管理工具集,提供一些方法将一些Object、Prefab直接从Assets文件夹中加载到场景中。 加载资源的几种方式 在项目中我们经常需要使用一些随时取用的东西&…

2023 华为 Datacom-HCIE 题库 06--含解析

多项选择 1.[试题编号:190185] (多选题)如图所示,PE 1和PE2之间通过Loopback0接口建立MP-BGP邻居关系,在配置完成之后,发现CE1和CE2之间无法互相学习路由,以下哪些项会导致该问题出现? A、PE1…

GDB调试工具

GDB(GNU Debugger)是一个功能强大的命令行调试工具,用于调试 C、C 程序以及其他编程语言的程序。它是 GNU 项目的一部分,可在多个操作系统上使用,包括 Linux、macOS 和 Windows(通过 MinGW 或 Cygwin&#…

针对KF状态估计的电力系统虚假数据注入攻击研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

如何用ChatGPT学Python

ChatGPT狂飙160天,世界已经不是之前的样子。 新建了人工智能中文站https://ai.weoknow.com 每天给大家更新可用的国内可用chatGPT资源 ChatGPT的能力大家肯定都听说过,很多学生应该都亲身体验过。它在自然语言处理方面的出色表现绝对颠覆了之前公众对人…

一文详解Java自定义注解

目录 简介 JDK注解 Target Retention Documented Inherited 第三方注解 自定义注解 举例 默认字符串注解 实现指定包名称扫描注解 简介 注解(Annotation)是Java SE 5.0 版本开始引入的概念,它是对 Java 源代码的说明,…

FreeRTOS中断配置和临界值

Cortx-M 中断 优先级分组 Cortex-M3允许具有较少中断源时使用较少的寄存器位指定中断源的优先级,因此STM32把指定中断优先级的寄存器位减少到4位。抢占优先级的级别高于响应优先级。而数值越小所代表的优先级就越高。高的抢占式优先级可以打断低的抢占式优先级&am…

mysql加强小结 203446

数据库三范式: 什么是范式 规则:想要设计一个好的关系,必须要满足一定的约束条件,有几个等级,一级比一级高 ​ 解决什么问题:让数据库设计更加简洁,结构更加清晰,否则容易造成数据冗余 数据库有哪些范式? ​ 数据库有七大范式,常用的只有三个范式 **第一范式:**业务上属…

电磁兼容(EMC)基础(二)

目录 1.1 什么是电磁兼容(EMC) 1.2 各种各样的“干扰” 1.3 电磁兼容三要素 1.4 什么是分贝 1.5 天线 1.1 什么是电磁兼容(EMC) 电磁兼容(Electro Magnetic Compatibility,EMC)是电子、电气设备或系统的一种重要…

面试题基础篇

文章目录 1、二分查找2、冒泡排序3、选择排序4、插入排序5、希尔排序6、快速排序7、ArrayList8、Iterator9、LinkedList10、HashMap10.1、基本数据结构底层数据结构,1.7和1.8有什么不同? 10.2、树化与退化为何要用红黑树,为何一上来不树化&am…

【开放原子训练营(第三季)inBuilder低代码开发实验室学习心得】

今天要给大家介绍的项目是UBML 什么是UBML呢? UBML(统一业务建模语言 Unified-Business-Modeling-Language)是一种用于快速构建应用软件的低代码开发建模语言,是开放原子开源基金会(OpenAtom Foundation)…

数据结构与算法:树形查找

一.二叉排序树&#xff08;BST&#xff09; 1.个人理解 左子树结点值 < 根结点值 < 右子树结点值对二叉排序树进行中序遍历&#xff0c;可以得到一个递增的有序数列 2.二叉树查找 原理&#xff1a; 对于一个给定的二叉排序树&#xff0c;如果要查找一个节点&#xff0…

并发知识杂谈

在JAVA语言层面&#xff0c;怎么保证线程安全&#xff1f; 有序性&#xff1a;使用happens-before原则 可见性&#xff1a;可以使用 volatile 关键字来保证&#xff0c;不仅如此&#xff0c;volatile 还能起到禁止指令重排的作用&#xff1b;另外&#xff0c; synchronized 和…

进程和编码

一、python代码的运行方式 1.脚本式 2. 交互式 一般用于代码的测试 二、进制及相互之间的转换 1. 进制 2.进制之间相互转换 在python中&#xff0c;十进制是以整形的形式存在&#xff0c;其他进制是已字符串的形式存在。 二进制/八进制/十六进制都可与十进制相互转换。但…

走向编程大师之路的几个里程碑

走向编程大师之路的几个里程碑 1语言关 2算法关 3系统关 4 编译器关 如下的系统的核心代码都有一万行以上&#xff0c;是规模和复杂度足够 大&#xff0c;可以检验开发者的模块化编程能力&#xff0c;掌控复杂度的能力。 使用什么编程语言本身是不重要的&#xff0c;能够有能…

常用消息中间件简介

一、 分布式系统消息通信技术简介 分布式系统消息通信技术主要包括以下几种&#xff1a; 1. RPC(Remote Procedure Call Protocol). 一般是C/S方式&#xff0c;同步的&#xff0c;跨语言跨平台&#xff0c;面向过程 2. CORBA(Common Object Request Broker Architecture). CO…

一个命令搞定Linux大文件下载

问题 Linux下log日志太大了&#xff0c;下载太慢了&#xff0c;即使下载下来&#xff0c;打开也费劲&#xff0c;咋办&#xff1f;将某文件夹打包成xx.tar.gz包&#xff0c;但依然很大&#xff0c;公司无法下载这么大的压缩包&#xff0c;咋办&#xff1f; split 以上2个问题…

[golang gin框架] 37.ElasticSearch 全文搜索引擎的使用

一.全文搜索引擎 ElasticSearch 的介绍&#xff0c;以 及安装配置前的准备工作 介绍 ElasticSearch 是一个基于 Lucene 的 搜索服务器,它提供了一个 分布式多用户能力的 全文搜索引擎&#xff0c;基于 RESTful web 接口,Elasticsearch 是用 Java 开发的&#xff0c;并作为 Apac…