【论文阅读笔记】Network Sketching: Exploiting Binary Structure in Deep CNNs

本文探讨了草图量化(Sketch Quantization)在深度学习模型压缩中的应用,特别是二进制权重量化技术。通过引入High-Order Residual Quantization (HORQ)和Associative Implementation,文章详细阐述了如何在保持模型精度的同时,显著减少计算资源的需求。特别地,Associative Implementation通过共享卷积计算,有效减少了重复计算,提高了模型推断的速度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

全文概括

  草图,就像在画画一样,是不断精确的基础,在二进制量化的应用上,即不断地逼近残差,如 HORQ (High-Order Residual Quantization) 一样。与 HORO 的区别在于,该方向并未二值化 Input,但其提出了一个新的 尺度因子的计算方式。

  在 2-bit/ 1-bit 的极低精度的近似 ResNet-18 的结果展示上,其与 INQ 的精确度差不多,但多了几层的二值化卷积,即时间效率下降。【本文提供了一种 Associative Implementation 的方式来解决而这个问题】

  提供了一种二值权重共享卷积计算的方式,即Associative Implementation,其计算方式直观上就是:在同一层卷积(即输入XXX是同一个,而卷积核不同),保留上一次的卷积结果,对于卷积核一样的部分不进行计算,只计算卷积核不同的部分。


Network Sketching

在这里插入图片描述
  对每一个 W∈Rc∗w∗hW \in \mathcal{R}^{c*w*h}WRcwh 都有 mmmB∈Rc∗w∗hB \in \mathcal{R}^{c*w*h}BRcwh 的二进制 Tensor ,和 mmm 个 对应的尺度因子。

  对于文中的两种 Sketching 方法,不同的地方只在于 尺度因子 的计算。

Direct Approximation

  Bj=sgn(Wj^)B_j = sgn(\hat{W_j})Bj=sgn(Wj^)aj=&lt;Bj,Wj^&gt;ta_j=\frac{&lt;B_j,\hat{W_j}&gt;}taj=t<Bj,Wj^>  其中,Wj^\hat{W_j}Wj^是前面量化的残差,初始化W0^=W\hat{W_0} = WW0^=Wt=c∗w∗ht = c*w*ht=cwh,是该层该 filter 参数的个数。

  该方法和 HORQ 一模一样

Approximation with Refinement

  由于上面的方法,在逼近残差时,其收敛程度低,收敛速度慢(逼近原始权重 Tensor 的程度),因此提出了新的尺度因子计算方式,使得能更加逼近原始权重:aj=(BjTBj)−1BjT∗vec(W)a_j = (B_j^TB_j)^{-1}B_j^T*vec(W)aj=BjTBj1BjTvec(W)  其中,vec(∗)vec(*)vec() 是其输入的一个列向量,比如 Bj=[vec(B0),...,vec(Bj)]B_j = [vec(B_0),...,vec(B_j)]Bj=[vec(B0),...,vec(Bj)]

  其目的是想利用 WWW 的整体信息,即先前的量化逼近结果 BiB_iBi 也利用上。


Speeding-up the Sketch Model

在这里插入图片描述
  对于一个输入 Tensor XXX,如果有多个 BBB 与其卷积,则其可能和之前的卷积操作计算有重叠的部分,则我们进行 BjB_jBj 卷积时,可以利用 Bj−1B_{j-1}Bj1 的卷积计算结果。

Associative Implementation
  假设 X和Bj0X 和 B_{j_0}XBj0的计算结果已经得出:X⊗Bj0=sX \otimes B_{j_0}=sXBj0=s,则我们有:(1)X⊗Bj1=s+(X⊗(Bj0∨Bj1))∗2X \otimes B_{j_1} = s + (X \otimes (B_{j_0} \vee B_{j_1})) * 2 \tag{1}XBj1=s+(X(Bj0Bj1))2(1)(2)X⊗Bj1=s−(X⊗(¬Bj0∨Bj1))∗2X \otimes B_{j_1} = s - (X \otimes ( \neg B_{j_0} \vee B_{j_1})) * 2 \tag{2}XBj1=s(X(¬Bj0Bj1))2(2)

BJ1B_{J_1}BJ1Bj2B_{j_2}Bj2BJ1∨Bj2B_{J_1} \vee B_{j_2}BJ1Bj2
+1-1-1
+1+10
-1-10
-1+1+1

  关联计算的规则如上,直观上来看,就是和上一个卷积核一样的部分,就利用上一次的结算结果,和上一次不一样的部分,才需要计算(在这里就是不一样的部分,就用上一次的卷积结果的基础上,加上两倍的不一样地方)

  假设 Bj0∨Bj1B_{j_0} \vee B_{j_1}Bj0Bj1 的内积结果为 r∈[−t,+t]r \in [-t, +t]r[t,+t]。我们有以下结果:公式(1)(1)(1)和公式(2)(2)(2)需要的计算量不同,公式(1)(1)(1)t−r2\frac{t-r}{2}2tr,公式(2)(2)(2)t+r2\frac{t+r}22t+r 。所以有:r&gt;0r &gt; 0r>0,使用公式(1)(1)(1);当r&lt;0r &lt; 0r<0,使用公式(2)(2)(2)

该二值权重卷积计算共享的方法可以运用于任意的树上,但如果使用最小生成树得到最优的共享计算方式,可以进一步优化算法。【该部分在 4.2 Constructing a Dependency Tree 上】


结果展示

原始的 AlexNet 的参数数量 和 计算数量 :
在这里插入图片描述
Refined-Sketch的结果:
在这里插入图片描述
  在这两层中,参数少了 10x10x10x 倍,FMUL(浮点数乘法运算)少了 400x400x400x3000x3000x3000x 倍。【这里乘法操作少了,但加法操作会增加】

Associative Implementation 的结果:就是 FADDs 的减少
在这里插入图片描述

  在这两层中,使用基于最小生成树的 Associative Implementation 可以减少 2.52.52.5 倍和 2.32.32.3 倍的加法操作。

在 AlexNet 上的结果展示
在这里插入图片描述

在 ResNet-18上的结果展示
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值