【机器学习】PyTorch如何选择最优初始学习率

2023-11-05

众所周知,机器学习尤其是现在的深度学习,大量的工作都集中在调参上。一个模型能否很好的解决问题,调参占了很大的比重。而学习率又是模型众多超参数中最重要和最容易调节的一个。

1.什么是学习率

目前深度学习优化的基本思想是梯度下降法,已经有很多优秀的且模块化的梯度下降算法可以直接使用,比如最常用的SGD、Adam和RMSProp等,所有这些算法都要求使用者设定学习率,因为每个特殊的问题都有一个不同的最优学习率,必须根据实际情况来调节。

学习率代表了权重参数在逆梯度方向上调节的步长。学习率越小则模型效果越好,但是会带来极慢的速度并且会陷入局部最优。所以我们需要增大学习率,但是学习率过大又会导致函数无法收敛,或者跳出最优点,是的模型训练效果变得更差。因此选取一个合适的学习率是训练深度学习模型的第一步。

吴恩达深度学习课程中的学习率介绍

​ 吴恩达深度学习课程中的学习率介绍

我们需要知道的是开始的学习率是较大的,因为初始化的权重离最优值较远。随着训练的进行,学习率是一个逐渐减小的状态。

2.如何选择最优的学习率

首先想到的就是一个笨方法,不断的测试不同数量级的学习率,如0.1、0.01等,每次减少或者增大一个到两个数量级。当学习率较大的时候,loss值不会减少。逐渐降低学习率,你会发现loss在开始的几个迭代开始下降,那这个学习率将是你能设置的上限,一般情况下会降低一到两个数量级来使用,因为训练的越多,权重的更新需求更细微。

那么怎样才能更用一个更聪明的方法来选择初始学习率,文章 “Cyclical Learning Rates for Training Neural Networks” 介绍了一种不错的方法:从0开始,每经过一个迭代就增加学习率。记录每个迭代的loss。

img

会得到上图的曲线,然后我们选择下降最快的一个区间,可以看到该图是0.01左右。

另一种方法是计算损失函数关于迭代次数的偏导数。然后以学习率为横轴,变化率为纵轴画图。

img

用简单移动平均来平滑一下,得到下图。

img

寻找最小值所在点,即0.01附近。

实现

感谢Jeremy Howard团队开发的pytorch工具包-fast.ai

理论上使用两行代码即可完成。使用的是第一种方法。(没有说明文档,不知道怎么用,日后完善)

learn.lr_find()
learn.sched.plot_lr()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【机器学习】PyTorch如何选择最优初始学习率 的相关文章

