首先一开始需要提出一个新的问题,那就是在参数更新次数不断增加,loss却趋于一个低值不再减小。一般情况我们会认为这个是遇到local minima了,但是一看梯度的具体值会发现,梯度值并不为0。那么他就有可能是卡在这个两壁之间了,左右横跳,左右都是一样的loss,梯度不为0还在横跳.

并且这种可能性比critical point的可能性大多了,而且一般在掉到最底下之前,就会被其他问题阻挠。

通过上图我们来论证一下卡在两壁之间真比掉到最底下更容易发生吗。

上图是一个很普通的loss值的等高线图,×就是我们要到达的地方。黑点是起始点,如果先把n也就是学习率设为0.01,learning rate会乘以梯度成为移动的距离,所以它其实就是我们迈出的步伐的大小,然后就会发现步伐太大了就跨过了,一直跨过头,就如同×在山谷底,而我们在前后山壁上来回跳。

那如果吧n设的更小一点,让步伐迈小一点呢。首先这个等高线之间其实就是梯度,那么等高线越密集的地方,梯度越密集,也就是梯度越大,所以在一开始还能走很大一步,但是一旦走到这个圈里面了,没有高度的变化了,梯度几乎为0 ,学习率也被设置的很小,那么移动的步伐会非常的小,根本就到不了×这个地方,图里面的这里就是更新100000次仍然只走了这么一点。


那我们发现问题其实就在学习率上面,我们会很轻易的想到,如果在高度变化小的地方,比如下图中沿着这个等高线的方向,或者是线的圈内,这个时候的learning rate大一点就好了,因为这个时候的g小,步伐迈不出去。并且在垂直跨越等高线,g会比较大的时候,learning rate能小一点就好了,这样就不会跨过头,在两壁之间反复横跳了。

所以需要这个learning rate可以自动调整,在坡度大的方向时小,坡度小的方向大。如下图,这里讲的时候假设只关注下标i这个参数,所以所有的都会带有下标i。将n除以一个σ,这个σ与上标t有关。这个σ叫做n这个参数的依赖(parameter dependent)。

先讲第一种简单的σ定义方式,叫做root mean square均方根。公式如下图。

简单来说,这个σ就是把过去所有的g都算均方根,平方相加再开根。它的效果如下右图,假设θ1是一个比较变化平缓的参数,是个平原谷,那么这个上面的蓝色g值都很小,那么σ也会小,σ是分母,所以n就会大。而θ2是一个陡峭谷,它上面有很大的g,那么Σ这个分母就会大,n就会小。这样就达到了让n可以根据在g方向上的变化剧烈与否(g陡峭与否)来相应改变了。

 

这种方法其实也是有问题的,比如下面这个新月形状的分布图。会发现比如说w1这个横轴方向上,绿色箭头的坡度是陡峭的,而红色箭头也是水平方向,但是它几乎是沿着等高线的,它反而需要大的学习率。所以说在这种比较复杂的error surface上,需要学习率更加动态的调整。

也比如下面的刚才提到的很简单的哪个error surface如果应用均方根的方法试一下,就会发现,在达到中间之后确实会 前进一段,但是很快由于过小的g会调整带来很大的n,导致发生了上下方向的喷发,但是喷发一会之后又会回到水平上的移动,但是不一会儿又会喷发。


那么就有更好的方法来设置σ,就是加权重。这里的α就是加入的权重,它把当前一次的g和有上一个σ带来的过去所有的g值分开,分开给予不同的权值。这个α就是一个超参数,由个人来定义。

下右图其实就是说明了σ这个参数的作用就是平地踩油门,下坡踩刹车。

并且,今天RMSProp和Momentum已经集成叫做Adam,被pytorch内嵌封装了,不需要自己写。


Learning Rate Scheduling

σ还有一个最最最终极升级版,因为在均方根的应用时出现了喷发的情况,所以出现了一种论调,是给n与时间t相关起来,并且是随着t的增加,n逐渐减小,叫做Learning Rate Decay。如下图并且确实解决了喷发问题。

然后除了持续减小,其实还有一种没有被理论验证,没有数学计算支撑的黑科技,那就是warm up,它随时间是先增后减的,有一些文章用到了这个技术,但是都没有给出解释为什么要这么做。

然后这个技术也和momentum一起集成了,叫做RAdam。

上图最后中,虽然三个参数都与t相关,也就是跟每一次的参数更新都有关,但是他们对于g的用法是不一样的,M是考虑方向来计算的,而σ是平方在开放,就只在乎值的大小了。


最后有一些个人的感慨:机器学习确实和数学联系非常紧密,我是指这种思考问题的方式非常相似,你会发现机器学习的发展并不是圈地自乐,他会联系物理联系数学去理解去解释问题,甚至由此解决问题。并且就像从均方根发展到分权重这一步一样,数学中很多问题都有这样的情况和发展路径。

