• 【SCAN】2019-NIPS-SCAN: A Scalable Neural Networks Framework Towards Compact and Efficient Models-论文阅读


    SCAN

    2019-NIPS-SCAN: A Scalable Neural Networks Framework Towards Compact and Efficient Models

    来源:ChenBong 博客园

    • Institute:Tsinghua
    • Author:Linfeng Zhang,Zhanhong Tan,Chenglong Bao
    • GitHub:/
    • Citation: 14

    Introduction

    attention,self KD,dynamic network,model ensemble,genetic algorithm

    2019-ICCV-Be Your Own Teacher 的兄弟篇

    在推理过程中实时调整 latency 和 acc 的 trade off 的动态(结构)网络。对不同深度的中间层插入多个分类器的一类方法(MSDNet)的改进。

    Motivation

    人类的视觉系统:简单的图片快速识别,遇到困难的图片花更多的时间/脑力(算力)进行辨认,人类的大脑自然而然地会对不同难度的图片花费不同的识别开销,因此提出动态网络的概念(sample individual)

    之前的动态网络方法存在的问题:

    • 在 backbone 不同深度的中间层插入多个分类器的方法(MSDNet),由于不同深度的分类器共享 backbone 参数,不同深度的分类器有消极的互相影响,导致多个分类器的性能都不如单独训练时的性能
    • 宽度可变的方法(Silmmable),窄网络的计算,不能被宽网络重用,导致每个宽度都要从头推理,浪费了推理时的计算开销/时间
    • 对于自适应的推理图的方法(BlockDrop,SkipNet),有着比较复杂的 dropping/skipping 策略,导致加速效果不好

    之前模型压缩方法存在的问题:

    • 传统的压缩方法专注与模型结构的冗余性,而忽略了样本难度的差异,不应该将不同难度的样本同等对待

    MSDNet:

    image-20200729194405049

    Silmmable:

    image-20210112190243107

    BlockDrop:

    image-20210316165108072

    SkipNet:

    image-20210316165044436

    Contribution

    • 加入了知识蒸馏和注意力机制,使得不同深度的多个分类器不再有消极的相互影响,反而可以相互受益。
    • 在不同深度的中间层插入多个分类器,使得不同分类器的计算可以被重用
    • 本文的方法可以与任何结构的 backbone 网络结合(其他方法可能需要重新设计backbone网络,如MSDNet), 实现动态推理。
    • 第一次将网络压缩和加速与注意力机制结合(精度提高),使用静态的推理图(加速效果好)

    Method

    image-20210316165927400

    横向为backbone网络,将backbone网络分为不同的stage,在stage之间插入纵向模块

    纵向分为3部分,分别为 Backbone 网络,Attention 模块,Classifier 模块:

    • Backbone:和原始网络一样
    • Attention 模块:conv,deconv,sigmoid
    • Shallow Classifier 模块:Bottleneck layer,FC

    Self distillation

    Shallow Classifier 模块由 Bottleneck layer&& 和 FC 组成;

    浅层分类器和最终分类器做蒸馏:

    image-20210316172511357

    q 是 softmax,F是 feature map

    Attention modules

    Attention modules&& 由 conv,deconv,sigmoid 组成,输出一个0/1的 attention map,和原始的feature map作dot product,得到 classifier-specific features

    cifar100,res50,x=1-4指不同的shallow classifier,x=5指 ensemble所有 classifier 的结果

    image-20210316173457296

    如果中间层直接插入分类器,由于每个分类器都会使靠近它的层学习有利于分类的(高级)特征,而深的分类器又希望浅层学习低级特征,导致互相干扰。即使用了 self distillation,还是比 individual training 差

    加入 Attention module,学习 classifier-specific features,从图2可以看出,性能有了很大的提高

    Scalable inference mechanism

    低层的classifier输出的置信度高于某个阈值(softmax值大),则认为预测结果足够准确,即提前退出。

    如何设置阈值?为每个classifier单独设置阈值,且使用进化算法搜索每个classifier的阈值

    总体算法流程:

    image-20210316183812026

    Experiments

    CIFAR100

    image-20210316184153707

    虚线上横向的方块是不同classifier的性能,纵向上的方块是ensemble的性能;三角是对应颜色曲线的 baseline

    image-20210316184043736
    • 所有的模型中,classifier 2/4就已经超过了baseline
    • 在精度不掉的情况下,平均(FLOPs)加速比 2.17x,平均(参数)压缩率 3.20x
    • 平均在增加4.4%的计算开销下,有4.05%的性能增长

    ImageNet

    image-20210316184059848

    加速比

    image-20210316185545666

    Discussion

    Attention module 学到了什么?

    将attention map的不同channel对应位置元素求均值,左到右应该是不同深度的 attention module

    image-20210316185428050

    不同深度classifier预测正确的比例

    image-20210316185600688

    观察:简单的数据集主要在浅层的classifier被分类出来,而困难的数据集需要在较深的classifier才能被分类出来

    作用:

    • 指导压缩,对于cifar10/100,深层存在很大的冗余
    • 作为一个metric来评估数据集的困难程度

    Conclusion

    Summary

    pros:

    • 折线图,柱状图,attention可视化图
    • 热点较多,但框架和之前的一些动态网络比起来还是比较简单清晰高效的

    cons:

    • 对 bottleneck layer 的设计没有具体的解释
    • attention module 本质上也只是加了2个layer,为什么加了conv和deconv就可以大幅提高性能?没有具体的解释;attention 可视化有hand-pick的空间

    与Be your own teacher的区别

    Be your own teacher:

    image-20210316193225457

    SCAN:

    image-20210316165927400

    本文与Be your own teacher相比,只多了attention模块

    Be your own teacher:

    image-20210316193440826

    SCAN:

    image-20210316184043736 image-20210316184059848 image-20210316173457296

    两篇文章的框架和训练思路基本都相同,主要是出发点不同,Be your own teacher是从自蒸馏的角度,SCAN是从动态计算的角度。

    To Read

    Reference

    MSDNet blog

    Slimmable blog

    2019-ICCV-Be Your Own Teacher Improve the Performance of Convolutional Neural Networks via Self Distillation

    Be Your Own Teacher blog

  • 相关阅读:
    27. Remove Element
    列表变成字典
    1. Two Sum
    CVPR2019:What and How Well You Performed? A Multitask Learning Approach to Action Quality Assessment
    959. Regions Cut By Slashes
    118. Pascal's Triangle
    loj3117 IOI2017 接线 wiring 题解
    题解 NOI2019 序列
    题解 省选联考2020 组合数问题
    题解 Educational Codeforces Round 90 (Rated for Div. 2) (CF1373)
  • 原文地址:https://www.cnblogs.com/chenbong/p/14545784.html
Copyright © 2020-2023  润新知