如何快速高效的训练ResNet,各种奇技淫巧(六):权值衰减

2024-06-21 09:18

本文主要是介绍如何快速高效的训练ResNet,各种奇技淫巧(六):权值衰减,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

点击上方“AI公园”,关注公众号,选择加“星标“或“置顶”


作者:David Page

编译:ronghuaiyang

导读

这个系列介绍了如何在CIFAR10上高效的训练ResNet,这是第六篇,给大家讲解权值衰减的相关内容以及训练中的各种动态。

我们了解到更多的关于权值衰减对训练的影响,并发现了一个与LARS之间意想不到的关系。

其中我们更深入地研究了学习率的动态

读者可能在这一点上感到有点不安。上次我们给出了神经网络训练超参数空间中三个关于平坦方向的实验结果和理论解释,但这三个解释并不完全一致……

第一个解释了当λN固定时,训练轨迹与学习率λ和batch size N的选择有弱依赖。类似的观点应用于动量ρ当λ/(1−ρ)是固定的。两者都依赖于SGD + momentum权值更新方程中的一阶项的简单匹配。

第三个参数,对于权值衰减α,是相当不同的,权值衰减明显不是一阶的。我们认为,对于具有尺度对称性的权重,相对于权重范数的梯度消失,二阶效应,在动态中处于主导。更糟糕的是,我们认为,虽然权重范数与网络的正向计算无关,但它们决定了其他参数的有效学习率。

那么一阶参数呢?当我们适当地考虑权值范数的动态时,它们站得住脚吗?实验结果表明,该结论至少是正确的。

我们今天的主要任务是通过对权值范数的动态的更仔细的研究来支持这两个一阶论点。在这个过程中,我们会发现与最近在ImageNet上的大batch训练中引入的分层自适应速率缩放技术有着密切的关系。我们研究了这种关系的含义,并提出它可能是在不同架构的最优学习率显著稳定的背后的原因。

今天的帖子将比之前的帖子更理论化。它包含方程,没有多少实用的建议。尽管如此,我还是希望它能引起一些兴趣。数学都是高中的内容。从积极的方面来说,它使我们在讨论中比以往更加精确,而且就这一点而言,也比文献中各种各样的讨论更为精确。

与LARS的联系主要是出于好奇,但如果付出更多的努力,它“应该”会导致实际训练的改进。与其等待这些结果,我决定按原样发布这篇文章。这份工作早该完成了,因为今年夏天在Myrtle进行的Thomas Read实习非常富有成效。

让我们从更详细地研究权值衰减时的权值范数的动态开始。在开始讨论方程之前,这里是对上节课的要点的总结。

对于具有尺度对称性的权值——由于后续的batch norm,包括我们网络的所有卷积层——梯度与权值正交。因此,梯度更新导致权值范数增加,而权值衰减导致权值减小。

对于小的权重,增长项占主导地位,反之亦然。这导致了一种稳定的控制机制,即权值范数趋近于一个固定点(对于固定学习率和其他超参数),使得权值衰减的一阶收缩效应平衡了正交梯度更新的二阶增长。

也许一些图片会使这一点更加具体。首先,我们绘制每个卷积层的平方权值范数|w|2在训练的每一步中在权值衰减下收缩的量:

640?wx_fmt=png

接下来我们画出|w|2由于梯度更新而增长的量。这看起来更像是第一个图的嘈杂版本——如果它们处于平衡状态,就应该是这样:

640?wx_fmt=png

下面是两个图的叠加:

640?wx_fmt=png

我们也画出|w|2的演化过程。大多数层的权值范数最初会增长,而梯度更新占主导地位,一旦达到平衡,则会逐渐变平或衰减:

640?wx_fmt=png

画出的图进行了归一化,这样每一层的初始化|w|2=1。

我们把它代入方程,从没有momentum的SGD开始。在上次SGD更新的表示法中,SGD更新分为两部分,一个权值衰减项:

640?wx_fmt=png

然后是梯度更新:

640?wx_fmt=png

对于权值的范数,我们有:

640?wx_fmt=png

并且

640?wx_fmt=png

我们使用权值比例对称这一事实,w⋅g = 0。

我们预计训练将达到一种平衡,第一次更新的收缩效果将与第二次更新的增长相平衡,从而:

