paper:https://arxiv.org/abs/1808.00278v5
code:https://github.com/liuzechun/Bi-Real-net
conference:ECCV
本片文章由香港科技大学,腾讯 AI lab,以及华中科技大学合作完成,目的是提升二值化卷积神经网络(1-bit CNN)的精度。虽然1-bit网络可以大幅提升推理速度,但是当前的二值化网络的额精度损失太大。本文在BinaryNet、XNOR-Net的基础上,利用ResNet的残差思想,将上一层输出的实数值(real)与本层输出的实数值拼接,以增加二值化后所含的信息。本文的主要贡献如下:
1. 残差结构
利用残差结构增加信息的传递
image.png
2. 使用多项式符号函数梯度逼近原始符号函数梯度
image.pngimage.png
BinaryNet和 XNOR-Net直接使用下图(b)所示函数梯度替代原始符号函数梯度,即反向传播中符号函数梯度为1。本文用(c)所示多项式逼近。
image.png
3. 使用体现幅值的梯度
原文的说法如下,感觉不太严谨。
因为损失关于二值化后的梯度确实只和二值化前的浮点权值的符号有关,而不是文章说的损失关于二值化前的梯度,之和二值化前的浮点权值的符号有关。
image.png
,不明白作者这么写出来竟然也行。也可能 是我理解错了。
4. 使用clip(-1,1)激活函数预训练全精度模型
因为ReLU激活函数的输出是非负的,但是二值化中通过符号函数后的输出的-1和+1,因此使用ReLU的预训练浮点模型来训练二值化网络,初始点可能不太匹配,所以作者在浮点预训练模型中使用clip函数,这和激活函数的输出接近。
5. 实验
作者通过实验证明了上述几个方法的有效性。
image.png
image.png
image.png
网友评论