高效神经网络设计II

发布 : 2020-01-29 分类 : 深度学习 浏览 :

模型设计

卷积方式的使用和设计

  • 通道拆分:7*7->1*7+7*1,7*7*7->1*1*7+1*7*1+7*1*1
  • 提升单层通道利用率
    • 特征通道补偿:输入通道取反和输入通道进行 concat(CReLU)
    • 密集连接网络:DenseNet
  • 1 通道/2.3 多尺度分组卷积:
    • Depthwise conv + Pointwise conv
    • BigLittleNet:将通道分为高分辨率网络和低分辨率网络
    • Octave Convolution:将通道分解为低频+高频分量,低频使用更小的分辨率
  • 多尺度卷积核与感受野卷积
    • Squeezenet:使用1*13*3的卷积核

1580300524822.png

  • MixNet:分组卷积时使用不同大小的卷积核

1580300587261.png

  • ScaleNet:使用不同大小的特征图

1580300636636.png

  • 分数+整数的分组卷积
    • DSConv:VQK 只有整数值,不可训练,从预训练模型中来。KDS 是浮点数值,可训练。KDS 相当于学习 VQK 带来的残差。

1580301018628.png

  • 剪枝与分组卷积
    • condensenet:去除权重小的层,重组,做分组卷积

1580301281521.png

  • 可学习的分组
    • FLGC、DGC

剪枝

  • 剪枝维度

1580301574844.png
通道级别的最常用

  • Pruning Filters
  • 根据卷积核的 L1Norm(即绝对值)判断是否裁剪掉卷积核
  • ThiNet:使用网络下一层来指导当前层的剪枝,通过最小化剪枝前后的下一层网络的输出。
  • Network Slimming:利用 BN 中的缩放因子来对不重要的通道进行裁剪

量化

  • 二值量化:Binarized Neural Networks(BNN)

权重和每层的激活值全部二值化

  • 三值量化:Ternary weight networks

最小化全精度权值 W 和三元权值$W^t$之间的欧氏距离

$$  \left\{\begin{array}{rl}  {\alpha^{*}, \mathbf{W}^{t *}=} & {\underset{\alpha, \mathbf{W}^{t}}{\arg \min } J\left(\alpha, \mathbf{W}^{t}\right)=\left\|\mathbf{W}-\alpha \mathbf{W}^{t}\right\|_{2}^{2}} \\  {} & {\text { s.t. } \quad \alpha \geq 0, \mathbf{w}_{i}^{t} \in\{-1,0,1\}, i=1,2, \ldots, n}  \end{array} \quad \mathbf{W}_{i}^{t}=f_{t}\left(\mathbf{W}_{i} | \Delta\right)=\left\{\begin{aligned}  +1, & \text { if } \mathbf{W}_{i}>\Delta \\  0, & \text { if }\left|\mathbf{W}_{i}\right| \leq \Delta \\  -1, & \text { if } \mathbf{W}_{i}<-\delta  \end{aligned}\right.\right.=""  ="" $$=""
  • Google 的 8 位量化
  • 前向传播中使用量化,反向时仍然按照全进度的浮点进行计算

    1580304949280.png

    • NVIDIA 的 8 位量化

    根据每一层的校准集上的激活值确定阈值 T

    1580305026789.png

    • 混合精度量化 HAQ (AutoML 模型)
    • 剪枝与量化的结合:Deep Compression

    1580305126891.png

    知识蒸馏

    • teacher 模型+更小的模型(studnet 模型)

    1580305234095.png

    • FitNet:比较浅而宽的 teacher 模型的知识迁移到更窄更深的 student 模型

    1580305327225.png

    • ProjectNet:同时训练一个大模型和一个小模型,实现高比率的压缩
    $$ \mathcal{L}(\theta, p)=\lambda_{1} \cdot \mathcal{L}_{\theta}(.)+\lambda_{2} \cdot \mathcal{L}^{p}(.)+\lambda_{3} \cdot \widehat{\mathcal{L}}^{p}(.) $$

    1580305417713.png

    • 量化与蒸馏的结合

    teacher 模型是一个全精度模型,Apprentice 模型是一个低精度模型

    1580305523600.png

    • 协同学习

    动态推理

    • BranchyNet:不同难度的样本,根据累积的熵来决定是否提前退出 inference

    1580305673573.png

    • Blockdrop:训练一个网络来决定每一个 block 是否 drop 的概率

    1580305711353.png

    参考

    本文作者 : HeoLis
    原文链接 : https://ishero.net/%E9%AB%98%E6%95%88%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C%E8%AE%BE%E8%AE%A1II.html
    版权声明 : 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!

    学习、记录、分享、获得

    微信扫一扫, 向我投食

    微信扫一扫, 向我投食