深度学习(五)学习率的调节

深度学习(五)学习率的调节   学习率对于深度学习是一个重要的超参数,它控制着基于损失梯度调整神经网络权值的速度,大多数优化算法(SGD、RMSprop、Adam)对其都有所涉及。学习率越小,损失梯度下降的速度越慢,收敛的时间更长,如公式所示:new_weight=existing_weight—learning_rate*gradient(新权值=当前权值–学习率×梯度)    如果学习…

大家好,又见面了,我是你们的朋友全栈君。

      学习率对于深度学习是一个重要的超参数,它控制着基于损失梯度调整神经网络权值的速度,大多数优化算法(SGD、RMSprop、Adam)对其都有所涉及。学习率越小,损失梯度下降的速度越慢,收敛的时间更长,如公式所示:

new_weight= existing_weight — learning_rate * gradient

(新权值 = 当前权值 – 学习率 × 梯度)

深度学习(五)学习率的调节

       如果学习率过小,梯度下降很慢,如果学习率过大,如Andrew Ng的Stanford公开课程所说梯度下降的步子过大可能会跨过最优值。不同的学习率对loss的影响如下图所示:

深度学习(五)学习率的调节

学习率的调整方法:

1、从自己和其他人一般的经验来看,学习率可以设置为310.50.10.050.010.0050.0050.00010.00001具体需结合实际情况对比判断,小的学习率收敛慢,但能将loss值降到更低。

2、根据数据集的大小来选择合适的学习率,当使用平方和误差作为成本函数时,随着数据量的增多,学习率应该被设置为相应更小的值(从梯度下降算法的原理可以分析得出)。另一种方法就是,选择不受数据集大小影响的成本函数-均值平方差函数。

3、训练全过程并不是使用一个固定值的学习速度,而是随着时间的推移让学习率动态变化,比如刚开始训练,离下山地点的最优值还很远,那么可以使用较大的学习率下的快一点,当快接近最优值时为避免跨过最优值,下山速度要放缓,即应使用较小学习率训练,具体情况下因为我们也不知道训练时的最优值,所以具体的解决办法是:在每次迭代后,使用估计的模型的参数来查看误差函数的值,如果相对于上一次迭代,错误率减少了,就可以增大学习率如果相对于上一次迭代,错误率增大了,那么应该重新设置上一轮迭代的值,并且减少学习率到之前的50%。因此,这是一种学习率自适应调节的方法。在CaffeTensorflow等深度学习框架中都有很简单直接的学习率动态变化设置方法。

参考链接:https://blog.csdn.net/john_kai/article/details/72861731

                 http://www.sohu.com/a/219390129_100044418

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/143869.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • IntelliJ Idea 常用12款插件(提高开发效率),附优秀主题插件[通俗易懂]

    插件安装方式:新版本IDE安装方式略有不同,不一一赘述1、BackgroundImagePlus这款插件并不能直接提高你的开发效率,但是可以让你面对的IDE不再单调,当把背景设置成你自己心仪的的图片,是不是会感觉很赏心悦目,编码效率会不会因此间接的提高?!使用方法:2、MybatisLogPluginMybatis现在是j…

  • 2020美赛C题解题思路(A Wealth of Data)[通俗易懂]

    2020美赛C题解题思路(A Wealth of Data)[通俗易懂](占个坑,B题已写完并发布,现正写C题)《数学建模想获奖?国赛、美赛看这一个就够了》——数学建模的进阶指南!内容全面、门类齐全,包含组队、日常训练、算法(含MATLAB代码)、建模、写作和“高校内部培训资源”等诸多方面的指导!千载难逢、不容错过!——有条件的朋友们支持一下,谢谢!需要“数学建模国赛美赛资源包”的关注公众号“猫和真人”,回复“1”即可获得资源包,有条件的支持一下哈!…

  • Java重载和重写的区别「建议收藏」

    Java重载和重写的区别「建议收藏」1、方法的重载的概念在同一个类中,允许存在一个以上的同名方法,只要同名的参数个数或者参数类型不同即可。总结:”两同一不同”:同一个类、相同方法名参数列表不同:参数个数不同,参数类型不同2、例构成重载的举例:不能构成重载的举例:3、如何判断是否构成方法的重载?严格按照定义判断:两同一不同跟方法的权限修饰符、返回值类型、形参变量名、方法体都没关系!4、如何确定类中某一个方法的调用:方法名——>参数列表子类继承父类以后,可以对父类中同名同参数的方法,进行覆盖操作重写以后,当创建子类对象以后,通过

  • ParameterizedThreadStart 实例化[通俗易懂]

    ParameterizedThreadStart 实例化[通俗易懂]C#之线程ParameterizedThreadStart今天用到了ParameterizedThreadStart的实例化对象,但是总提示没有与委托匹配的重载,网上搜索了很多,终于明白什么原因了,再次记录下方便以后查阅。classProgram{staticvoidMain(string[]args){Workwork=newWork();//两种实…

  • powershell校验哈希值_哈希校验什么意思

    powershell校验哈希值_哈希校验什么意思  在不安装任何第三方软件的情况下,我们也可在Windows中直接使用Powershell校验文件多种算法的哈希值,其中就包括:SHA1、SHA256、SHA384、SHA512、MACTripleDES、MD5、RIPEMD160算法。  使用起来也非常简单,大家可以参考如下示例:Get-FileHash[-Path文件路径][-Algorithm算法]…

  • 2019PHP面试题大全【PHP基础部分】

    2019PHP面试题大全【PHP基础部分】

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号