640?wx_fmt=png

上次,我们回顾了虽然在w缩放的时候,前向计算是不变的,但是SGD更新不是不变的。实际上,如果我们将w缩放一个因子r,那么梯度g的尺度将会是r-1,而不是不变所需的r。因此,权值归一化很重要,并决定了剩余权值的有效步长。

解决这个问题的一种方法是使用不同的优化器,比如LARS。在缺乏动量的情况下,LARS更新为:

640?wx_fmt=png

通过依赖于batch的因子|w|/|g|对梯度进行缩放,实现尺度的不变性。现在方程(3)告诉我们(对于具有尺度不变性的权值)普通的带权值衰减的SGD会驱动这个依赖于batch的因子变为一个固定的值。

640?wx_fmt=png

如果这个比例真的是由每个batch的平衡值给出的,那么SGD和LARS的动态将等于:

640?wx_fmt=png

在下面的图中,我们比较了在没有动量的SGD条件下进行训练时方程右边的两个量。圆点表示λ|g|/|w|的值,黑线表示√2λα:

640?wx_fmt=png

我们看到,在训练的最后,等式不成立的时候,会有一点噪声和小的偏差,对于SGD和LARS,使用一个非常高效的学习率√(2λα)来进行更新是非常相似的。这有点出乎意料,并回避了LARS在这种情况下正在做什么——也许只是提供一个尺度不变的方法来裁剪有噪声的梯度?

这个线性扩展法则,也就是保持λN固定不变,但是学习率和batch size变化的法则到哪去了?高效的学习率参数在LARS中的动态是√(2λα)。

如果我们以因子n缩放batch size,同时λ以因子√n缩放。这看起来不再是线性的了!

事实上,当batch中的梯度由噪声主导时,这正是我们所需要的——因此,不同时间步长的梯度平均彼此正交。在这种情况下,|g|缩放1/√n(来自n个正交贡献的平均)。将两个√n因子组合起来,这样的话,一次大的batch的更新就和n个小batch的更新是一样的。

注意,上面参数中的两个√n因子来自非常不同的来源。首先,由于模型的“精确”对称,可以追溯到梯度和权重之间的正交性。第二种是后续的batch的梯度是由于SGD噪声而相互正交的结果,需要进行实证验证。

这里有个图,是梯度gt和先前的指数移动平均梯度vt−1之间的图。大多数训练的相关系数都接近于零,证实了附近的梯度之间的平均正交性是一个合理的近似。

640?wx_fmt=png

到目前为止,我们只处理了SGD不带momentum的情况。让我们尽可能简短地总结一下,而不是用另一个冗长的论述来拖延读者。同样,我们需要假设不同batch的梯度的平均是正交的。

SGD + momentum对单个梯度gt在多个时间步上应用更新(使用ρ的指数进行加权)。如果我们能够恢复这些更新然后立即应用它们,然后求和几何级数的效果就等于是简单的把学习率λ替换为λ /(1−ρ)。然后我们可以用这个替换重复上面的平衡论证(记住权值衰减项是用同样的方法求和的),并发现:

640?wx_fmt=png

这个论点的难点如下。考虑普通SGD+momentum的动态。在计算梯度g并应用梯度的延时,后续从其他batch来的梯度添加到w上,可能打破g和w之间的正交性,方程(2′)不再成立。梯度的互正交性发挥了作用,LARS在动量存在时的更新为:

640?wx_fmt=png

我们刚刚看到,在batch之间的梯度尺度不变性和正交性假设下,SGD+momentum的动态驱动|w|/|g|达到(7)给出的平衡值。我们可以将一般SGD+momentum的动态与LARS联系起来:

640?wx_fmt=png

这是右边两个量在训练中的情况,ρ= 0.9:

640?wx_fmt=png

因为我们需要对batch之间的正交梯度进行近似,所以这里的差异比以前稍微大一些。这个假设在纯SGD中还没有使用。尽管如此,SGD+momentum的step和使用学习率√2(λα(1−ρ))是非常相似的,主要区别是后一种情况下的一些梯度剪裁。

