【机器学习300问】93、到底什么是优化器optimizer?

        本文是对之前我写的梯度下降优化算法相关内容进行一次简要总结。在学习PyTorch框架的过程中,会遇到“优化器”(optimizer)这个概念。我想用通俗易懂的方式,说说优化器到底是个什么东西,并在此基础上,将前文的各项优化算法重新整理列举,以便为有需要的读者提供一份便于查询与参考的资源汇总。

一、到底什么是优化器?

        机器学习模型蕴含着多种参数,其核心目标在于通过学习(即更新)这些参数,以期达到最佳的数据拟合状态。为此,研究者们发展出了诸多参数优化技术,其中最为人所熟知且广泛应用的策略当属梯度下降法。值得注意的是,依据具体实施梯度下降过程中的不同策略与调整,这一基本框架进一步衍生出了一系列变体。

        因为所有这些策略目的都是想又快又好的更新梯度学习参数。所以,它们被统称为“优化器”(optimizers),这一术语体现了它们在优化过程中的角色,是对随机梯度下降方法的改良优化器的本质还是梯度下降算法

二、都有哪些常用优化器?

(1)SGD(随机梯度下降)

        这是最基本的优化算法,它根据每个训练样本或一小批量样本的梯度来更新模型参数。

import torch.optim as optim

# 假设model.parameters()是你的模型参数
optimizer = optim.SGD(model.parameters(), lr=0.01)

(2)Momentum(动量梯度下降)

        带有动量的SGD,通过引入以往梯度的指数衰减平均值来加速学习过程,有助于克服局部最小值和鞍点。

import torch.optim as optim

# 假设model.parameters()是你的模型参数
# 在PyTorch中,Momentum作为SGD的一个参数
optimizer = optim.SGD(model.parameters(), lr=0.01, momentum=0.9)

【机器学习300问】81、什么是动量梯度下降算法?icon-default.png?t=N7T8https://blog.csdn.net/qq_39780701/article/details/138669656?fromshare=blogdetail

(3)RMSprop

        Root Mean Square Propagation,根据历史梯度的平方根进行自适应学习率调整,特别适用于非平稳目标函数。

import torch.optim as optim

# 假设model.parameters()是你的模型参数
optimizer = optim.RMSprop(model.parameters(), lr=0.001, alpha=0.99, eps=1e-08, weight_decay=0, momentum=0, centered=False)

【机器学习300问】82、RMSprop梯度下降优化算法的原理是什么?icon-default.png?t=N7T8http://t.csdnimg.cn/cWFCU

(4)AdaGrad

        自适应地为每个参数调整学习率,减少频繁出现的特征的学习率,增加稀疏数据集中的稀有特征的学习率。

import torch.optim as optim

# 假设model.parameters()是你的模型参数
optimizer = optim.Adagrad(model.parameters(), lr=0.01, lr_decay=0, weight_decay=0)

【机器学习300问】84、AdaGrad算法是为了解决什么问题?icon-default.png?t=N7T8http://t.csdnimg.cn/oJUbS

(5)Adam

        Adaptive Moment Estimation结合了Momentum和RMSprop的优点,使用了梯度的一阶矩估计和二阶矩估计,并对这些估计做了偏差修正,是目前非常流行的一种优化器。

import torch.optim as optim

# 假设model.parameters()是你的模型参数
optimizer = optim.Adam(model.parameters(), lr=0.001, betas=(0.9, 0.999), eps=1e-08, weight_decay=0, amsgrad=False)

【机器学习300问】85、Adam梯度下降优化算法的原理是什么?icon-default.png?t=N7T8http://t.csdnimg.cn/IbZKS

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Qt代码初识

文章目录 Qt代码初识1. Qt Hello World 程序1.1 使⽤ "按钮" 实现1.1.1 纯代码⽅式实现1.1.2 可视化操作实现 1.2 使⽤ "标签" 实现1.2.1 纯代码⽅式实现1.2.2 可视化操作实现 2. 项⽬⽂件解析2.1 .pro ⽂件解析2.2 widget.h ⽂件解析2.3 main.cpp ⽂件解析…

SwanLab入门深度学习:BERT IMDB文本情感分类

基于BERT模型的IMDB电影评论情感分类,是NLP经典的Hello World任务之一。 这篇文章我将带大家使用SwanLab、transformers、datasets三个开源工具,完成从数据集准备、代码编写、可视化训练的全过程。 观察了一下,中文互联网上似乎很少有能直接…

Apache Log4j Server 反序列化命令执行漏洞(CVE-2017-5645)

漏洞复现环境搭建请参考 http://t.csdnimg.cn/MxmId 漏洞版本 Apache Log4j 2.8.2之前的2.x版本 漏洞验证 (1)开放端口4712 漏洞利用 (1)ysoserial工具获取 wget https://github.com/frohoff/ysoserial/releases/download/v0…

强化学习算法

从上图看出,强化学习可以分成价值/策略、随机策略/确定策略、在线策略/离线策略、蒙特卡洛/时间差分这四个维度。这里分析了基础算法中除了在线策略/离线策略以外的其他维度。 (一)基础知识 一、基础概念 重点概念:状态S、动作A、…

浏览器自动化~插件推荐Automa

引言 作为一款现代浏览器,得自动化吧,自主完成那些日复一日的重复性任务,开启音乐啥的不在话下~。而你则可以专注于其他更有意义的事情,如享受音乐带来的愉悦。但如果你对编写脚本一窍不通,又该如何实现这一愿景呢&am…

