学习率衰减

加快学习算法的一个办法就是随时间慢慢减少学习率,将之称为学习率衰减,来看看如何做到,首先通过一个例子看看,为什么要计算学习率衰减。

假设要使用mini-batch梯度下降法,mini-batch数量不大,大概64或者128个样本,在迭代过程中会有噪音(蓝色线),下降朝向这里的最小值,但是不会精确地收敛,所以的算法最后在附近摆动,并不会真正收敛,因为用的\(a\)是固定值,不同的mini-batch中有噪音。

但要慢慢减少学习率\(a\)的话,在初期的时候,\(a\)学习率还较大,的学习还是相对较快,但随着\(a\)变小,的步伐也会变慢变小,所以最后的曲线(绿色线)会在最小值附近的一小块区域里摆动,而不是在训练过程中,大幅度在最小值附近摆动。

所以慢慢减少\(a\)的本质在于,在学习初期,能承受较大的步伐,但当开始收敛的时候,小一些的学习率能让步伐小一些。

可以这样做到学习率衰减,记得一代要遍历一次数据,如果有以下这样的训练集,

应该拆分成不同的mini-batch,第一次遍历训练集叫做第一代。第二次就是第二代,依此类推,可以将\(a\)学习率设为\(a= \frac{1}{1 + decayrate * \text{epoch}\text{-num}}a_{0}\)(decay-rate称为衰减率,epoch-num为代数,\(\alpha_{0}\)为初始学习率),注意这个衰减率是另一个需要调整的超参数。

这里有一个具体例子,如果计算了几代,也就是遍历了几次,如果\(a_{0}\)为0.2,衰减率decay-rate为1,那么在第一代中,\(a = \frac{1}{1 + 1}a_{0} = 0.1\),这是在代入这个公式计算(\(a= \frac{1}{1 + decayrate * \text{epoch}\text{-num}}a_{0}\)),此时衰减率是1而代数是1。在第二代学习率为0.67,第三代变成0.5,第四代为0.4等等,可以自己多计算几个数据。要理解,作为代数函数,根据上述公式,的学习率呈递减趋势。如果想用学习率衰减,要做的是要去尝试不同的值,包括超参数\(a_{0}\),以及超参数衰退率,找到合适的值,除了这个学习率衰减的公式,人们还会用其它的公式。

比如,这个叫做指数衰减,其中\(a\)相当于一个小于1的值,如\(a ={0.95}^{\text{epoch-num}} a_{0}\),所以的学习率呈指数下降。

人们用到的其它公式有\(a =\frac{k}{\sqrt{\text{epoch-num}}}a_{0}\)或者\(a =\frac{k}{\sqrt{t}}a_{0}\)(\(t\)为mini-batch的数字)。

有时人们也会用一个离散下降的学习率,也就是某个步骤有某个学习率,一会之后,学习率减少了一半,一会儿减少一半,一会儿又一半,这就是离散下降(discrete stair cease)的意思。

到现在,讲了一些公式,看学习率\(a\)究竟如何随时间变化。人们有时候还会做一件事,手动衰减。如果一次只训练一个模型,如果要花上数小时或数天来训练,有些人的确会这么做,看看自己的模型训练,耗上数日,然后他们觉得,学习速率变慢了,把\(a\)调小一点。手动控制\(a\)当然有用,时复一时,日复一日地手动调整\(a\),只有模型数量小的时候有用,但有时候人们也会这么做。

所以现在有了多个选择来控制学习率\(a\)。可能会想,好多超参数,究竟应该做哪一个选择,觉得,现在担心为时过早。下一周,会讲到,如何系统选择超参数。对而言,学习率衰减并不是尝试的要点,设定一个固定的\(a\),然后好好调整,会有很大的影响,学习率衰减的确大有裨益,有时候可以加快训练,但它并不是会率先尝试的内容。

这就是学习率衰减,最后还要讲讲神经网络中的局部最优以及鞍点,所以能更好理解在训练神经网络过程中,的算法正在解决的优化问题。

