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

深度学习(五)学习率的调节   学习率对于深度学习是一个重要的超参数,它控制着基于损失梯度调整神经网络权值的速度,大多数优化算法(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

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • pycharm许可证服务器_pycharm安装后打不开程序

    pycharm许可证服务器_pycharm安装后打不开程序出现这个问题解决方法:点击File>Settings>Tools>ServerCertificates>Acceptnon-trustedcertificatesautomatically勾上就好啦~补充:pycharm启动出现Server’scertificateisnottrusted提示框的问题解决windows下pycharm启动出…

    2025年5月31日
    2
  • 计算机网络 — HTTP协议 和 HTTPS[通俗易懂]

    计算机网络 — HTTP协议 和 HTTPS[通俗易懂]1.了解HTTP协议1.1HTTP是什么HTTP(HyperTextTransferProtocol,超文本传输协议)是一种应用非常广泛的应用层协议.所谓“超文本”的含义,就是传输的内容不仅仅是文本(比如html,css这个就是文本),还可以是一些其他的资源,比如图片,视频,音频等二进制的数据1.2抓包工具的使用1.Fiddler的下载①可以直接在官网下载Fiddler官网地址②也可以直接进入fiddler搜索页2.Fiddl

    2022年10月16日
    4
  • java tess4j ddl,分配为war NoClassDefFoundError后出现Tess4J错误:无法初始化类net.sourceforge.tess4j.TessAPI…「建议收藏」

    java tess4j ddl,分配为war NoClassDefFoundError后出现Tess4J错误:无法初始化类net.sourceforge.tess4j.TessAPI…「建议收藏」IhaveSpringbootWebserverprojectwhichworksokinmyPCunderIntellijIDEA,butitnotworksafterdistributingtothesamePCaswarfile-NoClassDefFoundError:Couldnotinitializeclassnet…

    2022年5月10日
    39
  • VC编程常见问题解答收集贴

    VC编程常见问题解答收集贴1.使用ModifyStyleEx改变了控件风格无效答:修改之后,重绘一次,如果还不行的话,再试试看调用SetWindowPos(0,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE|SWP_DRAWFRAME);2.动态设置编辑框的ES_PASSWORD无效答:修改之后,需要调用一次SetPasswordChar(*);3.如何获取任务栏小图标?答:有网友提出,能

    2022年7月19日
    15
  • msfconsole学习

    msfconsole学习工具:Quasar-winAhMyth-andriod

    2025年9月29日
    5
  • pytorch – 数据读取机制中的Dataloader与Dataset

    pytorch – 数据读取机制中的Dataloader与Dataset1、人民币二分类要求:将第四套人民币中的一元和一百元进行二分类;怎么建立一个预测模型呢?考虑上一个博客中的机器学习模型训练五大步骤;第一是数据,第二是模型,第三是损失函数,第四是优化器,第五个是迭代训练过程。这里主要学习数据模块当中的数据读取,数据模块通常还会分为四个子模块,数据收集、数据划分、数据读取、数据预处理。在进行实验之前,需要收集数据,数据包括原始样本和标签;有了原始数据之后,…

    2022年5月1日
    288

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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