论文阅读6:MeliusNet

一.Title

MeliusNet: Can Binary Neural Networks Achieve MobileNet-level Accuracy?

二.Abstract&Introduction

why?

深度神经网络在众多机器学习领域取得了巨大的成功,人们也在不断设计更大、更复杂的网络以追求更高的准确率,然而,深度神经网络巨大的参数数目和计算量阻止了其在移动和嵌入式设备上的应用,针对这一问题,人们做了许多工作来减少模型大小、加速推理速度,主要可以分为三个研究方向:一是模型剪枝技术,二是设计更加紧致的网络模型,三是模型的低精度量化。
近年来提出的BNN,将模型的权重和激活量化为{-1,1},极大的减少了模型的大小和功耗,在BNN中,乘累加运算被xnor和bitcount代替,ALU运算部件所需的硬件资源也大大降低,因此,BNN被认为是一个很有前景的方法。然而,BNN也受到模型精度损失过大的困扰,为了缓解这一问题,研究者们进行了各种尝试,比如用多个权重基来近似全精度数据,增大特征图的通道数目等等。但是这些方法在提高精度的同时也使得模型变大,计算变复杂。

how?

作者从Liu和Bethge的工作中受到启发,提出了MeliusNet模型,该模型同时提高了特征图的qualitycapacity,此外,作者还引入分组卷积来降低模型中的32bit操作同时提高模型的精度。

result?

作者在ImageNet数据集上对MeliusNet进行了评估,并和state-of-the -art模型进行了比较,此外,作者还进行了消融实验。
实验结果表明,MeliusNet无论是在精度还是在节省计算操作方面,都显著优于传统的二值神经网络,而且,作者训练的MeliusNet,首次在模型精度和模型大小上和流行的MobileNet相匹配。

三.Methods

提出MeliusNet的动机,主要来源于使用2值卷积而不是32bit卷积带来的不利影响:
一方面,权重可能的取值从 2 32 锐 减 为 2 2^{32}锐减为2 2322,这给卷积带来了很大的量化误差,使得参与二值卷积的特征图的quality大大降低。
另一方面,输入数据的取值也同权重一样被降低了许多,这使得特征之间微小的差异在二值化之后不再存在,降低了特征的capacity
在下面的内容中,作者介绍了MeliusNet是如何提高特征图的qualitycapacity的,以及是如何降低BNN中剩下的32bit层的计算数目的,最后,作者展示了BNN的实现细节。

1.Improving Quality and Capacity

在这里插入图片描述
如图所示,MeliusNet的核心building block由一个Dense Block和一个紧接着的Improvement Block组成,前者提升feature capacity,后者提升feature quality。
Dense Block是BinaryDenseNet的唯一building block,是DenseNet架构的二进制变体,它将256通道的输入特征进行二值卷积,得到通道数为64的输出特征,并和原先的256通道输入特征拼接,成为一个320通道的输出特征,因此,特征的capacity得以增大。
Improvement Block提升了特征的quality,它使用二值卷积将320通道的输入特征变换为64通道的输出特征,并和之前Dense Block计算得到的64通道特征图相加,其结果再和先前的256通道特征图拼接,最终得到一个320通道的输出特征。
如前所说,Dense Block和Improvement Block的交替是网络的核心部分。不同的交替次数,可以得到不同计算数目和模型大小的网络。和Bi-RealNet和BinaryDenseNet类似,作者的MeliusNet也会在这些核心部分之间存在 transition layers,下图是一个核心部分重复了4, 5, 4和4次的一个网络模型。
在这里插入图片描述
可以看到,Transition层由一个BN层,一个最大池化层,一个激活函数层和一个32bit的1x1卷积层构成。

2.Layers with 32-bit Convolutions