我们将所有与单个梯度对应的权重更新组合在一起,并依赖于batch之间梯度的正交性来证明这并不影响权值的范数的动态。上次我们应用类似的论点,是依靠低曲率的损失,说的是训练动态主要取决于λ/(1−ρ)而不是单独的参数。如果我们把这两个参数结合在起来,我们会发现单个梯度g在尺度不变形式下的有效贡献近似为:

640?wx_fmt=png

通过对权值动态的适当处理,验证了上次的结果。

那么,经过这么多的努力,我们学到了什么呢?其中一个教训是,人们应该警惕听起来可信的理论!如果我们有一个对称性的模型和一个不具有不变性的优化器,那么任何忽略动态的的群体行为都应该非常谨慎地对待。

也许更有趣的是,与LARS的联系打开了许多研究问题和学习有用东西的可能性!LARS最近成功的将ImageNet训练扩展到非常大的batch size。考虑到LARS与普通SGD之间存在着密切的权值衰减的关系,了解是什么导致LARS性能优越将是非常有趣的。

只是大的梯度被裁剪掉了吗?或者在训练初期的关键阶段,SGD的权值范数还没有达到平衡?无论哪种方法,方法本身都建议将这两种技术更紧密地结合在一起,并隔离重要的差异。如果早期训练在SGD中存在问题,可以调整权值初始化量表,以消除最初的不平衡阶段。如果梯度噪声是问题的所在,那么对选定的层使用较低的学习率和/或较高的动量可能会有所改善,或者只是平滑批次之间的梯度范数。

从这些方面的初步调查中,一个尚未解决的问题是找到一个设置,在这个设置中LARS的训练可以明显地改进当前的网络和CIFAR10数据集。来自ImageNet的结果表明,这里应该有一些东西可以找到。

另一个有趣的可能性来自于LARS的连接,它可以解释架构之间最佳学习率的显著稳定性。虽然我们当时没有对此进行评论,但是在较早的文章中,我们在架构搜索中依赖于此属性。在这里,我们比较了不同架构在固定学习速率计划下的训练精度。有人可能会问,这样的方法是否会选择最好的体系结构,或者更确切地说,选择最优学习率与实验中使用的值最接近的体系结构。

事实上,如果我们把在一系列不同架构上的学习率和测试精度画出来,我们可以看到,根据性能选择λ= 0.4是完全合理的,所有不同的体系结构有着相似的最佳学习率。

640?wx_fmt=png

注意,上面图中的结果平均为三次运行,并经过平滑处理以突出趋势。原始结果如下所示,并说明了为什么我们如此热衷于避免超参数调优!

640?wx_fmt=png

考虑到我们使用的是普通的SGD,而且所有层的学习速度相同,所以架构间最优学习速度的稳定性有点令人惊讶。有人可能会认为,具有不同大小、初始化和网络位置的层可能需要不同的学习率,而由于不同的层组成,架构之间的最佳学习率可能会有显著差异。

一种可能的解释是,具有权值衰减的类LARS动态为不同的层提供了一种有用的自适应缩放类型,以便每个层在尺度不变的单位中接收相同的步长,这使得手动调整每层的学习速率变得不必要。人们可以通过人为地为每一层分别优化学习率,并观察最优值在多大程度上重合,来进行实验探索。

第7部分中,我们研究了batch norm在防止训练过程中的协变量漂移方面的另一个作用。

640?wx_fmt=png

—END—

英文原文:https://myrtle.ai/how-to-train-your-resnet-6-weight-decay/

640?wx_fmt=jpeg

请长按或扫描二维码关注本公众号

喜欢的话,请给我个好看吧640?wx_fmt=gif

这篇关于如何快速高效的训练ResNet,各种奇技淫巧(六):权值衰减的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1080814

相关文章

高效+灵活,万博智云全球发布AWS无代理跨云容灾方案!

摘要 近日,万博智云推出了基于AWS的无代理跨云容灾解决方案,并与拉丁美洲,中东,亚洲的合作伙伴面向全球开展了联合发布。这一方案以AWS应用环境为基础,将HyperBDR平台的高效、灵活和成本效益优势与无代理功能相结合,为全球企业带来实现了更便捷、经济的数据保护。 一、全球联合发布 9月2日,万博智云CEO Michael Wong在线上平台发布AWS无代理跨云容灾解决方案的阐述视频,介绍了

