(深度学习快速入门)第三章第三节3:深度学习必备组件之优化器和优化算法

news2025/3/1 0:55:38

文章目录

  • 一:优化算法
    • (1)优化算法概述
    • (2)梯度下降法
  • 二:优化器

一:优化算法

(1)优化算法概述

优化算法:对于深度学习问题,我们通常会先定义损失函数。一旦我们有了损失函数,我们就可以使用优化算法来尝试最小化损失。在优化中,损失函数通常被称为优化问题的目标函数。优化算法对于深度学习⾮常重要。一方面,训练复杂的深度学习模型可能需要数小时、几天甚至数周。优化算法的性能直接影响模型的训练效率。另一方面,了解不同优化算法的原则及其超参数的作用将使我们能够以有针对性的方式调整超参数,以提高深度学习模型的性能。深度学习中,常见的优化算法有

  • 梯度下降算法
  • 指数加权平均算法
  • 动量梯度下降
  • RMSprop算法
  • Adam优化算法

这里我们以梯度下降为例介绍一下其优化算法思想。更多关于优化算法的内容详见专栏最优化理论与方法

(2)梯度下降法

梯度下降法(Gradient descent,GD):使用梯度下降法寻找函数极小值时,会沿着当前点对应梯度(或近似梯度)的反方向 d d d所规定的步长 α \alpha α内进行迭代搜索。当然如果沿着梯度正方向搜索,就会接近函数的局部最大值,此时对应梯度上升法

我们经常会用下山这个例子来理解梯度下降法:现在你可以想象自己站在一座高山上的某一位置,需要下山,那么此时最快的下山策略就是环顾四周、哪里最陡峭就沿着哪个方向下山,每到一个新的地方后再次执行这个策略

  • 在机器学习中,上面的初始位置就相当于损失函数的初始值,山体的陡峭程度则是梯度,对应于损失函数的导数后偏导数
    在这里插入图片描述

可以看出梯度下降有时得到的是局部最优解,如果损失函数是凸函数,梯度下降法得到的解就是全局最优解

因此,梯度下降法公式为

θ i = θ i − α ∂ J ( θ 0 , θ 1 , … , θ n ) ∂ θ i \theta_{i} = \theta_{i} - \alpha \frac{ \partial J(\theta_{0},\theta_{1},\dots,\theta_{n}) }{ \partial \theta_{i} } θi=θiαθiJ(θ0,θ1,,θn)
在这里插入图片描述

具体在使用时,我们会使用其变种版本,即小批量梯度下降算法:小批量梯度下降算法是FGD和SGD的折中方案,在一定程度上兼顾了以上两种方法的优点。每次从训练样本集上随机抽取一个小样本集,在抽出来的小样本集上采用FGD迭代更新权重。被抽出的小样本集所含样本点的个数称为batch_size,通常设置为2的幂次方,更有利于GPU加速处理

  • batch_size=1,则变成了SGD
  • batch_size=n,则变成了FGD

θ = θ − η ⋅ ∇ θ J ( θ ; x ( i : i + n ) ; y i : i + n ) \theta = \theta - \eta \cdot \nabla_{\theta}J(\theta;x^{(i:i +n)};y^{i: i+n}) θ=θηθJ(θ;x(i:i+n);yi:i+n)

二:优化器

具体见:PyTorch学习之 torch.optim 的6种优化器及优化算法介绍

Pytorch中优化器主要分为如下两类

  • 随机梯度下降系列:SGD、SGD+Momentum;适用于稠密数据
  • 自适应学习率系列:AdaGrad、RMSProp、Adam;适用于稀疏数据

好的优化器主要就在于要加快收敛且抑制震荡

在这里插入图片描述

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

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

相关文章

【华为上机真题】寻找相同子串

🎈 作者:Linux猿 🎈 简介:CSDN博客专家🏆,华为云享专家🏆,Linux、C/C、云计算、物联网、面试、刷题、算法尽管咨询我,关注我,有问题私聊! &…

2023牛客寒假算法集训营3

(数学场真折磨人) A. 不断减损的时间(贪心) 题意: 给定一个数组,任意次操作,每次操作可以 选择一个偶数除以 222 。 求最终数组所有元素之和的最小值。 思路: 要使得所有元素之…

(python)selenium工具的安装及其使用

selenium概述 一个自动化测试工具。它可以让python代码调用浏览器。并获取到浏览器中加载的各种资源 优缺点: 优点 selenium能够执行页面上的js,对于js渲染的数据和模拟登陆处理起来非常容易使用难度简单爬取速度慢,爬取频率更像人的行为&a…

k8s安装nfs设置pv pvc并部署mysql

在k8s系列第一篇中提到有一个用于nfs机器没有部署任何东西,这一篇我们来搭建nfs服务,并在k8s上部署mysql,并将mysql的data目录映射到nfs中。网上的部分教程为了简便教学用的hostPath做的映射,只是便于教学的简便做法,实…

Linux常用命令——skill命令

