B. 深度学习 --- 模型压缩

B. 深度学习 — 模型压缩

概述

  • 问题
    • 环境多种多样,有些环境资源有限:比如手 手表等计算有限、内存有限

Network Pruning(网络调参)

  • 步骤
    • 有一个大型的网络
    • 评估网络参数的重要性
      • 重要性评估
        • 权重越接近0,表示越不重要
          • sum of L1/L2 norm
            • 问题
              • 方差太小
              • 不在0附近
          • FPGM
            • 移除接近几何中心的neural
          • Network Slimming
          • APoZ
        • 看激活函数的输出是不是0
        • 看Gradient的大小
    • 移除不重要的weight或者neural
      • 移除策略
        • 重要性排序
        • 设置固定的阀值
        • 动态生成阀值
    • 用新的网络,重新训练一下
    • 跳转到第二步
  • 为什么不直接用小的神经网络
    • 大的神经网络,比较好train,小的则相反
  • Tips
    • 不能够直接把 neural 删掉
      • 问题
        • 如果直接把neural删掉,就无法用 GPU 加速了。
      • 思路
        • 把要删掉的 neural 的weight 直接设置为0

Konwledge Distillation

  • Logits(输出)
    • 概述
      • 直接匹配输出
      • 学习一个batch里面的logits distribution
      • 。。。
  • Feature(中间值)
    • 概述
      • 直接匹配中间的Feature
      • 学习Feature中间如何转换
      • 。。。
  • Conventional Distillation
    • 以每个Sample为单位做知识蒸馏
    • 算法
      • Baesline KD
        • 先训练一个大的神经网络
        • 训练一个小的神经网络,输入和输入是来自大的神经网络,而不是正确的数据
      • Deep Mutual Learning
        • 两个模型互相学习
      • Born Again Neural Networks
        • 初始Model 是 KD 来的
        • 迭代使用Cross Entropy
        • 最后Ensemble 所有Student Model
      • Attention
        • 聚焦在核心的Object上,而不是背景上面
        • 核心
          • 生成 attention map
          • 寻找目标函数
    • 问题
      • Teacher model过于复杂,导致 Student Model 无法学习
        • 解决思路
          • TAKD
            • 寻找一个中间模型,先让中间模型学习Teacher Model,然后再让Student Model 学习中间模型
          • FitNet
            • Student Model 学习 Teacher Model的中间特征
            • 问题
              • Model capacity is different
              • There`s lots of redundancy in Teacher Net
  • Relational Distillation
    • 以Sample之间的关系做知识蒸馏 (学习Teacher Model的表现形式)
    • 思路
      • Distance-wise KD
      • Angle-wise KD
    • 算法
      • Similarity-Preserving KD
        • Teacher Model 输出不同图片之间的关系
        • Student Model 学习这些关系

Parameter Quantization

  • 思路
    • 用更少的bit存储参数
  • 步骤
    • 对参数聚类,对每一类打标
    • 在网络里面,存放的不是weight,而是用标号
    • 进一步优化,可以用哈夫曼编码,对每个类编码

Binary Weight

  • 思路
    • weights 用 +1 或者 -1 表示

调整模型架构

  • Low rank approximation
    • 在 Lm 和 Ln 之间加入 Lk,使得 Lm * Lm < (Lm * Lk + Lk * Ln)
  • 卷积神经网络
    • 步骤
      • Depthwise Convolution
      • Pointwise Convolution
    • 应用场景
      • SqueezeNet
      • MobileNet
      • ShuffleNet
      • Xception

Dynamic Computation

  • 训练多个模型,根据资源决定使用哪个模型
  • 一个模型,不同的隐藏层多有输出,问题是 会影响最终输出的效果

你可能感兴趣的:(#,深度学习,1024程序员节)