电脑桌面文件删除了怎么找回来?别急,快速恢复攻略在此

在日常使用电脑的过程中,我们经常会遇到这样的情况:一不小心,桌面上的某个重要文件被删除了。这时,大多数人可能会感到惊慌失措,不知所措。 其实,不必过于担心,因为有很多方法可以帮助我们找回被删除的桌面文件。下面,就让我们一起来了解一下这些恢复桌面文件的方法吧。 一、使用撤销操作 如果我们刚刚删除了桌面上的文件,并且还没有进行其他操作,那么可以尝试使用撤销操作来恢复文件。在键盘上同时按下“C

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

高效录音转文字:2024年四大工具精选!

在快节奏的工作生活中,能够快速将录音转换成文字是一项非常实用的能力。特别是在需要记录会议纪要、讲座内容或者是采访素材的时候,一款优秀的在线录音转文字工具能派上大用场。以下推荐几个好用的录音转文字工具! 365在线转文字 直达链接:https://www.pdf365.cn/ 365在线转文字是一款提供在线录音转文字服务的工具,它以其高效、便捷的特点受到用户的青睐。用户无需下载安装任何软件,只

【C++高阶】C++类型转换全攻略:深入理解并高效应用

📝个人主页🌹:Eternity._ ⏩收录专栏⏪:C++ “ 登神长阶 ” 🤡往期回顾🤡:C++ 智能指针 🌹🌹期待您的关注 🌹🌹 ❀C++的类型转换 📒1. C语言中的类型转换📚2. C++强制类型转换⛰️static_cast🌞reinterpret_cast⭐const_cast🍁dynamic_cast 📜3. C++强制类型转换的原因📝

hdu 4565 推倒公式+矩阵快速幂

题意 求下式的值: Sn=⌈ (a+b√)n⌉%m S_n = \lceil\ (a + \sqrt{b}) ^ n \rceil\% m 其中: 0<a,m<215 0< a, m < 2^{15} 0<b,n<231 0 < b, n < 2^{31} (a−1)2<b<a2 (a-1)^2< b < a^2 解析 令: An=(a+b√)n A_n = (a +

v0.dev快速开发

探索v0.dev:次世代开发者之利器 今之技艺日新月异,开发者之工具亦随之进步不辍。v0.dev者,新兴之开发者利器也,迅速引起众多开发者之瞩目。本文将引汝探究v0.dev之基本功能与优势,助汝速速上手,提升开发之效率。 何谓v0.dev? v0.dev者,现代化之开发者工具也,旨在简化并加速软件开发之过程。其集多种功能于一体,助开发者高效编写、测试及部署代码。无论汝为前端开发者、后端开发者

基于 YOLOv5 的积水检测系统:打造高效智能的智慧城市应用

在城市发展中,积水问题日益严重,特别是在大雨过后,积水往往会影响交通甚至威胁人们的安全。通过现代计算机视觉技术,我们能够智能化地检测和识别积水区域,减少潜在危险。本文将介绍如何使用 YOLOv5 和 PyQt5 搭建一个积水检测系统,结合深度学习和直观的图形界面,为用户提供高效的解决方案。 源码地址: PyQt5+YoloV5 实现积水检测系统 预览: 项目背景

MiniGPT-3D, 首个高效的3D点云大语言模型,仅需一张RTX3090显卡,训练一天时间,已开源

项目主页:https://tangyuan96.github.io/minigpt_3d_project_page/ 代码:https://github.com/TangYuan96/MiniGPT-3D 论文:https://arxiv.org/pdf/2405.01413 MiniGPT-3D在多个任务上取得了SoTA,被ACM MM2024接收,只拥有47.8M的可训练参数,在一张RTX

利用命令模式构建高效的手游后端架构

在现代手游开发中,后端架构的设计对于支持高并发、快速迭代和复杂游戏逻辑至关重要。命令模式作为一种行为设计模式,可以有效地解耦请求的发起者与接收者,提升系统的可维护性和扩展性。本文将深入探讨如何利用命令模式构建一个强大且灵活的手游后端架构。 1. 命令模式的概念与优势 命令模式通过将请求封装为对象,使得请求的发起者和接收者之间的耦合度降低。这种模式的主要优势包括: 解耦请求发起者与处理者