二值神经网络是神经网络“小型化”探索中重要的一个方向。神经网络中有两个部分可以被二值化,一是网络的系数,二是网络的中间结果。通过把浮点单精度的系数变成正1或负1,系数的二值化能达成存储大小变为原来的1/32,也就是3%。另一方面,如果中间结果也变为二值,由于大部分计算都在1间进行,可以将浮点计算替换成整数位运算。在支持64位运算的CPU和GPU上,这意味着64倍的理论加速比。而64倍的加速比如果按摩尔定律折算,意味着提前9年用上了未来的硬件。如果打开各种设备的存储与计算能力比照表。二值网络将允许把一个此前只能在服务器上运行的神经网络运行在智能手表上,比如VGG-16网络。
二值神经网络的历史不短于使用单精度浮点运算的神经网络(以下简称单精度网络)。事实上,1943年Warren McCulloch和Walter Pitts提出的人工神经元模型就是一个二值神经网络。然而一直以来困扰二值神经网络的是缺乏有效的从训练数据中学习网络系数的算法。与此不同,单精度神经网络拥有带有坚实理论基础的梯度下降算法,从而迅速超越二值网络成为神经网络研究应用中的主流。一直到2014年,二值神经网络只在手写数字MNIST这种简单的任务上达到了可观的预测准确率,而同时的单精度神经网络已经可以在手写体汉字识别、1000类物体分类等问题上打败人类了。当时的一个估计是神经网络的系数至少需要10位左右精度,再少即会因为参数量化引入的噪声造成无法有效学习和使用。但对作为计算与生物学交叉的神经网络而言,有一个疑问一直挥之不去,单精度神经网络是生物可行的吗?人脑里的神经网络真的能以32位的精度来处理信号吗?
这一局面,在2015年底被突然打破。
首先点燃战火的是Matthieu Courbariaux,他来自深度学习巨头之一的Yoshua Bengio领导的蒙特利尔大学的研究组。他们的文章于2015年11月出现在arxiv.org上。与此前二值神经网络的实验不同,Matthieu只关心系数的二值化,并采取了一种混和的策略,构建了一个混有单精度与二值的神经网络BinaryConnect:当网络被用来学习时,系数是单精度的,因此不会受量化噪声影响;而当被使用时,系数从单精度的概率抽样变为二值,从而获得加速的好处。这一方法在街拍门牌号码数据集(SVHN)上石破天惊地达到超越单精度神经网络的预测准确率,同时超越了人类水平,打破了此前对二值网络的一般印象,并奠定了之后一系列工作的基础。然而由于只有系数被二值化,Matthieu的BinaryConnect只能消减乘法运算,在CPU和GPU上一般只有2倍的理论加速比,但在FPGA甚至ASIC这样的专用硬件上则有更大潜力。
一石激起千层浪。Matthieu组很快发现自己的工作引起的兴趣超乎想像。事实上,3个月后,ItayHubara在以色列理工的研究组甚至比Matthieu组早了一天在arxiv.org上发表了同时实现系数和中间结果二值化,并在SVHN上达到了可观预测准确率的二值网络。由于双方的工作太过相似,三个星期后,也就是2016年2月29日,双方的论文被合并后以Matthieu与Itay并列一作的方式再次发表到arxiv.org上。这个同时实现系数和中间结果二值化的网络被命名为BinaryNet。由于达成了中间结果的二值化,BinaryNet的一个样例实现无需额外硬件,在现有的GPU上即达成了7倍加速。
每年的年初是机器学习相关会议扎堆的时段,Matthieu与Itay于3月17日更新了他们的合作论文,进行了一些细节的调整,看起来是投稿前的最后准备。但就在一天前的3月16日,来自西雅图的Allen institute for AI和华盛顿大学的Mohammad Rastegari等人用新方法改进了二值系数网络BinaryConnect和全二值网络BinaryNet,在大规模数据集ImageNet上分别提高预测准确率十几个百分点。其中,改进后的二值系数网络BWN已达到被普遍接受的神经网络质量标准:只差单精度AlexNet3个百分点。