介绍一下模型压缩——XNOR-Net?
0 783
0
该提问暂无详细描述
收藏
2021-02-21 17:20 更新 正直的烤面包 •  3996
共 1 个回答
高赞 时间
0

论文: http://arxiv.org/pdf/1603.05279v1.pdf

优势:内存节省32倍,卷积操作加快58倍。 与全精度版本相比,AlexNet的Binary-Weight版本的性能损失(前1个)仅2.9%。 输入和权重二值化XNOR-Net将差距缩小到12.5%.

当权重进行二进制卷积运算时,只能通过求和和减法来近似。 Binary-Wight网络可以在移动设备中提高到2倍的运行速度。

为了进一步实现这个想法,XNER-Net同时使用二进制权重和输入,并且当权重和输入都为二进制时,与XNOR和位计数操作进行卷积。 这样既可以进行CPU时间推断,也可以训练最新的模型。

下面是关于将模型压缩为较小尺寸的总结:

  1. 浅层网络——使用信息提取等不同方法,用较浅的架构估算深层模型。

  2. 压缩网络——压缩大型网络。

    • 权重衰减
    • 最佳Brain Damage
    • 最佳Brain Surgeon
    • 深度压缩
    • HashNets
  3. 设计 compact layers——从一开始就使网络最小化

    • 将3×3层分解为2个1×1层
    • 用1×1层替换3×3层,从而减少50%的参数。
  4. 参数的量化—深度网络中,对于好的结果而言,高精度并不是那么重要[29]

    • 8位值而不是32位浮点加权值
    • 三进制权重和3位激活
    • 具有L2损耗的量化层
  5. 网络二值化——

    • 期望反向传播
    • 二进制连接
    • BinaryNet
    • 保留预训练的模型

Binary-Weight-Net(二进制权重网络)

Binary-Weight-Net定义为实值层的近似值,例如

其中,ɑ 是比例因子,且取值[+1,-1].

由于值是二进制的,我们只需加减法就可以执行卷积运算。

原论文给出了详细说明:

Binary-Weights-Net的训练包括3个主要步骤; 前向,后向,参数更新。 在前向和后向阶段,权重都被二值化,但是对于参数更新而言,使用实际值权重来保持小的更改已经足够有效。

XNOR网络

这部分,通过使用二进制运算XNOR和位计数,对输入值进行了二值化处理,降低了卷积运算成本。输入值基本上二进制化为用于权重值的形式。 符号运算用于值的二进制映射,并且按输入值的L1范数估计比例值。

其中,γ是比例向量,C是卷积后特征映射的二进制映射。

参考https://erogol.com/xnor-net/

收藏
2021-02-21 17:43 更新 阿托 •  17013