二值化网络(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,超过了所有同等量级的二值化网络,如下图所示。

和以往只给出最终训练建议的论文不同,这篇论文在从二值化网络训练过程中的常见问题切入,一步步分析二值化网络内在机理,解释每个优化选择背后的原因,最后收敛到了一个实用化的训练策略。接下来就跟着这篇论文一起看看二值化网络应该如何优化。

论文标题:

How Do Adam and Training Strategies Help BNNs Optimization?

论文链接:

https://arxiv.org/abs/2106.11309

代码链接:

https://github.com/liuzechun/AdamBNN

首先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。

那么为什么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 在优化过程中越过局部的零梯度区域,达到更好的解空间。

优化后的网络参数分布及其物理含义

 

进一步,这篇论文展示了一个很有趣的现象,在优化结束的 BNN 中,网络内部存储的用于帮助优化的全精度参数呈现一个有规律的分布:

参数集中在三个峰:0 附近,-1 附近和 1 附近。并且 Adam 优化后的全精度参数分布更趋近于 -1 和 1。这个特殊的分布现象就要从 BNN 中全精度参数的作用讲起。BNN 中,由于二值化参数无法直接被数量级为  左右大小的导数更新,所以在训练过程中需要存储一套全精度参数,用于积累这些很小的导数值,然后在每次正向计算 loss 的时候取全精度参数的 Sign 作为二值化参数,这样计算出来的 loss 和导数再更新全精度参数,如下图所示:

所以,当这些全精度参数靠近零值时,它们很容易通过梯度更新就改变符号,导致对应的二值化参数容易跳变。而当全精度参数的绝对值较高时,就需要累加更多往相反方向的梯度,才能使得对应的二值参数改变符号。所以正如(Helwegen et al., 2019)中提到的,全精度参数的绝对值的物理意义可以视作其对应二值参数的置信度。全精度参数的绝对值越大,对应二值参数置信度更高,更不容易改变符号,网络也更加稳定。从这个角度来看,Adam 优化的 BNN 比 SGD 有更高的置信度,也侧面印证了 Adam 对于 BNN 而言是更佳的优化器。

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 优化起着重要作用。

一个解决weight decay困境的方案

那么 weight decay 带来的稳定性和初始值依赖性的联动效应有没有方法打破呢? 该论文发现最近在 ReActNet(Liu et al., 2020)和 Real-to-Binary Network (Brais Martinez, 2020)中提出的两阶段训练法配合合适的 weight-decay 策略能很好地化解这个困境。

这个策略是:

第一阶段,只对激活值进行二值化,不二值化参数。由于全精度参数没有二值化参数跳变的问题,此阶段可以添加weight decay来减小初始值依赖。

第二阶段,二值化激活值和参数,同时用来自第一步训练好的参数初始化 BNN  中的全精度参数。此阶段不施加 weight decay, 这样可以提高稳定性并利用预训练的良好初始化减小初始值依赖带来的弊端。

通过观察F F-ratio 和 C2I-ratio,该论文得出结论,第一阶段使用 5e-6 的 weight-decay,第二阶段不施加 weight-decay 效果最优。

综合所有分析,该论文在 ImageNet 上测试了所得到的训练策略,在网络结构相同的情况下,取得了比 state-of-the-art ReActNet 超出 1.1% 的结果。实验结果如下表所示。

更多的分析和结果可以参考原论文。

参考文献

[1] 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.

[2] 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.

[3] Liu, Z., Shen, Z., Savvides, M., and Cheng, K.-T. Reactnet: Towards precise binary neural network with generalized activation functions. ECCV, 2020.

[4] Brais Martinez, Jing Yang, A. B. G. T. Training binary neural networks with real-to-binary convolutions. ICLR, 2020.

[5] Liu, Z., Shen, Z., Li, S., Helwegen, K., Huang, D., & Cheng, K. T. How Do Adam and Training Strategies Help BNNs Optimization?. ICML, 2021.

特别鸣谢

感谢 TCCI 天桥脑科学研究院对于 PaperWeekly 的支持。TCCI 关注大脑探知、大脑功能和大脑健康。

更多阅读

#投 稿 通 道#

 让你的文字被更多人看到 

如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。

总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。

PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析科研心得竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。

???? 稿件基本要求:

• 文章确系个人原创作品,未曾在公开渠道发表,如为其他平台已发表或待发表的文章,请明确标注

• 稿件建议以 markdown 格式撰写,文中配图以附件形式发送,要求图片清晰,无版权问题

• PaperWeekly 尊重原作者署名权,并将为每篇被采纳的原创首发稿件,提供业内具有竞争力稿酬,具体依据文章阅读量和文章质量阶梯制结算

???? 投稿通道:

• 投稿邮箱:hr@paperweekly.site

• 来稿请备注即时联系方式(微信),以便我们在稿件选用的第一时间联系作者

• 您也可以直接添加小编微信(pwbot02)快速投稿,备注:姓名-投稿

△长按添加PaperWeekly小编

????

现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧

·

二值化网络(BNN)如何训练?这篇ICML 2021论文给你答案相关推荐

  1. 二值化网络如何训练?这篇ICML 2021论文给你答案

    视学算法专栏 机器之心编辑部 这篇来自 CMU 和 HKUST 科研团队的 ICML 论文,仅通过调整训练算法,在 ImageNet 数据集上取得了比之前的 SOTA BNN 网络 ReActNet ...

  2. 【Paper Reading】二值化网络——BNN

    Binarized Neural Networks: Training Neural Networks withWeights and Activations Constrained to +1 or ...

  3. 精度首超ResNet,港科大和CMU提出史上最强二值化网络ReActNet

    编辑 | 陈大鑫 ECCV 2020 将于8月23日开始,作为两年一度的计算机视觉三大会议之一,备受大家关注.今天和大家分享一篇由香港科技大学和卡耐基梅隆大学共同发表在 ECCV 2020 上的工作& ...

  4. 报名 | 二值化网络 基于素描图的图像检索论坛

    [论坛主题]二值化网络 & 基于素描图的图像检索 [时间]2018年11月04日(周日)下午2:00 -- 4:00 [地点]中国科学院自动化研究所 [报名方式]扫描下方二维码进行报名 [论坛 ...

  5. ECCV 2020 | 史上最强二值化网络ReActNet,精度首超ResNet

    在众多卷积神经网络(CNN)压缩算法中,二值化网络(BNN)作为网络量化的极端情况,一直拥有着高压缩比,高加速比的性能优势,但是 BNN 的精度不高也一直饱受诟病,阻碍了 BNN 在实际场景中的应用. ...

  6. 基于堆栈二值化自动编码器和二值化神经的无约束人脸表情识别算法(An efficient unconstrained FERa based on BAEs and BNN)

    摘要(abstract) 虽然深度学习在许多模式识别任务中都取得了良好的效果,但对于含有大量参数集.标记数据有限的深度网络,过拟合问题仍然是一个严重的问题.在这项工作中,二进制自动编码器(BAEs)和 ...

  7. 【OpenCV 例程200篇】37. 图像的灰度化处理和二值化处理

    [OpenCV 例程200篇]37. 图像的灰度化处理和二值化处理 欢迎关注 『OpenCV 例程200篇』 系列,持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列,持续更新中 按 ...

  8. C++实现自适应二值化

    二值化每次都要调阈值,很头疼,实现一个不依赖OpenCV库的动态二值化算法很有必要. 测试了 参考文献 论文链接 更详细的算法解释 效果如下: 达到了预期的效果. 主要实现代码记录一下. void M ...

  9. BNN领域开山之作——不得错过的训练二值化神经网络的方法

    作者| cocoon 编辑| 3D视觉开发者社区 文章目录 导读 概述 方法 确定二值化以及随机二值化 梯度计算以及累加 离散化梯度传播 乘法运算优化 基于位移(shift)的BN 基于位移的AdaM ...

  10. 论文推荐|【KSII TIIS 2021】DP-LinkNet:一种用于古籍文档图像二值化的卷积网络(有源码)...

    今日分享来自[KSII TIIS 2021]的论文『DP-LinkNet: A convolutional network for historical document image binariza ...

最新文章

  1. ActionTileViewController.js
  2. Kubernetes的共享GPU集群调度 1
  3. java 机器码 虚拟机_Java虚拟机:源码到机器码
  4. 已解决jetty运行项目,@WebServlet注解失效
  5. Python学习心路历程
  6. 【树状数组 思维题】luoguP3616 富金森林公园
  7. Learn ZYNQ (7)
  8. JSP的自定义标签(五)之Tag File
  9. linux桌面时间插件,Ubuntu gnome 桌面环境拓展插件介绍
  10. mcafee杀死oracle,【搬运】跟客服要来的迈克菲卸载工具,拯救你的笔记本
  11. 如何打开PDF文档?必看的5种方法
  12. 10电脑睡眠后自动关机怎么回事 win_win10电脑睡眠变关机怎么解决_win10睡眠变自动关机的处理方法-系统城...
  13. 华为商店的软件可以鸿蒙,鸿蒙到底想要什么?是维护渠道的霸权还是万物互联?...
  14. 适合程序员使用的二进制计算器Megatops BinCalc
  15. 环世界RimWorld for Mac(模拟建造游戏)
  16. HTML资源未找到,加载资源失败:服务器响应状态为404(未找到)
  17. 计算机突然从桌面消失了,电脑桌面word突然消失怎么办
  18. 10款最佳跨浏览器测试工具,建议收藏
  19. 【蓝桥杯】有一张 m×n 个小方格的地图,一个机器人位于地图的左上角,它每步只能向右或者向下移动一格。。。
  20. m序列生成输入信号matlab,M序列的生成

热门文章

  1. 百分比换算十六进制透明度
  2. 神奇的Perl-哈希与数组(4)
  3. Mac本地账号开机密码破解
  4. 如何强制Windows在文件资源管理器中显示所有驱动器
  5. 网站如何实现短信验证码功能?
  6. 督查督办管理平台系统
  7. 笔记-5:mysql数据更新
  8. 抖音云控系统多少钱一套?
  9. 揭秘:云控系统运行原理,有效规避风控
  10. Google Earth Engine(GEE)——NASA-USDA增强型SMAP全球土壤水分数据以10公里的空间分辨率提供全球的土壤水分信息