深度学习分类任务学习率策略

深度学习分类任务学习率策略 Learning Rate Scheduler

选择一个好的学习率变化策略,不但可以提高训练精度而且在某些情况下还可以节约训练时间。

在这里,我跟大家分享一下我通俗易懂的理解。想象一下这个场景:一只饥饿的狗,靠嗅觉寻找食物,为了提高搜索效率,当气味很淡的时候,狗跑得比较快,这是为了能尽快搜索比较大的范围,但是一旦嗅到了一点食物的气味,狗就会放慢脚步,更加仔细的去搜索,向气味更浓的方向前进,因为这个时候,如果再保持快速的移动,可能就会错过这个食物。

在这里插入图片描述

与这个例子类似,深度学习训练过程中的学习率,Learning Rate,大家就可以理解为狗的移动速度,如果学习率为0,也就意味这狗已经停了下来。

我们可以把这个过程总结如下:

  1. 用比较大的学习率先找到一组相对比较好的权重系数。
  2. 用比较小的学习率在第一步的基础上进行优化

我们经常遇到的学习率变化方式有两种:

  1. 学习率随着epoch数量逐渐变化,这种变化可以是线性的,多项式的,或者指数的等等。
  2. 学习率的变化也可以是一个分段函数,比如说是一个阶跃函数。

我现在首先为大家介绍一下Keras中标准学习率下降的方法

这是学习率下降的伪码:

lr = init_lr * (1.0 / (1.0 + decay * iterations))

值得注意的是,这里面的iterations并不是epoch的数量,而是batch的数量,比如我们加载的cifar10数据集一共有3000张图片,我们的batch_size设置为64,那么每轮epoch,iterations的数量都会增大ceil(50000/64) = 782

第一轮之后,学习率就变成了:

lr = 0.01 * (1.0 / (1.0 + 0.00025 * (1 * 782))) = 0.00836

现在我分别将lr设置为0.01/40和0,进行对比,0也就意味着没有学习率的调整。

先看有学习率调整的情况:

在这里插入图片描述

在这里插入图片描述

再看没有学习率调整的情况:

在这里插入图片描述

在这里插入图片描述

理论上说有学习率变化的情况,无论从精确度和过拟合这两个方面,的训练效果应该好一些,但可能由于样本的随即分配等原因,Keras默认的学习率变化方法在cifar10上并没有体现出什么优势。

下面为大家介绍另一种常见的学习率调整方法,指数递减的阶跃函数。

这也就意味着每隔一定的epoch就将学习率调整得小一点,一个常见的方式就是每隔固定的epoch就指数衰减学习率,公式如下:
α E + 1 = α I × F ( 1 + E ) / D \alpha_{E+1}=\alpha_{I}\times F^{(1+E)/D} αE+1=αI×F(1+E)/D
用伪码来表示就是:

alpha = initAlpha * (factor ** np.floor((1 + epoch) / dropEvery))

用python写出来就是:

def step_decay(epoch):
    initAlpha = 0.01
    factor = 0.25
    dropEvery = 5
    alpha = initAlpha * (factor ** np.floor((1 + epoch) / dropEvery))
    return float(alpha)

OK,现在我们把这种改变学习率的方式通过callbacks参数带入到训练过程中:

callbacks = [LearningRateScheduler(step_decay)]
H = model.fit(trainX, trainY, validation_data=(testX,testY),batch_size=64, epochs=epochs, verbose=1, callbacks=callbacks)

下面就是见证奇迹的时刻了!

fatcor=0.25的时候:

在这里插入图片描述

在这里插入图片描述

下面是factor=0.5的时候:

在这里插入图片描述

在这里插入图片描述

Emmm…通过结果的对比我们可以发现,虽然看起来准确率…有那么一丢丢的损失,不过这过拟合over fitting确实给消除的非常非常好,训练出来的权重也会有更好的普适性,精度嘛,多搞点样本训练还是可以解决地。

今天是2021年的第一天,我所在的城市正在面临疫情的风险,正在进行全民的核酸检测。过去的2020年是充满变化的一年,与我今天与大家分享的学习率逐渐降低相反,2021年,乃至以后的每一年,世界的变化只会越来越快,没人知道世界10年后会是什么样子,比如在深度学习图像处理领域,相信Transformer即将大行其道,也许会颠覆了CNN在这一领域的绝对霸主地位。我们作为社会中的一分子,就一定要不断的学习,保持空瓶心态,不断的加深迭代自己的认知,不断发现问题并及时的修正自己的前进方向,祝大家新年快乐!

我正在筹划在2021年推出我的新关于深度学习图像处理的视频课,这篇帖子中的内容会是这个视频课的一部分,届时欢迎大家支持。

最后向大家推荐一下我的OpencV视频课,对图像处理感兴趣的朋友学完之后一定会收获满满

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值