当前位置: 首页 > news >正文

深度学习中自适应学习率调度器

传统观点认为,太大的学习率不利于优化深度神经网络,而相比固定的学习率而言,变化的学习率更能提供快速的收敛。基于此,本文作者基于理论基础提出了一个计算深度神经网络学习率的新方法。实验结果证明了该方法的有效性。

训练神经网络受到几个问题的困扰。这些问题包括梯度消失、梯度爆炸 [7,3] 和过拟合。包括不同激活函数 [14,17]、批归一化 [12]、新颖的初始化方案 [9] 以及 Dropout[26] 在内的多种进展都为这些问题提供了解决方案。

但是,一个更基本的问题是为不同的超参数寻找最优值,而对这个问题而言学习率可以说是最重要的。众所周知,学习率太小会导致收敛变慢,但是太大的学习率又会导致发散 [2]。近期的研究一致认为,与固定的学习率相比,变化的学习率调度系统能够提供更快的收敛 [20,23]。而觉得不应使用较大学习率的传统经验也被认为有问题,可能导致「超收敛」和规则效应(regularizing effect)[25]。本文的实验结果和这个说法是一致的;但是作者没有使用循环的学习率,而是提出了一种基于理论基础来计算自适应学习率的新方法。

据作者所知,这是首次提出具有理论基础的自适应学习率调度器并且在标准数据集和网络架构上进行实证研究。所以,本文的贡献是双重的。首先,作者基于损失函数的利普希茨常数(Lipschitz),提出了一个用于在深度神经网络的随机梯度下降中计算最优学习率的新理论框架。其工作表明,在激活函数的特定选择方面,仅最后两层的激活函数是计算学习率时所需要的。其次,作者为几个常用的损失函数计算了理想的学习率,并用这些公式实验性地证明了其方法的有效性。

本文方法利用了损失函数的函数属性,仅对损失函数做了两个最小限度的假设:它必须是利普希茨连续的 [19], 且至少是一阶可微的。常用的损失函数都满足这两个条件。

论文:A novel adaptive learning rate scheduler for deep neural networks

在这里插入图片描述

论文地址:https://arxiv.org/abs/1902.07399

摘要:

优化深度神经网络在很大程度上被认为是一个经验过程,它需要手动调节几个参数,例如学习率、权重衰减以及随机失活率(dropout rate)。可以说,学习率是这些需要调节的参数中最重要的一个,它在最近的工作中也得到了更多的关注。在本文中,我们提出了一个计算深度神经网络学习率的新方法。我们推导了动态计算学习率的理论框架,然后展示了在标准数据集和模型架构上的实验结果来证明该方法的有效性。

理论框架

对一个使用 Sigmoid、ReLU 或者 softmax 激活函数的神经网络来说,很容易表现出这样的现象:反向传播时朝着浅层的方向梯度会越来越小。因此,最后一层的梯度是反向传播过程中计算出的梯度中最大的一个。如果

是第 l 层节点 i 到节点 j 的权重,并且 L 是总的层数,那么:
在这里插入图片描述
本质上,公式 (1) 表示误差对最后一层权重的最大梯度比误差对网络中任何权重的梯度都要大。显然这也可以扩展到偏置(bias)。换句话说,找到最后一层的最大梯度就确定了误差的利普希茨常数的上确界,这里的梯度都是根据每一层的权重参数来取的。

我们现在分析得出了不同类型问题的理论上确界。这些数值的倒数可以用作梯度下降的学习率。在任何一层中,我们都会有这种计算:
在这里插入图片描述
因此,最后一层中任何权重的梯度都是通过下面的链式法则来计算的:
在这里插入图片描述
第三部分是不能解析计算的;我们将它记作 K_z。现在看一下不同类型的问题,并计算这些组成部分。

实验

下面我们展示了在一些公开数据集上的实验结果和细节。虽然我们的结果不是最先进的,但我们的重点是凭经验证明随机梯度下降是可以通过更大的学习率来进行的,而不是像通常理解的那样只能用小一些的学习率。我们所有的实验都是在特斯拉 P100 GPU 上运行的,如果没有特殊说明,模型也是使用(没有动量或者权重衰减的)随机梯度下降优化器进行优化的。在 CIFAR 数据集上,我们和 [10] 一样仅使用了翻转和平移增强方案。在所有实验中,原始图像的像素数值都除以 255。

在 MNIST 上的实验只使用了一个自适应学习率,而因为利普希茨常数,学习率在每个 epoch 中都会被重新计算。

图 1 展示了训练集和验证集上准确率和损失函数随着 epoch 的变化而变化。图 2 展示了在各个 epoch 计算的学习率。请注意,与 CIFAR-10(图 5)和 CIFAR-100(图 6)中计算的自适应学习率不同,MNIST 的学习率从高得多的值开始。

在这里插入图片描述
图 5 展示了不同时间的学习率随。正如相关文献所表明的,自适应方案会自动选择一个衰减的学习率。
在这里插入图片描述
图 6 展示了在各个 epoch 的学习率。与 CIFAR-10 一样,前两个 epoch 会以很小的学习率开始(10^(-8)),但是模型会快速适应不断变化的权重。
在这里插入图片描述

