Page 485 - 《软件学报》2025年第10期
P. 485
4882 软件学报 2025 年第 36 卷第 10 期
络. 结构化剪枝方法 [8,24,25] 针对卷积核或整个层进行剪枝, 因此剪枝后的网络可以很容易地应用到实际场景. 例如,
Liu 等人 [26] 利用尺度因子上的 L 1 正则化来选择通道. He 等人 [27] 利用基于几何中值的准则来剔除不重要的卷积核.
在本文中, 我们借鉴网络剪枝的思想来精简加宽后的二值神经网络, 以实现更低的内存和计算成本.
二值神经网络的结构和全精度网络有所不同, 因此针对二值网络设计更优的结构是一个重要方向. UBNAS [28]
提出减少梯度误差并加速二值网络结构搜索的策略, 同时还探索了新的二值搜索空间. BATS [29] 提出二值导向搜索
空间和加速搜索过程的方法. 不过通过搜索获取二值网络结构的搜索过程需要大量的计算资源, 这在现实应用中
不够实用.
1.3 知识蒸馏
知识蒸馏通过将大模型 (教师模型) 提供的知识迁移到小模型来提高小模型 (学生模型) 的性能. Hinton 等人 [12]
最早提出了知识蒸馏方法, 将较大模型的知识通过 KL 散度损失函数来指导小型神经网络. 从那时起, 知识蒸馏开
始被广泛采用, 并涌现出许多新方法. 例如, Romero 等人 [30] 提出了 FitNet, 它提取了中间层的特征图以及最终输
出, 以指导学生网络学习. 之后, Zagoruyko 等人 [31] 基于注意力图定义了注意力转移方法, 以提高学生网络的性能.
在本文中, 我们将剪枝、蒸馏与量化网络相结合. 使用网络剪枝方法来找到有效的量化网络. 然后, 我们使用知识
蒸馏来提高紧致量化网络的精度.
2 基础知识
本文所提方法主要进行神经网络二值量化, 下面就量化基本知识予以介绍.
2.1 模型量化
二值神经网络作为一种极度极致的量化方式, 将神经网络内部的权值和激活值均量化至单比特的数值范畴,
由此促使神经网络的计算转化为逻辑运算形态, 大幅度削减了存储量, 并显著增强了计算效率. 这里我们以神经网
络中的一个卷积层为例, 对权重和激活值均进行二值量化. 在不失一般性的前提下, 我们假设 W 为实数权重, A 为
实数激活值, 原始全精度卷积的计算为 W ∗ A. 除了二值化权值用 B W 表示外, Q W 为量化后的权值, 量化后的激活
Q W ∗ Q A . 对于权值二值化, 采用 XNOR-Net [20] 中常用的二值方法, 量化过程为
值用 Q A 表示, 量化后卷积的计算为
B W = Sign(W) 其中 Sign(·) 是符号函数, 反量化过程为 W ≈ αB W 其中 α = ∥W∥ 1 是权重的绝对值均值. 该实现使用直
通估计器 (STE) [32] 反向传播梯度.
对于更高比特 (n-bit, n > 1) 的量化, 权重量化的过程包含 3 个步骤.
tanh(W)
1) W = +0.5, 权重被映射到 0 至 1 之间.
2·max(|tanh(W)|)
{ }
round(W · scale) 1 2
n
2) W = , 其中 scale = 2 −1, 量化后的值取自范围 0, , ,...,1 ; 在该步骤中, 我们也
n
scale 2 −1 2 −1
n
使用 STE 进行梯度反向传播.
3) Q W = 2·W −1, 量化值被映射到−1 至 1 之间.
round(X · scale)
对于激活值 X 的 n-bit 量化, 我们首先将 X 中的值截断到 0 至 1 之间, 然后使用 来获得量化的
scale
scale = 2 −1. 这里反向传播时也使用了 STE 算法.
n
值, 其中
量化神经网络中典型的模块 (block) 结构如后文图 1 所示. 一般情况下, 第 1 层和最后一层不进行量化处理,
因为如果对输入图像或输出进行量化处理, 会造成过多的信息损失. 在训练过程中, 分别对批归一化层后的特征和
卷积核权重进行量化. 然后它们被输入到卷积层. 训练后只有二值权值会被保存. 在进行推理时, 只需要对特征进
行重新量化即可计算结果.
2.2 加宽和加深的优劣
为了验证加宽或加深二值神经网络的优劣性, 我们在 CIFAR-10 上对不同宽度和深度的二值化网络进行了实
验. 我们选择全精度 ResNet-20 作为基线. 我们对二值化的 ResNet-20 进行 1、2、3、4、8 倍的加宽, 并选择二值

