【Python】科研代码学习:十一 Optimization (Optimizer, Scheduler)

【Python】科研代码学习:十一 Optimization [Optimizer, Schedule]

  • Optimizer 前置知识
    • 优化器在 `torch` 中的调用
    • 优化器在 `transformers` 中的调用
      • `AdamW` 优化器
  • Scheduler 前置知识
    • 调度器在 `transformers` 中的调用

Optimizer 前置知识

  • 什么是 Optimizer 优化器?首先来学习一下
    【知乎:优化器-optimizer 汇总】
    在这里插入图片描述

在这里插入图片描述

按照这里的学习文章,说一下重要的内容,讲一下基本逻辑;优点;缺点
Optimizer 优化器就是有如下不同的版本,主要解决的是关于梯度、学习率、样本批次、权重等计算

  • SGD (Stochastic Gradient Descent) 随机梯度下降法
    每次选取哪个样本是随机的;更新速度快;损失波动大
  • BGD (Batch Gradient Descent) 批量梯度下降法
    每次将所有样本的梯度求和;梯度更新平滑;内存消耗大,容易进入局部最优解
  • MBGD (Mini-batch Gradient Descent) 小批量梯度下降法
    每一次利用一小批样本 n 梯度计算;收敛更稳定,速度较快;没有考虑数据集的稀疏度影响
    一般 n=50~256
  • Momentum 动量梯度下降法
    考虑了梯度方向的惯性;减少权重优化中的震荡问题;缺少一些减速的适应性
  • NAG (Nesterov Accelerated Gradient) 牛顿动量梯度下降法
    Momentum 的改进,用了二阶指数平滑;表现更好;没有考虑不同参数的重要程度
  • AdaGrad (Adaptive Gradient Algorithm) 自适应学习率梯度下降法
    可以对学习率自动调整;减少了学习率的手动调节;学习率会收缩到很小
  • Adam
    学习了 AdagradMomentum ;能适应系数梯度,缓解梯度震荡;
  • AdamW
    将权重衰减和学习率解耦;实验结果显示比 Adam 有更好的泛化性能

优化器在 torch 中的调用

  • PyTorch 中最常用的优化器是:
torch.optim.SGD:随机梯度下降优化器
torch.optim.Adam:自适应矩估计优化器
torch.optim.Adagrad:自适应梯度优化器

optimizer = torch.optim.SGD(model.parameters(), lr=0.01, momentum=0.9)

优化器在 transformers 中的调用

  • 【HF官网-Doc-Transformers-Optimization】
    在 API 中,主要就是如下几个:
    AdamW (PyTorch)
    AdaFactor (PyTorch)
    AdamWeightDecay (TensorFlow)
  • 现在主流是用 AdamW 的,就介绍一下这个吧

AdamW 优化器

  • 首先看一下源码,哦,他就是从 torch.Optimizer 继承过来的,实现了自己的一个类 AdamW。看一下参数
    params(Iterable[nn.parameter.Parameter]):提供模型的参数
    lr(float):学习率,默认为 0.001
    betas(Tuple[float,float]),即Adam中的 (b1,b2),默认为 (0.9,0.999)
    eps:epsilon,默认为 1e-06
    weight_decay:解耦后的权重缩减,默认为 0.0
    correct_bias(bool):是否修复 Adam 中的偏差值 bias,默认为 True
    在这里插入图片描述
  • 方法:step(),表示一步优化步骤。
  • 用法一:可以作为 torch.optimizer 类,自己实现一个 torch.nn,直接使用
  • 用法二:比较方便的是搭配 transformers 中的 trainingArguments
    参考 【Python】科研代码学习:七 TrainingArguments,Trainer
    TrainingArguments 中,可以设置 optim 属性,默认即为 adamw_torch;可以设置 weight_decay, adam_beta1, adam_beta2, adam_epsilon 等属性的值

