Amazon深度学习工程师总结的分类模型炼丹技巧总结

论文名称:Bag of Tricks for Image Classification with Convolutional Neural Networks

论文链接:https://arxiv.org/pdf/1812.01187.pdf

很多时候,外界同学管深度学习算法工程师叫做调参工程师,简单直接的概括了深度学习工程师的工作,搞深度学习的同学自己也经常自嘲,称自己的工作是炼丹,的确,深度学习模型有时候确实很奇妙,而调参在一个模型的优化中起着至关重要的作用,正因为如此,也有越来越多的研究放在了调参这件事上,比如:学习率的优化算法,模型初始化算法等等。

其实,拿一个别人已经训练好的模型(比如ImageNet上预训练的ResNet),直接在自己的数据集上进行finetune,不需要怎么调参,一般都会得到不错的效果,这就是站在巨人的肩膀上,但是如果想继续提高模型的精度,该怎么做?继续调参?还是有一些其他的方法可以采用?

本篇文章就介绍了Amazon工程师总结的分类模型的调参技巧。

证明你的方法有效的最直接方法就是跟其他方法的效果最做对比,要对比当然就需要有一个baseline,这里我们就利用最常用的深度学习模型训练方法先训练一个base model,如下:

  • 训练数据预处理:
  1. 随机旋转一个batch的图像,然后将其编码成32位浮点数[0-255]。
  2. 随机截取一个长宽比在[3/4,4/3]的矩形,矩形面积占图像面积的[0.8,1],截取后将图像resize到224*224。
  3. 按照0.5的比例进行水平翻转。
  4. 对亮度,色度,饱和度进行跳帧。
  5. 增加PCA噪声,噪声分布为正态分布(0,0.1)。
  6. 对图像像素,减均值[123.68,116.779,103.939],除标准差[58.393,57.12,57.375]。
  • 验证数据:
  1. 短边缩放到256
  2. 中间截取224*224
  3. 对图像像素,减均值[123.68,116.779,103.939],除标准差[58.393,57.12,57.375]
  • 参数初始化
  1. 卷积层以及全连接层采用Xavier算法进行初始化。
  2. bn层, γ \gamma γ = 1 , β \beta β = 0
  • 参数优化方法
  1. 梯度采用带动量的梯度优化方法:Nesterov Accelerated Gradient
  2. 学习率:初始学习率0.1,每30个epoch学习率下降为原来的10%
  3. batchsize:256

上面是最常用的深度学习模型的参数设置,我们将其作为我们的模型的baseline,基础有了,下面我们来谈谈如何提升模型效果:

Question 1 : batch size是不是越大越好?

增加batch size可以增加网络的并行度,降低通信消耗,但是使用大的batch size同样也会带来一定的问题,比如:凸优化问题,随着batch size的增加,会增加数据的收敛的难度,换句话说,相同的epoch,使用大的batch size相比较使用小的batch size,小的batch size可能精度会更高一点。

那么我们是不是不该使用大的batch size,当然不是,下面介绍几种方法:

方法一:线性改变学习率

在梯度下降中,由于选择的sample是随机的,所以其梯度下降的方向也是随机的,当提高batch size之后,并不能改变这种随机性,但是由于图像数量的增加,却可以中和掉一部分的噪声,所以这个时候,我们可以增加一部分的学习率,使得学习的步子迈的大一点,比如,在resnet50中,batch size=256,我们选择了lr=0.1,当batchsize增大到b的时候,lr可以调整为0.1*b/256.

方法二:学习率预热

当我们开始训练模型的时候,往往模型的参数都是随机初始化的,并不能代表什么,所以如果此时选择一个较大的学习率,往往会导致模型的不稳定,那么什么是学习率预热,简单来说就是先使用一个较小的学习率,先迭代几个epoch,等到模型基本稳定的时候再用初始设置的学习率进行训练。举个例子,比如预热5个epoch,学习率设置成lr,则前5个epoch可以设置学习率线性递增,即第一个epoch:0.2*lr,第二个:0.4*epoch,依次类推,到第五个变为lr。

方法三:部分BN层 γ \gamma γ设置成0

resnet我们都知道,中间有很多BN层,BN层的提出可以说是模型训练的一个里程碑,它使得模型的训练更加简单,模型收敛更加快速,并且可以使用更大的学习率进行训练,BN层的作用就是对数据进行归一化操作,然后通过设置两个学习参数对归一化进行调整,即:

其中 γ \gamma

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值