作者和先前的工作一样,并没有二值化网络的第一个卷积层,最后一个全连接层以及transition中的1x1卷积层,这也使得网络的精度不至于损失太大。但是,这些层的计算量占了整个网络计算量的相当一部分,因此,作者重新设计了这些层。
首先来看第一层,在先前的工作中,它是一个7x7的拥有64个卷积核的32bit卷积层,在本文中,作者使用3个3x3的卷积层取而代之,此外,作者还采用了分组卷积进一步降低该层的操作数目。第一个3x3卷积层,步长为2,输出通道为32,第二个卷积层输出通道为32,并且是组数为4的分组卷积,而第三个卷积则是输出通道为64的组数为8的分组卷积。如下图所示,这种方法在参数数目不变的情况下,使得操作数目从1.18亿降低为0.69亿,下降了40%之多。
在这里插入图片描述

和第一层一样,transition中的1x1卷积层也可以用同样的方法处理,唯一不同的地方是在进行卷积之前,要先对输入特征的通道进行shuffle(打乱),这使得先前的特征和之后的特征能进行特征组合。

3. Implementation Details

作者使用通用的二值神经网络训练方法来训练MeliusNet,权重和激活通过sign函数二值化:
在这里插入图片描述
前向传播和反向传播过程为:
在这里插入图片描述
这里 l l l是损失函数,而 t c l i p = 1.3 t_{clip}=1.3 tclip=1.3,通过xnor和popcount,BNN的运行时间可以被大大缩短。

四.Experiments& Discussion

1.Grouped Stem Ablation Study and Training Details

在使用了Grouped Stem分组卷积之后,MeliusNet在性能上取得了巨大的提升,为了验证这个性能提升的根源的确是分组卷积,我们进行了消融实验,分别在ResNetE18,Bi-RealNet34,BinaryDenseNet28/37和MeliusNet22/29上使用分组卷积和不使用分组卷积,并对实验结果进行了比较,如下图所示。
在这里插入图片描述
可以看到,分组卷积的确起到了作用,它不仅提升了模型的精度,还减少了计算操作的数目。
另一方面,作者还发现他们采用的训练方法也优于其他训练方法。具体训练策略可参见原文,这里不再赘述。

2.Ablation Study on 32-bit Networks

为了探究MeliusNet的结构究竟是只对BNN有提升作用,还是对32bit的网络也有提升作用,作者又进行了以下的消融实验。
由于MeliusNet去掉Improvement Block之后和Dense Net十分类似,因此作者训练了一个32bit的DenseNet和一个32bit的MeliusNet来进行比较,并且为了比较的公平,两个网络采用相同的模型大小和操作数目,具体情况如下:
MeliusNet计算量为4.5 billion FLOPS,模型大小为20.87 MB。
DenseNet计算量为4.0 billion FLOPS,模型大小为19.58 MB。
可以看到,两者的计算量和模型大小基本接近。
在这里插入图片描述
如图,是这两个模型的实验结果,可以看出,MeliusNet在模型大小和计算量略微大于DenseNet的情况下,准确率和DenseNet几乎没有差别,因此,可以推断:MeliusNet的结构对32bit网络没有任何作用,而只对BNN有明显的提升作用。

3.Comparison to State-of-the-art

五.Conclusion

在本文中,作者提出了一种新颖的网络结构MeliusNet,它通过精心的设计修正了使用二值卷积带来的缺点。在该体系结构中,作者通过反复添加新的特征并对其进行改进,以补偿二进制特征图的低质量和低容量。MeliusNet在ImageNet数据集上的实验结果也表明MeliusNet优于先前的BNN。
此外,作者还提出了分组卷积,以解决MeliusNet中的32bit卷积运算复杂度过高的问题。以上的优化,使得作者提出的MeliusNet在模型大小和操作数目一致的情况下达到了和 MobileNet0.5和MobileNet 0.75相同的精度,这也使得MeliusNet精度赶上MobileNet1.0的希望大大增加。BNN在节约能耗方面的巨大潜力必将使其在很多实际应用场景中成为一个有竞争力的选择。
同时作者还发现,MeliusNet也能达到和使用multiple binary bases的BNN相同的精度,这也启示我们,在今后的工作中可以通过结合网络结构的优化Block内部的优化来进一步提升BNN。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FPGA硅农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值