【二值化网络】Back to Simplicity: 思考BNN网络的设计

本文探讨2019年的研究,挑战了Binarized Neural Networks (BNNs) 中的一些常见技术,如缩放因子、全精度预训练和approxsign函数的有效性。作者提出BNN设计准则,包括避免瓶颈和使用shortcut连接,强调信息流的重要性。实验表明,从头训练的BNN在某些情况下优于微调的全精度模型,提供了一种简化但高效的BNN设计思路。
摘要由CSDN通过智能技术生成

Paper: https://arxiv.org/abs/1906.08637
开源代码:https://github.com/hpi-xnor/BMXNet-v2

2019年6月19的一篇新paper。BNN用于降低成本和计算量,非常有效。作者重新思考了BNN中一些常用技术的有效性,并且为BNN网络提出了几项设计准则,并且搭建了一个BinaryDenseNet网络。

主要是通过实验数据去说明一些设计方法是否有效。可以作为应用的一个借鉴。


Introduction

在移动端执行CNN加速,主要有两种方式。

第一种:通过网络设计亚索网络信息,比如mobilenet和shufflenet等

第二种:做量化,减少每个数据表示时需要的精度。二值化会掉点,前期很多工作关注于通过一些tricks等减少量化误差。

但是,作者认为前期很少思考过这样一个问题“Are those real-valued network architectures
seamlessly suitable for BNNs?”

作者得出的结论是“most of these techniques are not necessary to reach state-of-the-art performance.”

主要contributions如下:

  1. 认为通过标准策略就可以训练出标准BNN,重新思考了如缩放因子,自定义渐变和微调全精度模型的有效性。认为这些对BNN的提升不是很重要。
  2. 提出了BNN的几项设计准则,搭了一个 BinaryDenseNet
  3. 开源了代码,用于分类和检

     

Common Techniques

首先看常见的方法:scaling factors, full-precision pre-training and approxsign function

Binary层的实现

Straight-Through Estimator(STE):

image

liu等提出的approxsign:

image

作者通过实验证明,approxsign函数只是更适合于微调全精度模型二值化网络的情况。

Scale Factor

作者通过实验说明,认为学习到的有用的scale factor对于具有BN层的网络而言不是必须的。

image

全精度模型的预训练

image

使用clip函数预训练的结果没有relu好,二值化网络从头开始训练的精度最高。


设计准则

  1. 保持网络丰富的信息流
  2. 紧凑的网络不适合BNN,因为设计理念相排斥(消除冗余vs弥补信息损失)
  3. BNN中不应该存在bottleneck设计或者提高bottleneck中滤波器的数量
  4. 仔细考虑BNN中关键层使用全精度(下采样层)来保留信息流
  5. 避免信息流bottleneck的直接方法是尽可能多的使用shortcut连接
  6. 为了解决信息流的bottleneck,适当提高网络的宽度和深度,这会带来额外的计算代价。

Shortcut部分

感觉这是作者提出来的最重要最实用的一点了

image

实验结果

Imagenet

image

voc2007

image

Thoughts

这篇paper作者主要通过实验来说明一些问题。最实用的地方就是消除bottleneck的设计。将一个block拆成两个block,每个block支路上只有一层3x3卷积。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值