图 6: CIFAR-100 上随着时间变化的自适应学习率。

见博客 https://www.163.com/dy/article/E945E6DP0511AQHO.html

相关文章:

深度学习中自适应学习率调度器

传统观点认为,太大的学习率不利于优化深度神经网络,而相比固定的学习率而言,变化的学习率更能提供快速的收敛。基于此,本文作者基于理论基础提出了一个计算深度神经网络学习率的新方法。实验结果证明了该方法的有效性。 训练神经…...

Phono3py hdf5文件数据读取与处理

Phono3py是一个主要用python写的声子-声子相互作用相关性质的模拟包,可以基于有限位移算法实现三阶力常数和晶格热导率的计算过程,同时输出包括声速,格林奈森常数,声子寿命和累积晶格热导率等参量。 相关介绍和安装请参考往期推荐…...

React 底部加载组件(基于antd)

底部加载组件的意义在于提供一种流畅的用户体验,以便在用户滚动到页面底部时自动加载更多内容。这样可以让用户无需离开当前页面,就能够无缝地浏览更多的内容.通过底部加载组件,可以分批加载页面内容,减少一次性加载大量数据对页面…...

将HTML转换为PDF:使用Spire.Doc的详细指南(一) 试用版

目录 引言 1. 为什么选择 Spire.Doc? 1.1 主要特点 1.2 适用场景 2. 准备工作 2.1 引入 Spire.Doc 依赖 2.2 禁用 SSL 证书验证 3. 实现功能 3.1 主类结构 3.2 代码解析 4. 处理图像 5. 性能优化 5.1 异步下载图像 示例代码 5.2 批量处理优化 示例代…...

数据结构经典算法总复习(下卷)