Scheduler 前置知识

  • 而什么又是 Scheduler 调度器呢?
    Scheduler 调度器主要是,对于已经选择好的优化器 Optimizer,利用epoch、时间等变化对学习率进行调整
    【学习率】torch.optim.lr_scheduler学习率10种调整方法整理
    可以看一下 torch.optim.lr_scheduler 中为我们提供的一些调度器
    LambdaLR:初始 lr 乘以给定函数
    MultiplicativeLR:当前 lr 乘以给定函数
    StepLR:以固定间隔成倍衰减初始 lr
    MultiStepLR:以设定的时间间隔成倍衰减初始 lr
    ExponentialLR:指数衰减初始 lr
    CosineAnnealingLR:余弦函数式变化 lr
    ReduceLROnPlateau:当某一指标不再提升时,降低 lr
    CyclicLR:周期调整 lr
    CosineAnnealingWarmRestarts:余弦退火

调度器在 transformers 中的调用

  • 首先最重要的一个,是 SchedulerType
    相当于,我们通过这个类似枚举类,来指明我们使用的是哪种调度器
    可以看一下,有线性的,余弦的,多项式的,常数的,带预热的等
    ※详细可以看官网API,每个调度器如何影响lr
    在这里插入图片描述

  • 比如这个是带预热的余弦调度器
    在这里插入图片描述

  • 最主要的还是配合 TrainingArguments 使用
    参考 【Python】科研代码学习:七 TrainingArguments,Trainer
    TrainingArguments 中,可以设置 lr_scheduler_type ,无需我们自己创建一个调度器,HF会按照输入的调度器名字,自动创建对应的调度器。

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

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

相关文章

动态住宅代理IP使用教程全面讲解

在数字化时代,隐私保护和信息安全成为全球网民的共同关切。特别是对于海外用户,由于地理位置和网络监管政策的不同,访问全球信息资源变得更加复杂。使用动态住宅IP搭建代理,作为解决这一问题的有效手段,动态IP代理通过…

漏洞原理 | CORS跨域学习篇

0x01:原理 1、 什么是CORS 全称跨域资源共享,用来绕过SOP(同源策略)来实现跨域访问的一种技术。 CORS漏洞利用CORS技术窃取用户敏感信息 2、 同源策略简介 同源策略是浏览器最核心也是最基本的安全功能,不同源的客户端脚本在没有明确授权…

智慧城市与绿色出行:共同迈向低碳未来

随着城市化进程的加速,交通拥堵、空气污染、能源消耗等问题日益凸显,智慧城市与绿色出行成为了解决这些问题的关键途径。智慧城市利用信息技术手段,实现城市各领域的智能化管理和服务,而绿色出行则强调低碳、环保的出行方式&#…

2.2 评估方法 机器学习

我们若有一个包含m个样例的数据集,若我们既需要训练,也需要测试,我们该如何处理呢?下面是几种方法: 2.2.1 留出法 “留出法”直接将数据集D划分为两个互斥的集合,其中一个作为训练集S,另一个作…

OpenGL-贴纸方案

OpenGL-贴纸方案 普通贴纸(缩放、Z轴旋转、平移) OpenGL环境说明 OpenGL渲染区域使用正交投影换算,正常OpenGL坐标是vertexData,这样的 Matrix.orthoM 进行换算 //顶点坐标(原点为显示区域中心店)private final float[] vertex…

软件应用实例,宠物医院处方笺模板实例,佳易王兽医电子处方开单管理系统软件操作教程

软件应用实例,宠物医院处方笺模板实例,佳易王兽医电子处方开单管理系统软件操作教程 一、前言 以下软件程序操作教程以佳易王兽医电子处方软件V17.0为例说明 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 1、兽医宠物店开电子处…

React进阶(Redux,RTK,dispatch,devtools)

1、初识Redux 是React最常用的集中状态管理工具,类似于Vue中的Pinia(Vuex),可以独立于框架运行 作用:通过集中管理的方式管理应用的状态 案例-实现一个计数器 实现步骤: Redux管理数据的流程: state:一个对象&…

学生时期学习资源同步-1 第一学期结业考试题4

原创作者:田超凡(程序员田宝宝) 版权所有,引用请注明原作者,严禁复制转载

华为数通方向HCIP-DataCom H12-821题库(多选题:161-180)