随机推荐

  • linxu下c/c++遍历文件夹获取文件

    最近工作需要 需要遍历文件夹下的文件 但是我发现遇到两个非常有意思的问题 记录一下 测试的平台为 PC linux Tina linux Linux version 5 15 0 41 generic buildd lcy02 amd64
  • JDK JRE JVM之间的关系

    文章目录 1 从定义的角度解释JDK JRE JVM 2 详细介绍JDK 3 详细介绍JRE 4 详细介绍JVM 1 JVM内部区域划分 5 如何运行一个java程序 本篇文章仅仅是个人片面观点 可能有错误或者表述不清的地方 1 从定义的角
  • Flink从入门到放弃(九)-万字讲解CDC设计(1)

    一 准备工作 在开始研究Flink CDC原理之前 本篇先以CDC1 0版本介绍 后续会延伸介绍2 0的功能 需要做以下几个工作 本篇以Flink1 12环境开始着手 打开Flink官网 查看Connector模块介绍 打开Github 下
  • Unicode与JavaScript详解

    上个月 我做了一次分享 详细介绍了Unicode字符集 以及JavaScript语言对它的支持 下面就是这次分享的讲稿 一 Unicode是什么 Unicode源于一个很简单的想法 将全世界所有的字符包含在一个集合里 计算机只要支持这一个字
  • 水箱建模最小二乘法_Comsol Multiphysics for Mac(建模仿真软件)

    COMSOL Multiphysics 是一款全球通用的基于高级数值方法和模拟物理场问题的通用软件 拥有 网格划分 研究和优化 求解器 可视化和后处理 仿真 App等相关功能 轻松实现各个环节的流畅进行 它能够解释耦合或多物理现象 附加产品
  • oracle 19c rac asm磁盘绑定的方法

    multipath 通过scsi id udev 通过scsi id oracle AFD 直接绑定后在 dev oracleafd disks 下面生成设备文件 asmcmd afd label OCR1 dev sda init 虚拟机
  • 【华为OD机试真题 JAVA】数组二叉树

    JS版 华为OD机试真题 JS 数组二叉树 标题 数组二叉树 时间限制 1秒 内存限制 262144K 语言限制 不限 二叉树也可以用数组来存储 给定一个数组 树的根节点的值存储在下标1 对于存储在下标N的节点 它的左子节点和右子节点分别存
  • QT-自定义消息提示框,好看大气

    QT 自定义消息提示框 好看大气 前言 一 演示效果 二 关键程序 三 下载链接 前言 原生的QT提示框总是让人觉得难以接受 因此特定重新封装一个类来替换原生的 使用过程跟原生的一致 使用比较方便 一 演示效果 二 关键程序 include
  • PHP常见加密函数(总结)

    1 加密算法汇总 比较常用的算法 md5 加密 crypt 加密 sha1加密 URL编码加密 base64编码加密 信息加密技术分为三类 单项散列加密 对称散列加密 非对称散列加密 1 1单项散列加密 MD5加密 crypt 加密 sha
  • 数据结构——深度优先遍历(DFS)无向连通图

    以下是数据结构中关于深度优先遍历无向连通图的操作 编程风格参考严蔚敏版数据结构 其实深度优先遍历就是二叉树的先序遍历的推广 头文件以及宏定义 include
  • css渐变

    1 线性渐变 是从一个方向到另一个方向的渐变 属性值 background linear gradient 颜色 默认值 从上到下线性渐变 代码 结果 属性延伸 1 改变渐变方向 从下到上 background linear gradien
  • RecyclerView 网格布局是设置分割线

    1 分割线 public class DividerGridItemDecoration extends RecyclerView ItemDecoration private static final int ATTRS new int
  • 在用apt install中如何选择安装路径?

    apt install并不会选择软件包的安装路径 这个路径是在软件包里面记录好路径的相关信息的 一个deb包 只是一堆文件 文件夹的压缩包而已 而这个包里面记录了这些文件 文件夹应该安装的位置 因此 简单点说 你不能够在apt instal
  • 图解多态原理

    虚函数表 class Base public virtual void Func1 cout lt lt Func1 lt lt endl private int b 1 void test Base b cout lt
  • 空间(蓝桥杯)

    空间 本题为填空题 只需要算出结果后 在代码中使用输出语句将所填结果输出即可 小蓝准备用 256MB 的内存空间开一个数组 数组的每个元素都是 32 位 二进制整数 如果不考虑程序占用的空间和维护内存需要的辅助空间 请问 256MB 的空间
  • 定义内部类 继承 AsyncTask 来实现异步网络请求

    异步任务处理 创建内部类 来实现网络异步请求 新建内部类 继承 AsyncTask SuppressLint StaticFieldLeak class RequestNetworkDataTask extends AsyncTask
  • Docker、Portainer、K8S环境搭建

    Docker Portainer K8S环境搭建 安装Docker 安装步骤 安装依赖包 yum install y yum utils device mapper persistent data lvm2 配置阿里云yum源 以便加速下载
  • Vue 安装开发者工具

    1 下载开发者工具 下载地址 http book wiyp top App Vue3开发者工具 谷歌 Vue3 crx 2 打开谷歌浏览器 点击扩展 点击管理扩展程序 3 开启开发者模式 将 Vue3 开发者工具文件拖拽到浏览器中进行安装
  • 设计模式(十三)代理模式

    代理模式也是一种结构性模式 它的主要作用是创建一个现有对象的代理 以便我们能够针对对象的生命周期 访问权限等进行控制 代理模式和适配器模式的区别是 适配器模式主要用于现有接口和新接口之间的转换和衔接 而代理模式对现有接口进行控制 所以代理模
  • 【机器学习】PyTorch如何选择最优初始学习率

    众所周知 机器学习尤其是现在的深度学习 大量的工作都集中在调参上 一个模型能否很好的解决问题 调参占了很大的比重 而学习率又是模型众多超参数中最重要和最容易调节的一个 1 什么是学习率 目前深度学习优化的基本思想是梯度下降法 已经有很多优秀