最邻近方法nn_神经网络常见调参方法简述

本文介绍了Amazon WEB团队在《Bag of Tricks for Image Classification with CNN》中的成果,包括模型训练加速(大BatchSize、低精度训练)、网络结构优化(ResNet-50的改进)、训练参数调优(学习率策略、标签平滑、知识蒸馏和Mixup)等,展示了这些技巧如何显著提高ResNet-50在ImageNet上的性能。
摘要由CSDN通过智能技术生成

73f6568a14608d2b60d757b94a375e77.png
这篇文章总结了CNN分类任务常见的调参tricks,如网络结构调优,标签平滑,warm up等,并放了Amazon WEB团队验证的论文实验结果,具有 较大的工程意义。

零,前言

训练过程的改进可以提高在图像分类研究中的效果,例如通过研究数据增强和优化的方法。本文我们将研究这些改进的集合,通过将这些改进组合在一起,我们可以显着改善各种CNN模型。

Amazon WEB团队 Bag of Tricks for Image Classification with CNN (https://arxiv.org/abs/1812.01187)将在ImageNet上ResNet-50的top-1验证准确性从75.3%提高到79.29%。本文主要学习上面论文中提到的方法,并加上了自己训练网络时比较常用的一些思路。对常见的调参方法进行总结。


一,模型训练加速

模型训练加速一是使用更大的Batch Size,二是使用低精度(如FP16)进行训练(混合精度训练)。但在论文中提到,只是单纯地增加Batch Size,并不会有什么提升。

  1. 增大学习率。更大的Batch Size可以使每个Batch数据计算的梯度更加贴近整个数据集,从侧面提高学习率。实际实验中我发现对GPU的负载会有升高。如果你是在自己的电脑上跑,6G显存,跑resnet152-v2设置16以下的batchsize会比较好,否则收敛会比较困难。
  2. 热身Warm up。Warm up指的是用一个小的学习率先训练几个epoch,这是因为网络的参数是随机初始化的,一开始就采用较大的学习率容易数值不稳定。
  3. 每一个残差块后的最后一个BN层的
    参数初始化为0
    。我们知道BN层的
    参数是在线性变换过程中的参数,公式表示为:
    ,一般我们会把
    设为1,而论文作者表示
    初始化为
    会更好一点

作者将上面的Tricks结合在一起进行训练。使用低精度(16-Bit浮点型)来混合精度训练。下面的图展示了应用了trick后对于baseline的训练速度的提升,训练精度也有提升。

d73a2c2f211d56350b8862e887fcfaf6.png

二,网络结构调优

对于比较常见的ResNet-50,可以参考Amazon WEB对ResNet-50进行了魔改形成了三种结构,分别是ResNet-50-A、ResNet-50-B、ResNet-50-C,下图是ResNet网络的原始结构图,其中输入流和每个stage的详细结构在中间那列,而残差结构写在最右边。

ResNet-B修改了Resnet的下采样模块。 ResNet-C进一步修改了输入系统。 作者特别强调ResNet-D再次修改了下采样模块。这里主要讨论B和D。

ResNet-B在原始结构中路径A中的卷积会忽略输入特征图的四分之三,ResNet-B切换路径A中前两个卷积的步幅大小,因此不会忽略任何信息。 并且由于第二次卷积的核大小为3×3,因此路径A的输出形状保持不变。

ResNet-D受ResNet-B的启发,在下采样块路径B中的1×1卷积也忽略了3/4个输入特征图, 根据经验,作者发现在卷积之前添加一个2×2的平均池化层,跨度为2,其步长更改为1,在实践中效果很好,并且对计算成本的影响很小。

e343a5a72a37dc99bfce2cbaac57a378.png
RESNET-50 魔改结构

81364f03c257239af5500d33b8a7046f.png
RESNET-50 原始结构

作者随之做了实验,通过改进的网络结构与baseline相比的效果如下所示,效果还是可以的。

716f26fccb2ae463f38b6c1578e24b69.png
作者在准确率、参数数量,FLOPS与baseline(ResNet-50)的实验效果图

三,模型训练调参

作者提到了四个方面,分别是采用cosine函数作为学习率衰减策略、标签平滑、知识蒸馏、Mixup数据增强。

  1. Cosine Decay compared to Step Decay

Cosine衰减的公式为:

9ea468ef4de70baaff49daa3b3334cad.png

作者的实验结果如下,图a说明这两种方法学习率的区别,图b说明对准确率的影响。

741d4a47e9d3c19a6b9fed17946d1ec6.png

2. 标签平滑

对于分类问题,尤其是多类别分类问题中,常常把类别向量做成one-hot。会造成过拟合等问题。可以通过标签平滑降低一些分类过于准确的程度。

a90147b71caba049433c8ce679b94c76.png
标签平滑的公式
#标签平滑的代码(https://www.jianshu.com/p/b9684ced5e33)

import torch
import torch.nn as nn

class LabelSmoothing(nn.Module):
    def __init__(self, smoothing=0.0):
        super(LabelSmoothing, self).__init__()
        self.confidence = 1.0 - smoothing
        self.smoothing = smoothing

    def forward(self, x, target):
        logprobs = torch.nn.functional.log_softmax(x, dim=-1)

        nll_loss = -logprobs.gather(dim=-1, index=target.unsqueeze(1))
        nll_loss = nll_loss.squeeze(1)
        smooth_loss = -logprobs.mean(dim=-1)
        loss = self.confidence * nll_loss + self.smoothing * smooth_loss
        return loss.mean()

展示一下作者实验的效果,也是不错的。使用Label Smooth来软化一下,可以降低对标签为1的数据的过度信任:

b1eace53f1ddd3b1cc6cfb58da2de686.png

3. 知识蒸馏

简单来说,知识蒸馏就是用一个效果比较好的teacher model教student model。可以使student model提升效果的同时不改变结构。在Amazon这篇论文里提到了这个方法,使用ResNet-152作为teacher model,而ResNet-50作student model

4. Mixup数据增强

与常规操作不同,数据增强是从数据层面解决过拟合,提高泛化性常见的数据增强方法有:随机裁切、上下左右翻转、颜色抖动、加噪声、图像各种位移、仿射变换等等。

fc6c3a8d3ab441a64245b525105f0339.png

99e1b82e17b28758970524b4d62c91a7.png

而Mixup最早由《mixup:BEYOND EMPIRICAL RISK MINIMIZATION》这篇论文提出。在Mixup训练中每次需要读取2张输入图像,可以用

,
来表示,通过下面的公式合成新的图像和标签
,然后使用这张新图像和新标签作为输入,采用这种方法训练时往往需要更多的epoch。
用来调节合成的比重,取值范围是
。可高可低。默认取1.但有人说越高越好。

473e84de2dd04b0db0efe00c97ee8db4.png

Amazon WEB这篇论文的作者融合了上面的四个Trick做了实验,实验效果如图所示。label smoothing用的比较少,实际上也有一些小提升。

3d2c3ba202f8d958af49d04a41723335.png

四,总结

这些总结的调参方法是比较常用的炼丹技巧,

我们可以将这些技巧放迁移到我们自己的数据集上获得效果提升,属于比较实用的技巧。

但有时不总是有效,还得结合自己实验的情况多尝试不同的组合,

为了文章里更漂亮的fig,时间允许的情况下还是很值得的。

96202ac55b3e3508fc164204b3990d56.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值