4.1-自动调整学习速率相关推荐

  1. 【深度学习】02-04-类神经网络训练不起来怎么办?(自动调整学习速率)-李宏毅老师2122深度学习课程笔记

    自动调整学习速率 总结 Training stuck ≠ Small Gradient(训练卡住不代表小梯度)- 有可能是梯度还很大但是训练停止了(在峡谷间震荡不能到峡谷底部) 为什么需要自动调整学习 ...

  2. 机器学习算法如何调参?这里有一份神经网络学习速率设置指南

    作者:Jeremy Jordan,机器之心编译,参与:黄小天.许迪 每个机器学习的研究者都会面临调参过程的考验,而在调参过程中,学习速率(learning rate)的调整则又是非常重要的一部分.学习 ...

  3. 学习速率 learning rate

    学习速率的选取策略 运用梯度下降算法进行优化时,权重的更新规则中,在梯度项前会乘以一个系数,这个系数就叫学习速率 ααα : 如果学习速率太小,则会使收敛过慢. 如果学习速率太大,则会导致代价函数振荡 ...

  4. 深度学习-Tensorflow2.2-深度学习基础和tf.keras{1}-优化函数,学习速率,反向传播,网络优化与超参数选择,Dropout 抑制过拟合概述-07

    多层感知器: 优化使用梯度下降算法 学习速率 学习速率选取原则 反向传播 SGD RMSprop Adam learning_rate=0.01 # -*- coding: utf-8 -*- # - ...

  5. learning rate 学习速率

    ** 在具体实践中,可通过查看损失函数值随时间的变化曲线,来判断学习速率的选取是合适的. ** ** 合适的学习速率,损失函数随时间下降,直到一个底部不合适的学习速率,损失函数可能会发生震荡. **

  6. 如何选择梯度下降法中的学习速率α(Gradient Descent Learning Rate Alpha)

    梯度下降算法的任务是寻找参数θ,使之能够最小化损失函数. 那么梯度下降法中的学习速率α应该如何选择呢?通常我们画出损失函数随迭代次数增加而变化的曲线. 可能会得到如下的一条曲线,x轴表示迭代次数,y轴 ...

  7. RFC2889MAC地址学习速率——网络测试仪实操

    一.简介 RFC 2889为LAN交换设备的基准测试提供了方法学,它将RFC 2544中为网络互联设备基准测试所定义的方法学扩展到了交换设备,提供了交换机转发性能(Forwarding Perform ...

  8. 论文翻译:双端通话频域回声消除中学习速率的调整

    <On Adjusting the Learning Rate in Frequency Domain Echo Cancellation With Double-Talk> 文章目录 & ...

  9. 神经网络的泛化能力、学习速率

    神经网络的泛化能力 在实际中,为了保证神经网络具有较强的泛化能力,就必须首先掌握哪些因素会影响神经网络的泛化能力,以及神经网络的泛化能力是如何受到他们影响的.主要有以下几个方面: 1.         ...

  10. 优化函数、学习速率 与反向传播算法

    多层感知器 梯度下降法 梯度下降法是一种致力于找到函数极值点的算法. 所谓"学习"便是改进模型参数,以便通过大量训练步骤将损失最小化.有了这个概念,将梯度下降法应用于寻找损失函数的 ...

最新文章

  1. android屏幕适配的目的,Android 不同分辨率下屏幕适配的实战方案与经验总结
  2. 微信小程序背景图虚化
  3. QTextEdit查找某个字符串更换颜色样式
  4. Java sqlite事务方法,Java SQLiteDatabase.insert方法代码示例
  5. 95-860-045-源码-定时器-InternalTimerService
  6. (编译适用于ARM的linux内核并进行QEMU仿真)Compile Linux kernel 3.2 for ARM and emulate with QEMU
  7. python判断字符串里的字符_Python检测字符串中是否包含某字符集合中的字符
  8. mysql 常用管理命令
  9. Java编程思想 PDF
  10. 读书笔记1:《C++沉思录》
  11. A Deep Q-Network for the Beer Game: A Reinforcement Learning Algorithm to Solve Inventory Optimizati
  12. 科目二 领线30cm的方法 LTS
  13. CSS设置背景图像的属性
  14. 用百度搜索sb,第一个结果是??
  15. java求长方体体积用什么类_Java题求解: 设计一个求长方体的体积和表面积的类Cube,包括以下属性和方法。 l1:长方体...
  16. vue3+Echart
  17. 2020双十一成交额 双11各电商平台销售额数据
  18. 非常实用,Android引用ttf图标字体库
  19. 更换手机号码之后常用操作
  20. 软件:推荐六款实用的录频软件

热门文章

  1. php在广告策划方面需要什么,网上推广网店运营 系统是基于PHP+MySQL的B2B(电子商务)行业门户解决方案”是什么意思呢,谢谢...
  2. 深度学习笔记~集成方法bagging, boosting和stacking
  3. 永硕E盘 - ys168.com 免费网盘右侧广告关闭方法
  4. python协成_python基础26 -----python进程及协成
  5. 雾霾都没走!尾气净化器就别来凑热闹了!
  6. (转载)洪磊并不是反叛英雄
  7. 用计算机数字打喜欢你,喜欢你数字怎么表示,“我喜欢你”用数字怎么
  8. FTP上传和WEB上传的区别
  9. web、ftp上传区别
  10. Python 从入门到入魔