学习率(Learning rate)的理解以及如何调整学习率
1. 什么是学习率(Learning rate)?
学习率(Learning rate)作为监督学习以及深度学习中重要的超参,其决定着目标函数能否收敛到局部最小值以及何时收敛到最小值。合适的学习率能够使目标函数在合适的时间内收敛到局部最小值。
这里以梯度下降为例,来观察一下不同的学习率对代价函数的收敛过程的影响(这里以代价函数为凸函数为例):
回顾一下梯度下降的代码:
repeat{
$ \theta_j = \theta_j - \alpha \frac{\Delta J(\theta)}{\Delta \theta_j} $
}
当学习率设置的过小时,收敛过程如下:
当学习率设置的过大时,收敛过程如下:
由上图可以看出来,当学习率设置的过小时,收敛过程将变得十分缓慢。而当学习率设置的过大时,梯度可能会在最小值附近来回震荡,甚至可能无法收敛。
我们再来看一下学习率对深度学习模型训练的影响:
可以由上图看出,固定学习率时,当到达收敛状态时,会在最优值附近一个较大的区域内摆动;而当随着迭代轮次的增加而减小学习率,会使得在收敛时,在最优值附近一个更小的区域内摆动。(之所以曲线震荡朝向最优值收敛,是因为在每一个mini-batch中都存在噪音)。
因此,选择一个合适的学习率,对于模型的训练将至关重要。下面来了解一些学习率调整的方法。
2. 学习率的调整
2.1 离散下降(discrete staircase)
对于深度学习来说,每 $ t $ 轮学习,学习率减半。对于监督学习来说,初始设置一个较大的学习率,然后随着迭代次数的增加,减小学习率。
2.2 指数减缓(exponential decay)
对于深度学习来说,学习率按训练轮数增长指数差值递减。例如:
\[ \alpha = 0.95^{epoch\_num} \cdot \alpha_0 \]
又或者公式为:
\[ \alpha = \frac{k}{\sqrt {epoch\_num}} \]
其中epoch_num为当前epoch的迭代轮数。不过第二种方法会引入另一个超参 $ k $ 。
2.3 分数减缓(1/t decay)
对于深度学习来说,学习率按照公式 $ \alpha = \frac{\alpha}{1+ {decay _ rate} * {epoch _ num}} $ 变化, decay_rate控制减缓幅度。
引用及参考:
[1] https://mooc.study.163.com/learn/2001281003?tid=2001391036#/learn/content?type=detail&id=2001702125&cid=2001693086
[2] https://www.cnblogs.com/keguo/p/6244253.html
[3] https://blog.csdn.net/jningwei/article/details/79243800
[4] https://baijiahao.baidu.com/s?id=1591531217345055627&wfr=spider&for=pc
写在最后:本文参考以上资料进行整合与总结,属于原创,文章中可能出现理解不当的地方,若有所见解或异议可在下方评论,谢谢!
若需转载请注明:https://www.cnblogs.com/lliuye/p/9471231.html
学习率(Learning rate)的理解以及如何调整学习率的更多相关文章
- 深度学习: 学习率 (learning rate)
Introduction 学习率 (learning rate),控制 模型的 学习进度 : lr 即 stride (步长) ,即反向传播算法中的 ηη : ωn←ωn−η∂L∂ωnωn←ωn−η∂ ...
- 学习率 Learning Rate
本文从梯度学习算法的角度中看学习率对于学习算法性能的影响,以及介绍如何调整学习率的一般经验和技巧. 在机器学习中,监督式学习(Supervised Learning)通过定义一个模型,并根据训练集上的 ...
- mxnet设置动态学习率(learning rate)
https://blog.csdn.net/xiaotao_1/article/details/78874336 如果learning rate很大,算法会在局部最优点附近来回跳动,不会收敛: 如果l ...
- 权重衰减(weight decay)与学习率衰减(learning rate decay)
本文链接:https://blog.csdn.net/program_developer/article/details/80867468“微信公众号” 1. 权重衰减(weight decay)L2 ...
- Dynamic learning rate in training - 培训中的动态学习率
I'm using keras 2.1.* and want to change the learning rate during training. I know about the schedul ...
- ubuntu之路——day8.5 学习率衰减learning rate decay
在mini-batch梯度下降法中,我们曾经说过因为分割了baby batch,所以迭代是有波动而且不能够精确收敛于最小值的 因此如果我们将学习率α逐渐变小,就可以使得在学习率α较大的时候加快模型训练 ...
- Pytorch调整学习率
每隔一定的epoch调整学习率 def adjust_learning_rate(optimizer, epoch): """Sets the learning rate ...
- 跟我学算法-吴恩达老师(mini-batchsize,指数加权平均,Momentum 梯度下降法,RMS prop, Adam 优化算法, Learning rate decay)
1.mini-batch size 表示每次都只筛选一部分作为训练的样本,进行训练,遍历一次样本的次数为(样本数/单次样本数目) 当mini-batch size 的数量通常介于1,m 之间 当 ...
- Keras 自适应Learning Rate (LearningRateScheduler)
When training deep neural networks, it is often useful to reduce learning rate as the training progr ...
随机推荐
- LOOP AT GROUP语法熟悉
SELECT * FROM EKKO INTO TABLE @DATA(LT_EKKO) UP TO 100 ROWS. SORT LT_EKKO BY LIFNR ERNAM. LOOP AT LT ...
- ES6的Promise对象
http://es6.ruanyifeng.com/#docs/promise Promise 对象 Promise 的含义 基本用法 Promise.prototype.then() Promise ...
- TCP/IP协议、HTTP协议
一.序: TCP/IP协议是程序开发的基础知识,我们都知道它可以实现不同计算机之间的通信,它是什么意思?怎么实现通信的? 二.TCP/IP协议: (1)协议:约定 (2)tcp/ip:tcp是传输控制 ...
- 16-[JavaScript]-ECMAScript 2
1.流程控制:if switch <!DOCTYPE html> <html> <head> <meta charset="UTF-8"& ...
- caffe windows编译
MicroSoft维护的caffe已经作为官方的caffe分支了,编译方式也改了,刚好最近重装了一次caffe windows, 记录一下里面的坑 https://github.com/BVLC/ca ...
- JAVAWEB servlet验证登录时进行完全的非空判断防止空值登录
如果不进行完全的非空判断,那么对 "" 这种类型的空值就会导致直接登录 所以需要用下面的字符串处理方法对其进行判断 这样就可以防止空值登录了 容易出现的混淆错误: 这里的空值登录容 ...
- Java并发工具类(一):等待多线程完成的CountDownLatch
作用 CountDownLatch是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程的操作执行完后再执行 简介 CountDownLatch是在java1.5被引入的,存在于java.uti ...
- jquery 直接访问图片路径
jQuery("#img").attr("src",function(){return this.src+"?"});
- MySQL ZIP Archive 5.7.17 安装方法
1.下载 2.解压缩 3.创建/修改配置文件 在MySQL安装目录下,新建my.ini,内容如下参考 [mysql] # 设置mysql客户端默认字符集 default-character-set=u ...
- Pyhton配置CGI
目录 CGI配置(Mac版) 添加CGI python文件测试 CGI--common gateway interface 通用网关接口的意思,本文通过python的CGI来整体了解下CGI的配置和使 ...