第五章:树和二叉树 先序遍历二叉树的非递归算法。 void PreOrderTraverse(BiTree T, void (*Visit)(TElemType)) {//表示用于查找的函数的指针Stack S; BiTree p T;InitStack(S);//S模拟工作栈while (p || !StackEmpty(S)) {//S为空且下一个结点为空,意味着结束遍…...

mac 安装graalvm

Download GraalVM 上面链接选择jdk的版本 以及系统的环境下载graalvm的tar包 解压tar包 tar -xzf graalvm-jdk-<version>_macos-<architecture>.tar.gz 移入java的文件夹目录 sudo mv graalvm-jdk-<version> /Library/Java/JavaVirtualMachines 设置环境变…...

【SH】在Ubuntu Server 24中基于Python Web应用的Flask Web开发(实现POST请求)学习笔记

文章目录 Flask开发环境搭建保持Flask运行Debug调试 路由和视图可变路由 请求和响应获取请求信息Request属性响应状态码常见状态码CookieSession 表单GET请求POST请求 Flask 在用户使用浏览器访问网页的过程中&#xff0c;浏览器首先会发送一个请求到服务器&#xff0c;服务器…...

一些经济政治学类书籍推荐 --- 以及与之相关我的经历和理解

我给所开设的兴趣专栏_墨#≯的博客-CSDN博客&#xff0c;的介绍是&#xff1a; 聊聊关于文学、经济(股票等)、法律方面的个人感受与理解。 不过目前已有的两篇以及现在在写的这篇都是经济相关的&#xff0c;其实专栏开设的9月至今&#xff0c;我也看了好几本文学相关的书&#…...

设计模式之 abstract factory

适用场景 一个系统要独立于它的产品的创建、组合和表示时。一个系统要由多个产品系列中的一个来配置时。当你要强调一系列相关的产品对象的设计以便进行联合使用时。当你提供一个产品类库&#xff0c;而只想显示它们的接口而不是实现时 架构演示 首先client这个东西可以接触到…...

汽车IVI中控开发入门及进阶(三十八):手机投屏HiCar开发

手机投屏轻松实现手机与汽车的无缝连接,导航、音乐、通话等功能应有尽有,还支持更多第三方应用,让车载互联生活更加丰富多彩。 HiCar在兼容性和开放性上更具优势。 手机投屏可以说是车机的杀手级应用,大大拓宽了车机的可用性范围。其中华为推出的HiCar就是非常好用的一种。…...

Springmvc,spring ,mybatis,整合,ssm

上一章内容&#xff1a; 1.spring框架:作用 开源的框架--提供IOC和AOPIOC控制反转 把创建对象的权力交于spring创建&#xff0c;并管理对象的生命周期&#xff0c;通过DI完成对象属性的注入。 ​ 2. spring配置中<bean>也可以使用注解Component Controller Service Repo…...

《庐山派从入门到...》板载按键启动!

《庐山派从入门到...》板载按键启动&#xff01; 《庐山派从入门到...》板载按键启动&#xff01; 视频内容大致如下 我们之前了解了GPIO的输出模式使用方法&#xff0c;并且成功点灯&#xff0c;很明显本篇要来分享的自然是GPIO的输入模式 正好回顾一下之前学的python基础包…...

Mapbox-GL 中 `token` 的使用

Mapbox-GL 是一个开源的 JavaScript 库&#xff0c;允许开发者在网页上渲染交互式地图。token 在 Mapbox 中主要是指 access token&#xff0c;它用于身份验证和授权&#xff0c;确保应用程序能够访问 Mapbox 的地图服务。 下面详细解析 Mapbox GL 中 token 的使用&#xff0c…...

Flutter组件————PageView

PageView 可以创建滑动页面效果的widget&#xff0c;它允许用户通过水平或垂直滑动手势在多个子页面&#xff08;child widgets&#xff09;之间切换。每个子页面通常占据屏幕的全部空间。 参数 参数名类型描述childrenList<Widget>包含在 PageView 中的所有子部件&am…...

c#自定义事件

自定义事件类 定义一个自定义事件参数类 为了传递更多的信息&#xff0c;我们定义一个自定义的事件参数类 public class CustomEventArgs : EventArgs {public string Message { get; set; } } 3. 定义一个发布者类 接下来&#xff0c;我们定义一个发布者类&#xff0c;包含…...

【读书笔记】《论语别裁》寂寞的享受

1.内容摘要 在《论语别裁》中&#xff0c;第一章《学而》探讨了做学问的孤独与坚持。作者强调&#xff0c;真正的学者在追求知识时&#xff0c;必须保持“仁”与“义”的核心价值观&#xff0c;愿意为自己的信念与理想而牺牲。他以孔子为例&#xff0c;描绘了孔子一生的寂寞与…...

Oracle筑基篇-调度算法-LRU的引入

常见的调度算法 图1 调度算法思维导图 一、LRU算法的典型使用场景 1. 操作系统中的页面置换 什么时候用到页面置换算法呢&#xff1f; 当CPU发出指令需要访问某个地址时&#xff0c;若该地址在TLB&#xff08;Translation Lookaside Buffer&#xff0c;快表&#xff09;或页…...

单元测试-Unittest框架实践

文章目录 1.Unittest简介1.1 自动化测试用例编写步骤1.2 相关概念1.3 用例编写规则1.4 断言方法 2.示例2.1 业务代码2.2 编写测试用例2.3 生成报告2.3.1 方法12.3.2 方法2 1.Unittest简介 Unittest是Python自带的单元测试框架&#xff0c;适用于&#xff1a;单元测试、Web自动…...

linux驱动:6ull(3)自动分配设备号来创建led驱动

在 linux驱动&#xff1a;6ull&#xff08;2&#xff09;的文章代码上进行更改 步骤&#xff1a; 创建入口函数和出口函数定义一个设备结构体和创建一个led设备在入口函数init中添加初始化led的gpio在入口函数init中添加自动分配设备号来创建led字符设备在出口函数中取消led的…...

GM_T 0039《密码模块安全检测要求》题目

单项选择题 根据GM/T 0039《密码模块安全检测要求》,送检单位的密码模块应包括()密码主管角色。 A.一个 B.两个 C.至少一个 D.至少两个 正确答案:C 多项选择题 根据GM/T 0039《密码模块安全检测要求》,关于非入侵式安全,以下属于安全三级密码模块要求的是()。 …...

java_网络服务相关_gateway_nacos_feign区别联系

1. spring-cloud-starter-gateway 作用&#xff1a;作为微服务架构的网关&#xff0c;统一入口&#xff0c;处理所有外部请求。 核心能力&#xff1a; 路由转发&#xff08;基于路径、服务名等&#xff09;过滤器&#xff08;鉴权、限流、日志、Header 处理&#xff09;支持负…...

Python爬虫实战:研究feedparser库相关技术

1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...

2021-03-15 iview一些问题

1.iview 在使用tree组件时&#xff0c;发现没有set类的方法&#xff0c;只有get&#xff0c;那么要改变tree值&#xff0c;只能遍历treeData&#xff0c;递归修改treeData的checked&#xff0c;发现无法更改&#xff0c;原因在于check模式下&#xff0c;子元素的勾选状态跟父节…...

React19源码系列之 事件插件系统

事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...

Qt Http Server模块功能及架构

Qt Http Server 是 Qt 6.0 中引入的一个新模块&#xff0c;它提供了一个轻量级的 HTTP 服务器实现&#xff0c;主要用于构建基于 HTTP 的应用程序和服务。 功能介绍&#xff1a; 主要功能 HTTP服务器功能&#xff1a; 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互

引擎版本&#xff1a; 3.8.1 语言&#xff1a; JavaScript/TypeScript、C、Java 环境&#xff1a;Window 参考&#xff1a;Java原生反射机制 您好&#xff0c;我是鹤九日&#xff01; 回顾 在上篇文章中&#xff1a;CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

自然语言处理——Transformer

自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效&#xff0c;它能挖掘数据中的时序信息以及语义信息&#xff0c;但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN&#xff0c;但是…...

Element Plus 表单(el-form)中关于正整数输入的校验规则

目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入&#xff08;联动&#xff09;2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...

Pinocchio 库详解及其在足式机器人上的应用

Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库&#xff0c;专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性&#xff0c;并提供了一个通用的框架&…...

基于TurtleBot3在Gazebo地图实现机器人远程控制

1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...