神经网络优化篇:详解学习率衰减(Learning rate decay)的更多相关文章

  1. ubuntu之路——day8.5 学习率衰减learning rate decay

    在mini-batch梯度下降法中,我们曾经说过因为分割了baby batch,所以迭代是有波动而且不能够精确收敛于最小值的 因此如果我们将学习率α逐渐变小,就可以使得在学习率α较大的时候加快模型训练 ...

  2. PHP函数篇详解十进制、二进制、八进制和十六进制转换函数说明

    PHP函数篇详解十进制.二进制.八进制和十六进制转换函数说明 作者: 字体:[增加 减小] 类型:转载   中文字符编码研究系列第一期,PHP函数篇详解十进制.二进制.八进制和十六进制互相转换函数说明 ...

  3. 走向DBA[MSSQL篇] 详解游标

    原文:走向DBA[MSSQL篇] 详解游标 前篇回顾:上一篇虫子介绍了一些不常用的数据过滤方式,本篇详细介绍下游标. 概念 简单点说游标的作用就是存储一个结果集,并根据语法将这个结果集的数据逐条处理. ...

  4. Scala进阶之路-Scala函数篇详解

    Scala进阶之路-Scala函数篇详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.传值调用和传名调用 /* @author :yinzhengjie Blog:http: ...

  5. 权重衰减(weight decay)与学习率衰减(learning rate decay)

    本文链接:https://blog.csdn.net/program_developer/article/details/80867468“微信公众号” 1. 权重衰减(weight decay)L2 ...

  6. 跟我学算法-吴恩达老师(mini-batchsize,指数加权平均,Momentum 梯度下降法,RMS prop, Adam 优化算法, Learning rate decay)

    1.mini-batch size 表示每次都只筛选一部分作为训练的样本,进行训练,遍历一次样本的次数为(样本数/单次样本数目) 当mini-batch size 的数量通常介于1,m 之间    当 ...

  7. pytorch learning rate decay

    关于learning rate decay的问题,pytorch 0.2以上的版本已经提供了torch.optim.lr_scheduler的一些函数来解决这个问题. 我在迭代的时候使用的是下面的方法 ...

  8. PyTorch 计算机视觉的迁移学习教程代码详解 (TRANSFER LEARNING FOR COMPUTER VISION TUTORIAL )

    PyTorch 原文: https://pytorch.org/tutorials/beginner/transfer_learning_tutorial.html 参考文章: https://www ...

  9. mxnet设置动态学习率(learning rate)

    https://blog.csdn.net/xiaotao_1/article/details/78874336 如果learning rate很大,算法会在局部最优点附近来回跳动,不会收敛: 如果l ...

  10. CentOS 7 下编译安装lnmp之PHP篇详解

    一.安装环境 宿主机=> win7,虚拟机 centos => 系统版本:centos-release-7-5.1804.el7.centos.x86_64 二.PHP下载 官网 http ...

随机推荐

  1. 构建 dotnet&vue 应用镜像->推送到 Nexus 仓库->部署为 k8s 服务实践

    前言 前面分享了 k8s 的部署安装,本篇来点实操,将会把一个 .net core + vue 的项目(zhontai),打包构建成 docker 镜像,推送到 nexus 镜像仓库,并部署到 k8s ...

  2. Windows Server 2019/2016 配置自动更新和更换大陆更新服务器

    文章原地址: 运行 > gpedit.msc -> 计算机配置 -> 管理模板 -> Windows 组件 -> Windows 更新 下面中右侧三个选项是本篇教程中会介 ...

  3. ctfshow-misc详解(持续更新中)

    杂项签到 题目是个损坏的压缩包,考点:伪加密 修改如下: 保存解压得到flag flag{79ddfa61bda03defa7bfd8d702a656e4} misc2 题目描述: 偶然发现我竟然还有 ...

  4. Pikachu漏洞靶场 敏感信息泄露

    敏感信息泄露 概述 由于后台人员的疏忽或者不当的设计,导致不应该被前端用户看到的数据被轻易的访问到. 比如: 通过访问url下的目录,可以直接列出目录下的文件列表; 输入错误的url参数后报错信息里面 ...

  5. ajax与thymeleaf分别实现数据传输

    小杰笔记篇: 1:第一种:利用Model和thymeleaf引擎来完成: Controller层: @CrossOrigin//解决跨域问题 @Controller public class User ...

  6. 使用Spring AI让你的Spring Boot应用快速拥有生成式AI能力

    之前分享了关于Spring新项目Spring AI的介绍视频.视频里演示了关于使用Spring AI将Open AI的能力整合到Spring应用中的操作,但有不少读者提到是否有博客形式的学习内容.所以 ...

  7. Ubuntu 23.04、22.04、20.04、18.04替换国内源

    Ubuntu配置国内源 配置步骤如下: 1.Ubuntu配置文件位置:/etc/apt/sources.list 2.需要用root权限进入: sudo vi /etc/apt/sources.lis ...

  8. 26、Flutter中命名路由

    Flutter 中的命名路由 main.dart中配置路由 void main() { runApp(MaterialApp( theme: ThemeData( appBarTheme: const ...

  9. GaussDB技术解读系列丨运维自动驾驶探索

    本文分享自华为云社区<DTCC 2023专家解读 | GaussDB技术解读系列之运维自动驾驶探索>,作者:GaussDB 数据库 . 近日,在第14届中国数据库技术大会(DTCC2023 ...

  10. 摆平各类目标检测识别AI应用,有它就够了!

    摘要:在计算机视觉领域,CANN最新开源的通用目标检测与识别样例,通过其强大的可定制.可扩展性,为AI开发者们提供了良好编程选择. 本文分享自华为云社区<摆平各类目标检测识别AI应用,有它就够了 ...