嵌入式技术
人工智能风暴袭来,机器人、自动驾驶汽车这样的嵌入式设备也热度渐长。毫无疑问,现在,嵌入式设备也需要高效的神经网络加持。但是,如何在嵌入式设备上实现高效的神经网络,可不是一件简单的事情。性能,功耗,成本,都是不得不考虑的问题。每一种不同的应用场景,都需要在神经网络的大小和精确度之间进行特定的权衡(trade-off)。
像自动驾驶汽车,就需要实现对实时视频的精确识别,这意味着嵌入其中的神经网络模型一定是个体积庞大的家伙。受限于硬件,神经网络必须进行压缩。在卷积神经网络压缩这个课题上,移动高效架构是主流(MobileNets或ShuffleNets)。
然而,基于移动高效架构的MobileNet-v2在ImageNet对象分类中虽然已经达到了71%的 top-1准确率,但这仍远落后于卷积神经网络的最佳表现83.1%。Facebook的研究人员们决定转换思路,既然如此,何不更专注于传统的卷积网络本身呢?
Facebook提出了一种适用于ResNet类架构的压缩方法,名叫Bit Goes Down。这种方法利用了结构化量化算法PQ(Product Quantization)中卷积的高相关性,重点关注activations的重建,而不是权重本身。也就是说,这种方法只关注域内输入的重建质量。
研究人员让未经压缩的神经网络充当“老师”,利用图灵奖得主Hinton等人提出的提炼(distillation)技术来指导“学生”网络的压缩。这一过程无需任何标记数据,是一种无监督学习方法。PQ算法的任务是量化全连接层的权重矩阵。但从实际需求来看,权重不重要,保留层的输出才是研究人员的关注重点。
因此,研究人员提出了一个替代方案,通过将层应用于域内输入获得输出激活(activations)的重建误差,直接最小化该误差。用编码簿(codebook)最大限度地减少输出激活及其重建之间的差异。接着要对EM算法(最大期望化算法)进行调整。
E-step是集群分配,这一步通过详尽的探索来执行。M-step是码字(codeword)更新,这一步通过显式计算最小二乘问题的解来完成,实际上就是在E-step和M-step交替之前,计算x tilde的伪逆。需要注意的是在E-step之后某些集群可能为空。
对于卷积层情况又是如何呢?在完全连接层,这一方法适用于任何矢量集,所以如果将相关的4D权重矩阵分割成一组向量,该方法就可以应用于卷积层。分割4D矩阵的方法有很多,标准就是要最大化矢量之间的相关性,因为当矢量高度相关时,基于矢量量化的方法效果最好。就像这样,在空间上量化卷积滤波器以利用网络中的信息冗余,不同颜色代表拥有不同码字的子向量。
接下来,就涉及到对整个神经网络的量化。首先,这是自下而上的量化,从最低层开始,到最高层结束。这也就是所谓的用非压缩的教师网络引导学生网络的压缩。主要包括以下两个步骤:恢复该层的当前(current)输入激活,即通过量化后的低层转发一批图像而获得的输入激活。使用这些激活量化当前层。
采用Hinton的distillation方法微调码字,以非压缩网络作为教师网络,当前层之前的压缩网络作为学生网络。在这一步骤中,通过对分配给指定码字的每个子矢量的梯度求平均,来完成码字的精细化。更确切地说,是在量化步骤之后,一次性修复分配。接下来,就剩下最后一步,全局微调所有层的码字,以减少残余漂移。同时更新BatchNorm层的统计数据。全局微调使用的是标准的ImageNet训练集。
研究人员用Bit Goes Down量化了在ImageNet数据集上预先训练好的vanila ResNet-18和ResNet-50。在16GB的 Volta V100 GPU上跑了一天之后,终于到了展示成果的时候。首先,是跟标准ResNet-18和ResNet-50的比较。对于ResNet-18,在29倍压缩的情况下,模型大小缩小到了1.54MB,而top-1准确率仅比标准模型降低了不到4%。
ResNet-50上模型大小略大一些,但也达到了5MB左右,准确率同样保持在一个可以接受的水平。跟模型压缩界的前辈相比,Bit Goes Down表现出了它的优势,虽然在1MB的指定大小中败下阵来,但在5MB的比拼中,新方法优势明显,准确率提升了将近5个百分点。
这意味着压缩后的模型获得了非压缩ResNet-50的性能,同时还只有5MB大小。Bit Goes Down在图像分类上表现不俗,在图像检测方面又如何呢?研究团队又压缩了何恺明的Mask R-CNN。这回用上了8块V100 GPU来进行训练。在压缩了25倍的情况下,压缩模型的Box AP和Mask AP都只下降了4左右。Facebook表示,Bit Goes Down这样的压缩算法将推动虚拟现实(VR)和增强现实(AR)等技术的进一步发展。
全部0条评论
快来发表一下你的评论吧 !