第161题 以下关于IPv6优势的描述,正确的是哪些项? A、底层自身携带安全特性 B、加入了对自动配置地址的支持,能够无状态自动配置地址 C、路由表相比IPv4会更大,寻址更加精确 D、头部格式灵活,具有多个扩展头 【参考答案】ABD 【答案解析】 第162题 在OSPF视图下使用Filt…

WPF —— Calendar日历控件详解

1: Calendar的简介 日历控件用于创建可视日历,让用户选择日期并在选择日期时触发事件。 DisplayMode 用来调整日历显示模式,分为Month、Year 和Decade 三种。如下是None 2:Calendar控件常用的属性 SelectionMode 选中日历的类…

nginx学习记录-nginx初步配置

1. 虚拟机安装系统并配置网络 系统网上找个能用的镜像就行,我用的是阿里的镜像,地址是centos安装包下载_开源镜像站-阿里云 (aliyun.com) 以下是我本地的虚拟机配置 配置过程中按照提示操作系统即可。 安装好系统后,配置centos的ip&#x…

Ribbon简单使用

Ribbon是Netflix发布的云中间层服务开源项目,其主要功能是提供客户端实现负载均衡算法。Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等。简单的说,Ribbon是一个客户端负载均衡器,我们可以在配置文件中Load Balancer后…

LiveGBS流媒体服务器中海康摄像头GB28181公网语音对讲、语音喊话的配置

LiveGBS海康摄像头国标语音对讲大华摄像头国标语音对讲GB28181语音对讲需要的设备及服务准备 1、背景2、准备2.1、服务端必备条件(注意)2.2、准备语音对讲设备2.2.1、不支持跨网对讲示例2.2.2、 支持跨网对讲示例 3、开启音频开始对讲4、搭建GB28181视频…

C++提高笔记(三)---STL容器(vector、deque)

1、vector容器 1.1vector基本概念 功能:vector数据结构和数组非常相似,也称为单端数组 vector与普通数组区别:不同之处在于数组是静态空间,而vector可以动态扩展 动态扩展:并不是在原空间之后续接新空间&#xff0…

ChatGPTPLUS、Poe、Claude介绍,以及如何订阅

我使用了FOmepay的556150卡段升级了ChatGPTPLUS、POE、Claude3 一、ChatGPT Plus 是什么? ChatGPT Plus 是基于 ChatGPT 的月订阅升级方案,它可以提供更快的回应速度、更高的可用性以及优先使用到新功能的权限。 ChatGPT Plus 和原版 ChatGPT 的差异 …

Pytorch实战01——CIAR10数据集

目录 1、model.py文件 (预训练的模型) 2、train.py文件(会产生训练好的.th文件) 3、predict.py文件(预测文件) 4、结果展示: 1、model.py文件 (预训练的模型) impor…

QGIS 开发之旅二《构建插件工程》

上一篇文章写了二次开发环境的构建,这一章我们从零开始构建插件工程,并理解下QIGIS 如何识别插件程序的。 1、创建QGIS 工程 新建项目,选择下面的空工程 工程创建成功后,是下面的样子,没有任何文件 2、配置QGIS工程 …

docker私有仓库-harbor的搭建

docker 官方提供的私有仓库 registry,用起来虽然简单 ,但在管理的功能上存在不足。 Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,harbor使用的是官方的docker registry(v2命名是distribution)服务去完成。harbor在docker di…

基于Java (spring-boot)的人才招聘系统

一、项目介绍 公司: IT公司的注册与管理 招聘要求的发布与维护 站内私信 求职者: 招聘需求浏览 招聘需求筛选(按岗位、薪酬、城市、地区等) 简历编辑,建立投递等 站内私信 管理员: 用户信息维护 岗…

vue学习笔记24-组件事件配合v-model使用

搜索时v-model绑定的search数据时时发生变化 watch侦听器时时监察变化&#xff0c;一旦数据发生变化 &#xff0c;就实时发送数据给父组件 子组件的完整代码&#xff1a; <template>搜索&#xff1a;<input type"text" v-model"search"> <…