zoukankan      html  css  js  c++  java
  • NetAug 韩松团队新作

    【GiantPandaCV导语】本文介绍的是韩松团队针对欠拟合问题提出的一种解决方案,在代价可接受范围内能够提升小模型的性能。

    引入

    专用于解决小型网络模型欠拟合 带来的问题,通过引入更大的模型包围住小模型从而得到额外的监督信息。欠拟合情况下使用正则化方法进行处理会导致性能更差。

    NetAug适用场景:

    • 数据集量比较大

    • 模型参数量相对而言比较小

    • 由于模型容量有限导致的欠拟合问题

    问题明确

    • 与知识蒸馏区别:

    知识蒸馏相当于学习一个soft label(或者说learned label smoothing), 而NetAug主要强调处理欠拟合问题,通过增强小模型的模型宽度来获取更多监督信息。

    • 与普通正则化方法区别:

    正则化方法有数据增强方法(Cutout,Mixup,AutoAug,RandAug)和Dropout系列(Dropout,StochasticDepth, SpatialDropout,DropBlock)。与这些解决过拟合正则化方法不同,NetAug主要关注欠拟合问题,进行数据增强反而会导致欠拟合问题。

    核心方法

    如上图所示,训练的过程中会引入比原先小模型更宽的一系列网络,用宽网络的监督信号来增强小模型的学习。

    第一项是训练单个小网络需要的loss, 第二项是宽网络带来的辅助监督信息,其中$alpha_i
    $是缩放系数

    宽网络获取方式:augmentation factor r和diversity factor s两个系数。

    • r 是用于选择最宽的边界,假设基础宽度为w,那么宽度选择范围为【w, rxw】

    • s则是控制采样频率,从w到rxw等距采样s个宽模型。

    训练过程:

    实际训练过程权重更新如下:

    [W_{t}^{n+1}=W_{t}^{n}-etaleft(frac{partial mathcal{L}left(W_{t}^{n} ight)}{partial W_{t}^{n}}+alpha frac{partial mathcal{L}left(left[W_{t}^{n}, W_{i}^{n} ight] ight)}{partial W_{t}^{n}} ight) ]

    每次权重更新只训练小网络和单个宽网络,这样可以降低计算代价,并且通过实验发现,没必要同时采样多个宽网络进行训练,那样会导致性能的下降。

    通过以上改进为欠拟合小模型带来了一定的收益,同时训练开销仅增大了17%

    实验

    首先,论文为了证明NetAug和蒸馏方法是不相等的(正交),设计了一系列实验。

    最优模型实际上是同时使用了知识蒸馏和NetAug的方案。

    为了证明NetAug作用在欠拟合模型,设计了以下实验:

    ProxylessNAS Mobile, MCUNet,MobileNetv2都是小模型,在这些小模型上使用NetAug均可以取得不错的提升。但是在比较大的模型ResNet50上,不存在欠拟合的问题,所以起到了反作用。

    为了证明NetAug和其他正则化方法不同,设计了以下实验。

    可以发现,在使用KD情况下加入正则化会导致性能下降。

    但是使用KD情况下,采用NetAug会使得精度进一步提升。

    在目标检测算法中应用:

    总结

    图源https://zhuanlan.zhihu.com/p/72038532

    针对过拟合有很多耳熟能详的处理策略,比如Dropout,数据增强,增加数据,控制模型复杂度,正则化等。

    而针对模型容量不足带来的欠拟合问题,通常采用的是增加模型容量,或者增加特征表示。

    本文针对欠拟合问题提出了一种更优的解法,在保证模型大小不变的情况下,提升小模型的实际性能,具有很高的价值(缺点是实现起来比较复杂)。

    代码改变世界
  • 相关阅读:
    matlab绘图的坐标轴数字、范围、间隔控制
    机器学习降维算法一:PCA(主成分分析算法)
    信息检索X科普一:查准与召回(Precision & Recall),F1 Measure
    matlab 绘图字体大小控制
    机器学习降维算法二:LDA(Linear Discriminant Analysis)
    25款.NET开发工具
    CA0503:无法显示额外的代码分析警告或错误
    ReportViewer实例教程
    Rational Rose2003 安装错误之error 1920.service NUTCRACKERservice
    读取SqlServer表名及结构
  • 原文地址:https://www.cnblogs.com/pprp/p/15475415.html
Copyright © 2011-2022 走看看