二值化网络(Binary Neural Networks)是一种神经网络压缩方法,把原本需要32 bit 表示的神经网络参数值和激活值二值化到只需要用1 bit 表示,即 -1/+1 表示。
这种二值化压缩方式具有高压缩比,它可以用位运算代替高能耗的矩阵乘法运算,并且有巨大潜力应用于片上人工智能。但可以预料的是,这种极度的压缩方法在带来优越的压缩性能的同时,会造成网络精度的下降。而最新的这篇来自CMU和HKUST科研团队的ICML 论文,仅通过调整训练策略就在ImageNet数据集上取得了比之前state-of-the-art 的BNN 网络 ReActNet 高1.1% 的分类精度,最终在FLOPs仅为87M的情况下取得了70.5% top-1 accuracy,超过了所有同等量级的二值化网络,如下图所示。
和以往只给出最终训练建议的论文不同,这篇论文在从二值化网络训练过程中的常见问题切入,一步步分析二值化网络内在机理,解释每个优化选择背后的原因,最后收敛到了一个实用化的训练策略。接下来就跟着这篇论文一起看看二值化网络应该如何优化。
1. 首先BNN的optimizer 应该如何选取?
和常见的基于CNN (convolutional neural networks) 的全精度网络不同,BNN (binary neural networks) 的优化曲面更陡,如下图所示。全精度CNN在局部最小值附近具有更平滑的曲面,因此更容易泛化到测试集。相比而言,BNN的局部极小值点泛化性差,并且曲面更崎岖,优化难度大。
优化曲面的区别也反映在了优化器 (optimizer) 的选取上。目前的全精度CNN最常选用的优化器是SGD,因为在SGD更容易收敛到泛化性能更优的局部极小值点。而最近的高性能BNN却大多数采用Adam 作为优化器。该论文也做了一组对比实验,发现SGD在全精度CNN优化中表现确实优于Adam,却在BNN优化中输给了Adam。这就引发了疑问: 为什幺Adam比SGD更适合优化BNN呢?
这就要从BNN的特性说起。BNN中的参数值(weight)和激活值(activation)都是二值的 (+1/-1),因此BNN需要用Sign 函数二值化网络中生成的全精度激活值和存储的全精度参数值。
而由于Sign函数的不可导性,BNN在反向传播通路中需要用Clip函数的导数拟合Sign函数的导数。
这引发了BNN中的一个常见问题,即当网络上一层生成的全精度的激活值超出了[-1, 1]的范围时,激活值过饱和 (activation saturation),对应的导数值变为0。从而导致了臭名昭着的梯度消失(gradient vanishing)问题。从下图的可视化结果中可以看出,网络内部的激活值超出[-1, 1] 范围十分常见。所以BNN优化中的一个重要问题就是由于激活值过饱和导致的梯度消失,使得参数得不到充分的梯度估计来学习,从而容易困局部次优解里。
而相比于SGD而言,上图的可视化结果显示Adam优化的BNN中激活值过饱和问题和梯度消失问题都有所缓解。从而最终Adam在BNN上优化精度超过SGD。
2. 那幺为什幺Adam能缓解BNN中的梯度消失的问题呢?
这篇论文构造了一个超简二维二值网络用于分析Adam和SGD 优化过程中的轨迹:
图中展示了这个用两个二元节点构建的网络的优化曲面。 (a) 前向传递中,由于二值化函数 Sign的存在,优化曲面是离散的,(b) 而反向传播中,由于用了Clip(−1, x, 1)的导数近似Sign(x)的导数,所以实际优化的空间是由Clip(−1, x, 1)函数组成的, (c) 从实际的优化的轨迹可以看出,相比于SGD,Adam 优化器更能克服零梯度的局部最优解,(d) 实际优化轨迹的顶视图。
BNN的反向优化曲面存在大面积导数为0的区域,如图(b)所示,反向梯度计算中,只有当X 与 Y方向都落在[-1, 1] 的范围内,所得到的梯度才在两个方向都不为0,而在这个区域之外的区域,至少有一个方向梯度消失。
SGD 的优化方式只计算first moment,即梯度的平均值:
遇到梯度消失问题,对相应的参数的更新值下降极快。
而在Adam中,Adam会额外累加second moment,即梯度的二次方的平均值:
从而在梯度消失的方向,对应放大学习率,增大梯度消失方向的参数更新值。Adam的这个属性能帮助BNN在优化过程中越过局部的零梯度区域,达到更好的解空间。
3. 优化后的网络参数分布及其物理含义
进一步,这篇论文展示了一个很有趣的现象,在优化结束的BNN中,网络内部存储的用于帮助优化的全精度参数呈现一个有规律的分布:
参数集中在三个峰:0附近,-1附近和1附近。并且Adam优化后的全精度参数分布更趋近于-1和1。这个特殊的分布现象就要从BNN中全精度参数的作用讲起。BNN中,由于二值化参数无法直接被数量级为 左右大小的导数更新,所以在训练过程中需要存储一套全精度参数,用于积累这些很小的导数值,然后在每次正向计算loss的时候取全精度参数的Sign作为二值化参数,这样计算出来的loss和导数再更新全精度参数,如下图所示:
所以,当这些全精度参数靠近零值时,它们很容易通过梯度更新就改变符号,导致对应的二值化参数容易跳变。而当全精度参数的绝对值较高时,就需要累加更多往相反方向的梯度,才能使得对应的二值参数改变符号。所以正如 (Helwegen et al., 2019) 中提到的,全精度参数的绝对值的物理意义可以视作其对应二值参数的置信度。 全精度参数的绝对值越大,对应二值参数置信度更高,更不容易改变符号,网络也更加稳定。从这个角度来看,Adam 优化的BNN比 SGD有更高的置信度,也侧面印证了Adam 对于BNN而言是更佳的优化器。
4. BNN中weight decay如何使用?
当然,全精度参数的绝对值代表了其对应二值参数的置信度这个推论就引发了另一个思考:应不应该对BNN中的全精度参数施加weight decay?
在全精度CNN中,对参数施加weight decay是为了控制参数的大小,防止过拟合。而在二值化网络中,参与网络正向计算的是全精度参数的符号,所以加在全精度参数上的weight decay并不会影响二值化参数的大小,这也就意味着,weight decay在二值化网络中的作用需要重新思考。
这篇论文发现,二值化网络中使用weight decay会带来一个困境:高weight decay会降低全精度参数的大小,进而导致二值参数易变符号且网络不稳定。而施加低weight decay或不加weight decay会使二值参数趋向于保持当前状态,进而网络容易依赖初始值。
为了量化稳定性和初始值依赖性,该论文引入了两个指标:用于衡量优化稳定性的参数翻转比率(FF-ratio),以及用于衡量对初始化的依赖性的初始值相关度 (C2I-ratio)。两者的公式如下:
FF-ratio计算了在第 t 次迭代更新后多少参数改变了符号,而 C2I -ratio计算了多少参数与其初始值符号不同。
从下表的量化分析不同的weight decay对网络稳定性和初始值依赖性的结果中可以看出,随着weight decay的增加,FF-ratio与C2I-ratio的变化趋势呈负相关,并且FF-ratio呈指数增加,而C2I-ratio呈线性下降。这表明当weight decay增加时,许多参数值的来回跳变对最终参数没有贡献,而只会影响训练稳定性。因此,选取合适的weight decay对BNN优化起着重要作用。
5. 一个解决weight decay困境的方案
那幺weight decay带来的稳定性和初始值依赖性的联动效应有没有方法打破呢? 该论文发现最近在ReActNet (Liu et al., 2020) 和Real-to-Binary Network (Brais Martinez, 2020) 中提出的两阶段训练法配合合适的weight-decay策略能很好地化解这个困境。
这个策略是:
第一阶段,只对激活值进行二值化,不二值化参数。由于全精度参数没有二值化参数跳变的问题,此阶段可以添加weight decay来减小初始值依赖。
第二阶段,二值化激活值和参数,同时用来自第一步训练好的参数初始化BNN中的全精度参数。此阶段不施加weight decay, 这样可以提高稳定性并利用预训练的良好初始化减小初始值依赖带来的弊端。
通过观察FF-ratio和C2I-ratio,该论文得出结论,第一阶段使用5e-6的weight-decay,第二阶段不施加weight-decay效果最优。
综合所有分析,该论文在ImageNet上测试了所得到的训练策略,在网络结构相同的情况下,取得了比state-of-the-art ReActNet 超出1.1%的结果。实验结果如下表所示。
更多的分析和结果可以参考原论文。
Reference:
Helwegen, K., Widdicombe, J., Geiger, L., Liu, Z., Cheng, K.-T., and Nusselder, R. Latent weights do not exist: Rethinking binarized neural network optimization. NeurIPS, 2019 .
Liu, Z., Wu, B., Luo, W., Yang, X., Liu, W., and Cheng, K.- T. Bi-real net: Enhancing the performance of 1-bit CNNs with improved representational capability and advanced training algorithm. ECCV, 2018.
Liu, Z., Shen, Z., Savvides, M., and Cheng, K.-T. Reactnet: Towards precise binary neural network with generalized activation functions. ECCV , 2020.
Brais Martinez, Jing Yang, A. B. G. T. Training binary neural networks with real-to-binary convolutions. ICLR , 2020.
Liu, Z., Shen, Z., Li, S., Helwegen, K., Huang, D., & Cheng, K. T. How Do Adam and Training Strategies Help BNNs Optimization?. ICML, 2021 .
Be First to Comment