华为机考入门python3--(28)牛客28-素数伴侣

分类:质数、素数、贪心算法、矩阵 知识点: 素数里除了2,都是奇数 奇奇偶,偶+偶偶 对矩阵求和 sum(map(sum, matrix)) 查找元素 3 在列表中的索引 my_list.index(3) 题目来自【牛客】 质数又称素数,是指…

一种综合评价及决策方法:层次分析法AHP

大家好,层次分析法(Analytic Hierarchy Process,AHP)是一种多准则决策方法,它帮助决策者处理复杂的决策问题,将其分解成层次结构,然后通过两两比较来确定各个层次的因素之间的相对重要性。这种分析方式允许决策者对问题…

【vue与iframe通讯】

vue 与 iframe 通讯 发送数据vue 向 iframe 发送数据iframe 向 vue 发送数据接收信息( vue & iframe 通用) 实现相互通讯通讯流程图实现代码vue 页面iframe页面iframe内部重定向访问地址,更新vue路由 代码下载 前言:vue嵌套iframe实现步骤 发送数据 vue 向 if…

回溯算法05(leetcode491/46/47)

参考资料: https://programmercarl.com/0491.%E9%80%92%E5%A2%9E%E5%AD%90%E5%BA%8F%E5%88%97.html 491. 非递减子序列 题目描述: 给你一个整数数组 nums ,找出并返回所有该数组中不同的递增子序列,递增子序列中 至少有两个元素…

微软开发者大会:编程进入自然语言时代、“AI员工”闪亮登场

当地时间周二,美国科技公司微软召开年度Build开发者大会。在CEO纳德拉的带领下,微软各个产品团队再一次展现出惊人的执行力,在发布会上又拿出了接近50个新产品或功能更新。 整场发布会持续了接近两个小时,在这里挑选了一些投资者…

知识表示概述

文章目录 知识表示研究现状技术发展趋势 知识表示 知识是人类在认识和改造客观世界的过程中总结出的客观事实、概念、定理和公理的集合。知识具有不同的分类方式,例如按照知识的作用范围可分为常识性知识与领域性知识。知识表示是将现实世界中存在的知识转换成计算机…

Linux进程的地址空间

Linux进程的地址空间 1. 前言 在编写程序语言的代码时&#xff0c;打印输出一个变量的地址时&#xff0c;这个地址在内存中是以什么形式存在的&#xff1f;一个地址可以存储两个不同的值吗&#xff1f; 运行以下代码&#xff1a; #include <stdio.h> #include <un…

C#-根据日志等级进行日志的过滤输出

文章速览 概要具体实施创建Log系统动态修改日志等级 坚持记录实属不易&#xff0c;希望友善多金的码友能够随手点一个赞。 共同创建氛围更加良好的开发者社区&#xff01; 谢谢~ 概要 方便后期对软件进行维护&#xff0c;需要在一些关键处添加log日志输出&#xff0c;但时间长…

vulhub——ActiveMQ漏洞

文章目录 一、CVE-2015-5254(反序列化漏洞)二、CVE-2016-3088&#xff08;任意文件写入漏洞&#xff09;2.1 漏洞原理2.2 写入webshell2.3 写入crontab 三、CVE-2022-41678&#xff08;远程代码执行漏洞&#xff09;方法一方法2 四、CVE-2023-46604&#xff08;反序列化命令执行…

HTML+CSS+JS 扩散登录表单动画

效果演示 Code <!DOCTYPE html> <html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"><meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,us…

MAIA:多模态自动化可解释智能体的突破

随着人工智能技术的飞速发展&#xff0c;深度学习模型在图像识别、自然语言处理等领域取得了显著成就。然而&#xff0c;这些模型的“黑箱”特性使得其决策过程难以理解&#xff0c;限制了它们的应用范围和可靠性。为了解决这一问题&#xff0c;研究者们提出了多种模型可解释性…

【机器学习】—机器学习和NLP预训练模型探索之旅

目录 一.预训练模型的基本概念 1.BERT模型 2 .GPT模型 二、预训练模型的应用 1.文本分类 使用BERT进行文本分类 2. 问答系统 使用BERT进行问答 三、预训练模型的优化 1.模型压缩 1.1 剪枝 权重剪枝 2.模型量化 2.1 定点量化 使用PyTorch进行定点量化 3. 知识蒸馏…

[emailprotected](7)父子通信,传递元素内容

目录 1&#xff0c;children 属性2&#xff0c;多个属性 普通对象等&#xff0c;可以通过变量直接传递&#xff0c;那类似 vue 中的 slot 插槽&#xff0c;如何传递元素内容&#xff1f; 1&#xff0c;children 属性 实际上&#xff0c;写在自定义组件标签的内部代码&#xf…

【再探】Java—泛型

Java 泛型本质是参数化类型&#xff0c;可以用在类、接口和方法的创建中。 1 “擦除式”泛型 Java的“擦除式”的泛型实现一直受到开发者的诟病。 “擦除式”的实现几乎只需要在Javac编译器上做出改进即可&#xff0c;不要改动字节码、虚拟机&#xff0c;也保证了以前没有使…

k8s pv 一直是release状态

如下图所示&#xff0c;pv 一直是release状态 这个时候大家可能就会想到现在我的 PVC 被删除了&#xff0c;PV 也变成了 Released 状态&#xff0c;那么我重建之前的 PVC 他们不就可以重新绑定了&#xff0c;事实并不会&#xff0c;PVC 只能和 Available 状态的 PV 进行绑定。…