深度学习的学习率

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

new_weight= existing_weight — learning_rate * gradient

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

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

 

学习率的调整方法:

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

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

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

  • 4
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
深度学习模型的学习率是一个非常重要的超参数,它决定了模型在每次迭代中更新参数的步长大小。学习率设置不当会导致模型无法收敛或者收敛过慢,影响模型的性能。 一般来说,学习率的设置需要结合具体的模型和数据集进行调整。这里介绍一些常用的学习率设置方法: 1. 固定学习率:可以根据经验或者调参的结果选择一个合适的学习率,并在训练过程中固定不变。 2. 学习率衰减:在训练过程中逐渐降低学习率,可以使模型在初期快速收敛,在后期更好地优化参数。常见的学习率衰减方法有: - 周期性衰减:每隔一定的迭代次数降低学习率,可以使用StepLR或者MultiStepLR。 - 衰减速率衰减:每次迭代降低一个固定的衰减速率,可以使用ExponentialLR或者CosineAnnealingLR。 - 指数衰减:每次迭代将学习率除以一个固定的指数,可以使用ReduceLROnPlateau。 3. 自适应学习率:根据梯度和历史梯度等信息自动适应调整学习率,可以使模型更加稳定和高效。常见的自适应学习率方法有: - AdaGrad:针对每个参数自适应调整学习率,对历史梯度进行累加和平方根运算,使得梯度较大的参数学习率较小,梯度较小的参数学习率较大。 - RMSProp:对AdaGrad的缺陷进行改进,引入指数加权平均来平衡历史梯度和当前梯度对学习率的贡献。 - Adam:将动量和RMSProp结合起来,同时考虑梯度和历史梯度的影响,更加稳定和高效。 需要注意的是,学习率的设置需要结合具体的模型和数据集进行调整,不同的模型和数据集可能需要不同的学习率设置策略。初次尝试可以先使用较小的学习率进行训练,然后根据训练结果逐步调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值