在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand) skill 向选定的进程发送信号冻结进程 补充说明 skill命令用于向选定的进程发送信号,冻结进程。这个命令初学者并不常用,深入之后牵涉到系统服务优化之后可能会用到。 语法 skill(选项…

vim的自动化配置(一条指令就够了)

应该没有人在因为vim中括号不能对齐和补齐和自动缩进而烦恼吧! 自动化配置不香吗? 如果你想把你的vim给配置成像vs2022编译器一样,那么恭喜你,当你看到这篇文章的时候你就要成功了! 一条指令,下载出vs20…

Java 分支及循环语句

文章目录一、分支语句1. if 语句2. switch 语句二、循环语句1. for 循环语句2. while 循环语句3. do...while 循环语句4. 跳转控制语句5. 循环嵌套6. Random6.1 猜数字游戏一、分支语句 1. if 语句 if(关系表达式1) {语句体1; } else if(关系表达式2){语句体2; } ... else {语…

带你去了解什么是makefile文件

GNU make命令是用来控制从源文件生成可执行文件或非可执行文件的方式。那么make命令又是通过makefile文件来控制了。所以了解makefile文件就显得很有必要了。 makefile文件由许多规则组成,这些规则的形式一般是这样的: 目标 ... : 先决条件 ...命令目标…

PMP范围和需求的区别是什么?

定义需求:为满足业务需求,某个产品、服务或成果必须达到的条件或具备的能力。范围:项目所提供的产品、服务和成果的总和。在PMI中我们常说的范围一般为项目范围,其定义为:为交付具有规定特性与功能的产品、服务或成果而…

现金+股票再平衡策略的测试 - 针对恒指

最近很多人在讨论一个策略,就是50%现金,50%ETF,然后按照一定的策略再平衡一次,将会获得比单纯股票投资更安全的策略和更加稳定的收益。我做了一个简单的回测。 测试模式1 1990-01-02 - 2023-01-20 长期涨模式 首先假设我找到了一…

Redis面试题万字汇总 [施工中]

1. Redis 数据结构Redis底层有五种数据结构,String, long / double : 底层是小于Long的数字时, 使用的时long字符.它也可以支持double类型浮点数,embstr : 如果是短字符串,长度小于39个字节, 使用的是embstr数据结构. 之所以是39字节,主要是redis的jemalloc最小单位是64个字节,…

深度估计源码详解

源码链接见文末 论文地址: Monocular Depth Estimation Using Laplacian Pyramid-Based Depth Residuals | IEEE Journals & Magazine | IEEE Xplore 1.项目环境配置 项目中所包含的库直接使用pip install就好,但是有3个地方需要处理一下: fcntl,这个需要打开anacon…

DFS(六) N皇后 II

n 皇后问题 研究的是如何将 n 个皇后放置在 n n 的棋盘上,并且使皇后彼此之间不能相互攻击。 给你一个整数 n ,返回 n 皇后问题 不同的解决方案的数量。 来源:力扣(LeetCode) 链接:https://leetcode.cn/pr…

浮动 应用场景 浮动的基本特点 高度坍塌 解决浮动时盒子冲突问题

目录浮动应用场景浮动的基本特点盒子尺寸盒子排列文字环绕高度坍塌浮动 视觉格式化模型,大体上将页面中盒子的排列分为三种方式: 常规流浮动定位 应用场景 文字环绕横向排列 浮动的基本特点 修改float属性值为: left:左浮动…

【HBase入门】6. 常用 Shell 操作(3)

前言 我们可以以shell的方式来维护和管理HBase。例如:执行建表语句、执行增删改查操作等等。 过滤器的用法 过滤器一般结合scan命令来使用。打开HBase的JAVA API文档。找到RowFilter的构造器说明,我们来看以下,HBase的过滤器该如何使用。 …

快速排序的实现和优化~

相比于冒泡排序的改进点: 在前面学过的冒泡排序中,由于扫描过程只对相邻的两个元素进行比较,因此在互换两个相邻元素时,只能消除一个逆序,如果能通过两个(不相邻的)元素的交换,消除待排序记录 中的多个逆序…

docker desktop window10家庭版踩坑实录

安装 桌面版:https://www.docker.com/products/docker-desktop 这里我就安装的是桌面版 选择windows 前置工作 1.按下 wins(找到这个) 将下面的这个勾选中,如果你是家庭版很可能没有这个东西,那么请看我的这篇文章…

5-5中央处理器-指令流水线

文章目录一.基本概念1.多条指令在处理器中的执行方式(1)顺序执行方式/串行执行方式(2)流水线执行方式①一次重叠执行方式②二次重叠执行方式2.流水线的表示方法(时空图)3.超标量流水线二.分类1.部件功能级、…

第四十五章 动态规划——背包问题模型(二)

一、概述 我们在上一章中已经对背包模型做了一定地讲解,但是我们发现其实在上一章节中我们所介绍的例题大部分是给背包问题套上一个背景,当我们识破了背后的模型后,我们就可以直接套用模板,基本不需要对代码做改变。 那么在这一…

SpringBoot读写Redis客户端并实现技术切换(Jedis)

SpringBoot整合Redishttps://blog.csdn.net/weixin_51882166/article/details/128759780?spm1001.2014.3001.5501 读写客户端 首先应该打开redis服务; cd命令进入Redis安装目录下: 进入Redis客户端: redis-cli.exe -h 127.0.0.1 -p 6379…