神经网络模型二值量化综述2020

BNN综述2020

二进制神经网络 节省了存储和计算成本, 在边缘计算设备上部署。然而,二值化导致严重的信息丢失;其不连续性难以优化。
分为直接进行二值化的初始解决方案,以及使用使量化误差最小化,改善网络损失函数和减小梯度误差等技术进行优化的解决方案。
我们还将研究二进制神经网络的其他实用方面,例如硬件友好的设计和训练技巧。
对包括图像分类,对象检测和语义分割不同的任务进行评估和讨论。展望了未来研究可能面临的挑战。

背景

用于压缩深层网络的方法可分为五类:参数剪枝,参数量化,低秩分解,迁移/压缩卷积滤波器和知识蒸馏。

二值化是一种 1 位的量化,其数据只有两个可能的值,即 -1(0)或 +1。使用二值化进行压缩后,网络中的权重和激活都可以用 1 位表示,而不会占用太多内存。
此外,通过二值化,二值网络可以使用轻量级的 XNOR 和 Bitcount 位运算代替繁重的浮点乘加运算。
使用 1 位卷积运算的 XNOR-Net 在 CPU 上的加速可达到 58 倍,压缩率可至 32 倍。
在这里插入图片描述

分类

在这里插入图片描述

朴素的二值神经网络

BinaryConnect Binarized Neural Network
Bitwise Neural Network

3.2 基于优化的二值神经网络

通常的做法是减少权重和激活的量化误差。这是一种简单的解决方案,
类似于标准的量化机制,即量化参数应尽可能接近全精度参数,并期望二值神经网络模型的性能接近全精度模型。

3.2.1 最小化量化误差

在这里插入图片描述
在这里插入图片描述

3.2.2 改进网络损失函数

,一般的二值化方案仅关注对浮点数的精确局部逼近,而忽略二值参数对全局损失的影响。仅关注某一层很难保证经过一系列层的最终输出的精确性。因此,网络的训练需要能够全局考虑二值化以及特定的任务目标。

增加损失感知项

LAB)(INQ)

知识蒸馏法

(DQ) (DBNN)CI-BCNN
在这里插入图片描述
在这里插入图片描述

3.2.3 降低梯度误差

sign 函数和 STE 生成的梯度之间存在明显的梯度不匹配。此外,还存在以下问题:[-1,+1] 范围之外的参数将不被更新。
在这里插入图片描述

改进量化梯度求解

Bi-Real 提供了一个自定义的 ApproxSign 函数来替换 sign 函数以进行反向传播中的梯度计算

改进前向量化求解

Gong 等人提出了一种可微分的软量化(DSQ)方法 ,用软量化功能代替了传统的量化功能:
在这里插入图片描述

3.3 二值神经网络的高效计算架构

在这里插入图片描述

3.5 训练二值神经网络的技巧

从网络结构转换,优化器和超参数选择,梯度近似和渐近量化等方面总结了文献中广泛采用的通用高效二值神经网络训练方法。

3.5.1 网络结构调整

模型二值化将激活和权重量化到 {1, +1}。这实际等效于对数据进行正则化,从而使二值化后的数据改变分布,调整网络结构是使数据分布合理变化的有效方案。

对网络中的层重新排序可以改善二值神经网络的性能
  • 在卷积层之后立即使用池化层可以避免因二值化之后的最大池化而导致信息丢失。实验表明,这种位置重排在准确性上有很大的提高。

  • TSQ 和 HWGQ 在所有量化操作之前插入批处理归一化层以纠正数据。经过这种变换,量化的输入服从稳定的分布(有时接近高斯分布),因此均值和方差保持在合理范围内,并且训练过程变得更加平滑。

  • Bi-Real 将每层卷积的输入特征图连接到后续网络

  • 加宽低精度网络(WRPN),该网络增加了每层中的滤波器数量,从而改变了数据分布

3.5.2 优化器和超参数选择

使用 Adam 可以使训练过程更好,更快,并且二阶导数的平滑系数尤其关键。

如果使用不考虑历史信息的固定学习率优化器,例如随机梯度下降(SGD)算法,则需要采用更大 batch 的数据来提高性能。
同时,批次归一化动量系数的设置也很关键。通过比较不同动量系数下的精度结果,可以发现需要适当设置批归一化的参数以适应二值化操作引起的抖动。

3.5.3 渐近量化

由于量化操作对训练有负面影响,许多方法采用渐近量化策略,逐渐增加量化程度,以减少由参数二值化导致的性能损失。
例如,INQ 对参数进行分组,并逐渐增加参与量化的组的数量,以实现基于组的逐步量化。
Towards effective low-bitwidth convolutional neural network提出由高精度向低精度量化,从而补偿训练过程中量化参数的梯度误差。

3.5.4 梯度近似

由于直通估计器的使用,在反向传播中通常存在梯度误差。找到接近二值化函数的近似函数是一种简单而实用的解决方案。

结果分析

分类

在这里插入图片描述

在这里插入图片描述

CIBCNN CBCN BCGD

分析

  • 激活二进制化的影响大
    RAD 和 PACT 等研究的主要动机。在对激活的分布添加合理的正则化之后,将减少二值化对激活造成的有害影响,随后自然提高了准确性。
  • 二值神经网络的鲁棒性与其结构高度相关
    Bi-Real 提出的连接结构和在 WRPN 中提出的更宽的块,实质上所做的是使信息尽可能地通过整个网络。尽管结构修改可能会增加计算量,但受益于 XNOR-Bitcount 操作,它们仍然可以得到显著的加速。
  • 针对 BNN 的特殊特性进行更具体的设计
    例如 XNOR-Net ++,CBCN,Self-Binarizing Networks,BENN 等。
  • 通用 方法
    例如比例因子,反向平滑近似,附加结构连接等。由于这些方法实施简单且耦合低,
    通过设计或学习精细的量化器,其中一些需要复杂的计算甚至是多阶段的训练流水线,这有时对硬件实现不友好且不易复现。

检测

在这里插入图片描述

分析

在分类任务中,网络更加关注全局特征,而忽略了二值化导致的局部特征损失。但是,局部特征在其他任务中更为重要。因此,当为其他任务设计二值神经网络时,需要更加关注特征图的局部特征。

https://mp.weixin.qq.com/s/QGva6fow9tad_daZ_G2p0Q
量化综述2018
https://www.jiqizhixin.com/articles/2018-06-01-11
https://chenrudan.github.io/blog/2018/10/02/networkquantization.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值